Kelių nutolusių potinklių sujungimas į vieną

Tarkime yra tokia situacija. Jūs turite kelis nutolusius potinklius (nutolę fiziškai, skirtingi interneto tiekėjai etc.) ir norite, jog vartotojai galėtų naudotis tais pačiais resursais, nepriklausomai nuo to, kokiame tinkle jie yra.

Turime:

  • Tris potinklius su vienoda tinklo kauke 192.168.0.0/24
  • Visi vartotojai į “išorę” patenka per FreeBSD šliuzą (gateway)
  • Visuose ofisuose skirtingi IPT (ISP)

Kiekvienas serveris turi turi turėti po tris tinklo kortas. Tarkime:

  • fxp0 – išorinė tinklo korta
  • rl0 – vidinė tinklo korta (gateway)
  • xl0 – tinklo korta pajungta į vidinio tinklo switch’ą (neturinti jokio IP adreso)

Perkompiliuojame kernelį su tokiomis opcijomis:
options NETGRAPH
options NETGRAPH_SOCKET
options NETGRAPH_ECHO

Pirmąjame potinklyje konfigūruojame NETGRAPH. /usr/local/etc/rc.d/ kataloge sukuriame tokį script’ą
#!/bin/sh
/sbin/kldload ng_ether
/sbin/kldload ng_bridge
/usr/sbin/ngctl mkpeer xl0: bridge lower link0
/usr/sbin/ngctl name xl0:lower multi_link
/usr/sbin/ngctl mkpeer multi_link: ksocket link1 inet/dgram/udp
/usr/sbin/ngctl name multi_link:link1 lnk1
# Sukuriamas socket’as. IP naudokite tą, kurį jums suteikė IPT
/usr/sbin/ngctl msg lnk1: bind inet/1.1.1.1:2515
# Jungiamės prie antrojo potinklo
/usr/sbin/ngctl msg lnk1: connect inet/2.2.2.2:2515

/usr/sbin/ngctl mkpeer multi_link: ksocket link2 inet/dgram/udp
/usr/sbin/ngctl name multi_link:link2 lnk2
/usr/sbin/ngctl msg lnk2: bind inet/1.1.1.1:2516
# Jungiamės prie trečiojo potinklo
/usr/sbin/ngctl msg lnk2: connect inet/3.3.3.3:2516

/sbin/ifconfig xl0 up
/usr/sbin/ngctl msg xl0: setpromisc 1
/usr/sbin/ngctl msg xl0: setautosrc 0

Konfigūruojame NETGRAPH antram ir trečiam potinkliuose analogiškai:
Antrame potinklyje:
#!/bin/sh
kldload ng_ether
ngctl mkpeer xl0: ksocket lower inet/dgram/udp
ngctl msg xl0:lower bind inet/2.2.2.2:2515
ngctl msg xl0:lower connect inet/1.1.1.1:2515

/sbin/ifconfig xl0 up
ngctl msg xl0: setpromisc 1
ngctl msg xl0 setautosrc 0

Trečiame potinklyje:
#!/bin/sh
kldload ng_ether
ngctl mkpeer xl0: ksocket lower inet/dgram/udp
ngctl msg xl0:lower bind inet/3.3.3.3:2516
ngctl msg xl0:lower connect inet/1.1.1.1:2516

/sbin/ifconfig xl0 up
ngctl msg xl0: setpromisc 1
ngctl msg xl0: setautosrc 0

Primenu, jog šie skriptai turi būti /usr/local/etc/rc.d/ kataloge ir turi būti paleidžiamieji (chmod +x)

Manau jums suprantama, jog potinkliuose neturi būti pasikartojančių IP adresų :)

Tai tiek

@m

Komentarų skaičius: 3

  1. o kur saugumas?

  2. Čia simple variantas. Kam reikia saugumo – tas naudos IPSec :-)

  3. O negalima, kad zmones taip… nutolusius suvest kartu? A? Kaip nors?:)

Pasirašyk