Kako pretvoriti Linux strežnik v usmerjevalnik za statično in dinamično obdelavo prometa - 10. del


Kot smo pričakovali v prejšnjih vajah te serije LFCE ( Linux Foundation Certified Engineer ), bomo v tem članku razpravljali o usmerjanju prometa IP statično in dinamično s posebnimi aplikacijami.

Najprej najprej pojdimo na nekaj definicij:

  1. Z enostavnimi besedami je paket osnovna enota, ki se uporablja za prenos informacij znotraj omrežja. Omrežja, ki uporabljajo TCP/IP kot omrežni protokol, sledijo istim pravilom za prenos podatkov: dejanske informacije so razdeljene na pakete, sestavljene iz podatkov in naslova, kamor jih je treba poslati.
  2. Usmerjanje je postopek\" vodenja " podatkov od vira do cilja znotraj omrežja.
  3. Statično usmerjanje zahteva ročno konfiguriran nabor pravil, določenih v usmerjevalni tabeli. Ta pravila so določena in se uporabljajo za določanje poti, skozi katero mora paket prehajati med potovanjem z enega računalnika na drugega.
  4. Dinamično usmerjanje ali pametno usmerjanje (če želite) pomeni, da lahko sistem po potrebi samodejno spremeni pot, po kateri sledi paket.

Napredna konfiguracija IP in omrežne naprave

Paket iproute ponuja nabor orodij za upravljanje omrežja in nadzor prometa, ki jih bomo uporabili v tem članku, saj predstavljajo nadomestitev starih orodij, kot sta ifconfig in route .

Osrednji pripomoček v zbirki iproute se imenuje preprosto ip. Njegova osnovna sintaksa je naslednja:

# ip object command

Kjer je objekt lahko le eno od naslednjega (prikazani so samo najpogostejši predmeti - za celoten seznam se lahko obrnete na man ip ):

  1. povezava : omrežna naprava.
  2. addr : naslov protokola (IP ali IPv6) v napravi.
  3. pot : vnos usmerjevalne tabele.
  4. pravilo : pravilo v zbirki podatkov usmeritve usmerjanja.

Medtem ko ukaz predstavlja določeno dejanje, ki ga je mogoče izvesti nad objektom. Za prikaz naslednjega ukaza, ki ga je mogoče uporabiti za določen objekt, lahko zaženete naslednji ukaz:

# ip object help

Na primer

# ip link help

Na zgornji sliki je na primer prikazano, da lahko stanje omrežnega vmesnika spremenite z naslednjim ukazom:

# ip link set interface {up | down}

Za več takšnih primerov ukaza ‘ ip ’ preberite 10 uporabnih ukazov ‘ip’ za konfiguriranje naslova IP

V tem primeru bomo onemogočili in omogočili eth1 :

# ip link show
# ip link set eth1 down
# ip link show

Če želite znova omogočiti eth1,

# ip link set eth1 up

Namesto prikaza vseh omrežnih vmesnikov lahko določimo enega od njih:

# ip link show eth1

Ki bo vrnil vse informacije za eth1.

Trenutno trenutno glavno usmerjevalno tabelo si lahko ogledate z enim od naslednjih 3 ukazov:

# ip route show
# route -n
# netstat -rn

Prvi stolpec v izhodu treh ukazov označuje ciljno omrežje. Izhodni podatki ip route show (po ključni besedi dev ) predstavljajo tudi omrežne naprave, ki služijo kot fizični prehod do teh omrežij.

Čeprav je danes ukaz ip prednost pred potjo, se lahko še vedno sklicujete na man ip-route in man route za podrobno razlago preostalega stolpcev.

Želimo usmerjati icmp (ping) pakete iz dev2 v dev4 in tudi obratno (upoštevajte, da sta oba odjemalska računalnika v različnih omrežjih). Ime vsake omrežne kartice skupaj z ustreznim naslovom IPv4 je podano v oglatih oklepajih.

Naše testno okolje je naslednje:

Client 1: CentOS 7 [enp0s3: 192.168.0.17/24] - dev1
Router: Debian Wheezy 7.7 [eth0: 192.168.0.15/24, eth1: 10.0.0.15/24] - dev2
Client 2: openSUSE 13.2 [enp0s3: 10.0.0.18/24] - dev4

Oglejmo si usmerjevalno tabelo v dev1 (polje CentOS):

# ip route show

in ga nato spremenite, tako da lahko za dostop do gostiteljev v omrežju 10.0.0.0/24 uporabite svoj NIC enp0s3 in povezavo do 192.168.0.15:

# ip route add 10.0.0.0/24 via 192.168.0.15 dev enp0s3

Kar se v bistvu glasi:\"Dodajte pot v omrežje 10.0.0.0/24 prek omrežnega vmesnika enp0s3 z uporabo 192.168.0.15 kot prehoda".

Podobno v dev4 (polje openSUSE) za ping gostitelje v omrežju 192.168.0.0/24:

# ip route add 192.168.0.0/24 via 10.0.0.15 dev enp0s3

Na koncu moramo omogočiti posredovanje v našem usmerjevalniku Debian:

# echo 1 > /proc/sys/net/ipv4/ip_forward

Zdaj pa ping:

in,

Če želite, da so te nastavitve trajne v vseh zagonih, uredite /etc/sysctl.conf na usmerjevalniku in preverite, ali je spremenljivka net.ipv4.ip_forward nastavljena na true, kot sledi:

net.ipv4.ip_forward = 1

Poleg tega konfigurirajte omrežne kartice na obeh odjemalcih (poiščite konfiguracijsko datoteko znotraj /etc/sysconfig/network na openSUSE in /etc/sysconfig/network-scripts na CentOS - v obeh primerih se imenuje ifcfg-enp0s3 ).

Tu je konfiguracijska datoteka iz polja openSUSE:

BOOTPROTO=static
BROADCAST=10.0.0.255
IPADDR=10.0.0.18
NETMASK=255.255.255.0
GATEWAY=10.0.0.15
NAME=enp0s3
NETWORK=10.0.0.0
ONBOOT=yes

Drug scenarij, ko je mogoče Linuxov stroj uporabiti kot usmerjevalnik, je, ko morate svojo internetno povezavo deliti z zasebnim LAN-jem.

Router: Debian Wheezy 7.7 [eth0: Public IP, eth1: 10.0.0.15/24] - dev2
Client: openSUSE 13.2 [enp0s3: 10.0.0.18/24] - dev4

Poleg nastavitve posredovanja paketov in statične usmerjevalne tabele v odjemalcu, kot v prejšnjem primeru, moramo v usmerjevalnik dodati še nekaj iptables pravil:

# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
# iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
# iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT

Prvi ukaz v verigo POSTROUTING v tabeli nat (Network Address Translation) doda pravilo, ki navaja, da je treba za odhodne pakete uporabiti NIC eth0

MASQUERADE označuje, da ima ta NIC dinamični IP in da mora pred pošiljanjem paketa v\" divji divji svet " interneta zasebni izvorni naslov paketa se spremeni v javni IP usmerjevalnika.

V LAN-u z veliko gostitelji usmerjevalnik beleži vzpostavljene povezave v /proc/net/ip_conntrack , tako da ve, kam naj vrne odziv z interneta.

Samo del rezultatov:

# cat /proc/net/ip_conntrack

je prikazano na naslednjem posnetku zaslona.

Kjer sta označena izvor (zasebni IP polja openSUSE) in cilj (Google DNS) paketov. To je bil rezultat teka:

# curl linux-console.net

na polju openSUSE.

Kot sem prepričan, da že lahko uganite, usmerjevalnik uporablja Googlov 8.8.8.8 kot strežnik imen, kar pojasnjuje, zakaj cilj odhodnih paketov kaže na ta naslov.

Opomba: Sprejemanje dohodnih paketov iz interneta je dovoljeno le, če so del že vzpostavljene povezave (ukaz št. 2), odhodni paketi pa imajo dovoljenje\" prost izhod " (ukaz št. 3).

Ne pozabite narediti svojih pravil iptables vztrajnih po korakih, opisanih v 8. delu - Konfiguriranje požarnega zidu Iptables te serije.

Dinamično usmerjanje s Quaggo

Dandanes je orodje, ki se v Linuxu najpogosteje uporablja za dinamično usmerjanje, quagga . Sistemskim skrbnikom omogoča, da z razmeroma poceni Linux strežnikom uvedejo enako funkcionalnost, ki jo zagotavljajo zmogljivi (in dragi) usmerjevalniki Cisco.

Samo orodje ne obravnava usmerjanja, temveč spreminja usmerjevalno tabelo jedra, ko se uči novih najboljših poti za obdelavo paketov.

Ker gre za vilice zebre, program, katerega razvoj se je pred časom ustavil, iz zgodovinskih razlogov ohranja enake ukaze in strukturo kot zebra. Zato boste od tega trenutka videli veliko sklicevanja na zebro.

Upoštevajte, da dinamičnega usmerjanja in vseh povezanih protokolov ni mogoče zajeti v enem samem članku, vendar sem prepričan, da vam bo tukaj predstavljena vsebina služila kot izhodišče za nadgradnjo.

Če želite namestiti quaggo v izbrano distribucijo:

# aptitude update && aptitude install quagga 				[On Ubuntu]
# yum update && yum install quagga 					[CentOS/RHEL]
# zypper refresh && zypper install quagga 				[openSUSE]

Uporabili bomo enako okolje kot v primeru # 3, z edino razliko, da je eth0 povezan z glavnim usmerjevalnikom prehoda z IP 192.168.0.1.

Nato uredite /etc/quagga/daemons z,

zebra=1
ripd=1

Zdaj ustvarite naslednje konfiguracijske datoteke.

# /etc/quagga/zebra.conf
# /etc/quagga/ripd.conf

in dodajte te vrstice (nadomestite ime gostitelja in geslo po vaši izbiri):

service quagga restart
hostname    	dev2
password    	quagga
# service quagga restart

Opomba: Ta ripd.conf je konfiguracijska datoteka protokola za usmerjanje informacij, ki usmerjevalniku zagotavlja informacije o tem, katera omrežja je mogoče doseči in kako daleč (glede na količino skokov) so.

Upoštevajte, da je to le eden od protokolov, ki ga je mogoče uporabljati skupaj s quaggo, in sem ga izbral za to vadnico zaradi enostavnosti uporabe in ker ga večina omrežnih naprav podpira, čeprav ima to slabost, da preda poverilnice v golem besedilu. Iz tega razloga morate konfiguracijski datoteki dodeliti ustrezna dovoljenja:

# chown quagga:quaggavty /etc/quagga/*.conf
# chmod 640 /etc/quagga/*.conf 

V tem primeru bomo uporabili naslednjo namestitev z dvema usmerjevalnikoma (poskrbite, da boste ustvarili konfiguracijske datoteke za usmerjevalnik št. 2 , kot je bilo prej pojasnjeno):

Pomembno: Ne pozabite ponoviti naslednje nastavitve za oba usmerjevalnika.

Povežite se z zebro (poslušanje na vratih 2601 ), ki je logični posrednik med usmerjevalnikom in jedrom:

# telnet localhost 2601

Vnesite geslo, ki je bilo nastavljeno v datoteki /etc/quagga/zebra.conf , in nato omogočite konfiguracijo:

enable
configure terminal

Vnesite naslov IP in omrežno masko vsake NIC:

inter eth0
ip addr 192.168.0.15
inter eth1
ip addr 10.0.0.15
exit
exit
write

Zdaj se moramo povezati z demonom terminala RIP (vrata 2602):

# telnet localhost 2602

Vnesite uporabniško ime in geslo, kot sta konfigurirana v datoteki /etc/quagga/ripd.conf , in nato krepko vnesite naslednje ukaze (komentarji so dodani zaradi pojasnitve):

enable turns on privileged mode command.
configure terminal changes to configuration mode. This command is the first step to configuration
router rip enables RIP.
network 10.0.0.0/24 sets the RIP enable interface for the 10.0.0.0/24 network. 
exit
exit
write writes current configuration to configuration file.

Opomba: Da je v obeh primerih konfiguracija dodana vrsticam, ki smo jih dodali prej ( /etc/quagga/zebra.conf in /etc/quagga/ripd.conf ) .

Na koncu se znova povežite s storitvijo zebra na obeh usmerjevalnikih in si oglejte, kako je vsak od njih\" naučil " pot do omrežja, ki je za drugim, in kateri je naslednji skok, do katerega morate priti omrežje z zagonom ukaza show ip route :

# show ip route

Če želite preizkusiti različne protokole ali nastavitve, boste morda želeli poiskati spletno mesto projekta Quagga za nadaljnjo dokumentacijo.

Zaključek

V tem članku smo razložili, kako nastaviti statično in dinamično usmerjanje z uporabo usmerjevalnikov Linux box. Dodajte poljubno število usmerjevalnikov in eksperimentirajte, kolikor želite. Če imate kakršne koli pripombe ali vprašanja, se obrnite na nas prek spodnjega kontaktnega obrazca.