Kuidas muuta Linuxi server ruuteriks liikluse staatiliseks ja dünaamiliseks käitlemiseks - 10. osa


Nagu me selle LFCE ( Linux Foundation Certified Engineer ) sarja varasemates õpetustes oskasime oodata, käsitleme selles artiklis IP-liikluse marsruutimist staatiliselt ja dünaamiliselt konkreetsete rakendustega.

Kõigepealt tehkem mõned mõisted selgeks:

  1. Lihtsamalt öeldes on pakett põhiüksus, mida kasutatakse teabe edastamiseks võrgus. Võrgud, mis kasutavad TCP/IP-d võrguprotokollina, järgivad andmete edastamisel samu reegleid: tegelik teave jagatakse pakettideks, mis koosnevad nii andmetest kui ka aadressist, kuhu see tuleks saata.
  2. Marsruutimine on andmete\" suunamine " protsess võrgusisesest allikast sihtkohta.
  3. Staatiline marsruutimine nõuab marsruutimistabelis määratletud käsitsi konfigureeritud reeglistikku. Need reeglid on fikseeritud ja neid kasutatakse paketi ühest masinast teise liikumisel läbimise viisi määratlemiseks.
  4. Dünaamiline marsruutimine või nutikas marsruutimine (kui soovite) tähendab, et süsteem saab vajadusel automaatselt muuta marsruuti, mida pakett järgib.

Täpsem IP ja võrguseadmete seadistamine

Pakett iproute pakub võrkude ja liikluse juhtimise haldamiseks tööriistakomplekti, mida kasutame kogu selles artiklis, kuna need tähistavad pärandtööriistade, näiteks ifconfig ja route asendamist.

iproute komplekti keskset utiliiti nimetatakse lihtsalt ip-ks. Selle põhisüntaks on järgmine:

# ip object command

Kus objekt võib olla ainult üks järgmistest (kuvatakse ainult kõige sagedasemad objektid - täieliku loendi leiate inimeselt ip ):

  1. link : võrguseade.
  2. addr : protokolli (IP või IPv6) aadress seadmes.
  3. marsruut : marsruutimistabeli kirje.
  4. reegel : reegel marsruutimispoliitika andmebaasis.

Kui käsk tähistab konkreetset toimingut, mida saab objektil teha. Konkreetsele objektile rakendatavate käskude täieliku loendi kuvamiseks võite käivitada järgmise käsu:

# ip object help

Näiteks,

# ip link help

Ülaltoodud pilt näitab näiteks, et võrguliidese olekut saate muuta järgmise käsuga:

# ip link set interface {up | down}

Selliste käsu ‘ ip ’ lisanäidete saamiseks lugege 10 kasulikku käsku „ip“ IP-aadressi konfigureerimiseks

Selles näites keelame ja lubame eth1 :

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

Kui soovite eth1 uuesti lubada,

# ip link set eth1 up

Kõigi võrguliideste kuvamise asemel võime määrata ühe neist:

# ip link show eth1

Mis tagastab kogu teabe eth1 jaoks.

Praegust peamist marsruutimistabelit saate vaadata kolme järgmise käsu abil:

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

Kolme käsu väljundi esimene veerg tähistab sihtvõrku. ip route show väljund (pärast märksõna dev ) esitab ka võrguseadmed, mis toimivad nende võrkude füüsilise lüüsina.

Kuigi tänapäeval eelistatakse marsruudi asemel käsku ip , saate ülejäänud üksikasjade selgitamiseks siiski viidata inimesele ip-route ja man route veergudest.

Tahame marsruutida icmp (ping) pakette dev2-st dev4-ni ja ka vastupidi (pange tähele, et mõlemad kliendimasinad on erinevates võrkudes). Iga NIC-i nimi koos vastava IPv4-aadressiga on toodud nurksulgudes.

Meie testikeskkond on järgmine:

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

Vaatame marsruutimistabelit dev1-s (kast CentOS):

# ip route show

ja seejärel muutke seda, et kasutada oma enp0s3 NIC-i ja ühendust 192.168.0.15-ga, et pääseda hostidesse võrgus 10.0.0.0/24:

# ip route add 10.0.0.0/24 via 192.168.0.15 dev enp0s3

Mis sisuliselt kõlab: "" Lisage marsruut 10.0.0.0/24 võrku enp0s3 võrguliidese kaudu, kasutades lüüsina 192.168.0.15 ".

Samamoodi dev4-s (kasti openSUSE) võrgu 192.168.0.0/24 hostimiseks

# ip route add 192.168.0.0/24 via 10.0.0.15 dev enp0s3

Lõpuks peame lubama edastamise meie Debiani ruuteris:

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

Nüüd pingime:

ja

Nende seadete püsivaks muutmiseks alglaadimisel muutke ruuteris /etc/sysctl.conf ja veenduge, et muutuja net.ipv4.ip_forward väärtuseks seatakse tõene järgmiselt:

net.ipv4.ip_forward = 1

Lisaks konfigureerige mõlema kliendi NIC-id (otsige konfiguratsioonifaili saidist /etc/sysconfig/network saidil openSUSE ja /etc/sysconfig/network-scripts CentOS-ist - mõlemal juhul nimetatakse seda nimeks ifcfg-enp0s3 ).

Siin on konfiguratsioonifail kastist 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

Teine stsenaarium, kus Linuxi masinat saab ruuterina kasutada, on see, kui peate Interneti-ühendust jagama privaatse kohtvõrguga.

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

Lisaks pakettide edastamise ja staatilise marsruudi tabeli seadistamisele kliendis, nagu eelmises näites, peame ruuterisse lisama mõned iptables-reeglid:

# 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

Esimene käsk lisab tabelis nat (võrguaadressi tõlkimine) ahelale POSTROUTING reegli, mis näitab, et väljuvate pakettide jaoks tuleks kasutada eth0 NIC-i.

MASQUERADE näitab, et sellel NIC-il on dünaamiline IP ja et enne paketi saatmist Interneti\" metsikule metsikule maailmale " peab paketi privaatne allika aadress ruuteri avaliku IP-ga.

Paljude hostidega kohtvõrgus jälgib ruuter loodud ühendusi jaotises /proc/net/ip_conntrack , nii et ta teab, kuhu Internetist vastus tagastada.

Ainult osa väljundist:

# cat /proc/net/ip_conntrack

on näidatud järgmisel ekraanipildil.

Kus on esile tõstetud pakettide päritolu (kasti openSUSE privaatne IP) ja sihtkoht (Google DNS). See oli jooksmise tulemus:

# curl linux-console.net

kasti openSUSE.

Kuna olen kindel, et võite juba aimata, kasutab ruuter nimeserverina Google'i 8.8.8.8, mis selgitab, miks väljuvate pakettide sihtkoht sellele aadressile osutab.

Märkus. Internetist saabuvaid pakette aktsepteeritakse ainult siis, kui need on osa juba loodud ühendusest (käsk nr 2), samas kui väljaminevad paketid on lubatud\" vaba väljumine " (käsk nr 3).

Ärge unustage oma iptables-reegleid püsivaks teha, järgides selle osa 8. osas - IPptablesi tulemüüri seadistamine.

Dünaamiline marsruutimine Quaggaga

Tänapäeval on Linuxi dünaamiliseks marsruutimiseks kõige enam kasutatav tööriist quagga . See võimaldab süsteemiadministraatoritel suhteliselt odava Linuxi serveriga rakendada sama funktsionaalsust, mida pakuvad võimsad (ja kulukad) Cisco ruuterid.

Tööriist ise marsruutimisega ei tegele, vaid muudab pigem kerneli marsruutimistabelit, kuna see õpib pakettide käsitsemiseks uusi parimaid marsruute.

Kuna tegemist on sebra kahvliga, programmiga, mille arendamine mõni aeg tagasi lakkas, säilitab see ajaloolistel põhjustel samad käsud ja ülesehituse kui sebra. Sellepärast näete sellest hetkest alates palju sebrale viitamist.

Pange tähele, et dünaamilist marsruutimist ja kõiki sellega seotud protokolle ei ole võimalik käsitleda ühes artiklis, kuid olen kindel, et siin esitatud sisu on teie jaoks lähtepunkt.

Quagga installimiseks valitud jaotisse:

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

Kasutame sama keskkonda nagu näites 3, ainsa erinevusega, et eth0 on ühendatud peavärava ruuteriga IP 192.168.0.1 abil.

Järgmisena muutke /etc/quagga/daemons ,

zebra=1
ripd=1

Nüüd looge järgmised konfiguratsioonifailid.

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

ja lisage need read (asendage valitud hosti nimi ja parool):

service quagga restart
hostname    	dev2
password    	quagga
# service quagga restart

Märkus. See ripd.conf on marsruutimisteabe protokolli konfiguratsioonifail, mis annab ruuterile teavet selle kohta, millistesse võrkudesse pääseb ja kui kaugel nad (hüpete hulga osas) asuvad.

Pange tähele, et see on ainult üks protokollidest, mida saab kasutada koos quaggaga, ja ma valisin selle selle õpetuse jaoks kasutusmugavuse tõttu ja kuna enamik võrguseadmeid seda toetab, ehkki selle puuduseks on mandaatide edastamine lihttekstina. Sel põhjusel peate määrama konfiguratsioonifailile õiged õigused:

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

Selles näites kasutame kahe ruuteriga järgmist seadistust (looge ruuteri nr 2 konfiguratsioonifailid, nagu eelnevalt selgitatud):

Tähtis: ärge unustage mõlema ruuteri jaoks järgmist seadistust korrata.

Looge ühendus sebra abil (kuulamine pordil 2601 ), mis on ruuteri ja kerneli loogiline vahendaja:

# telnet localhost 2601

Sisestage failis /etc/quagga/zebra.conf määratud parool ja lubage seejärel konfiguratsioon:

enable
configure terminal

Sisestage iga võrguühenduse IP-aadress ja võrgumask:

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

Nüüd peame ühenduse looma deemoniterminaliga RIP (port 2602):

# telnet localhost 2602

Sisestage failis /etc/quagga/ripd.conf konfigureeritud kasutajanimi ja parool ning tippige seejärel rasvases kirjas järgmised käsud (selguse huvides lisatakse kommentaarid):

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.

Märkus. Mõlemal juhul lisatakse konfiguratsioon varem lisatud ridadele ( /etc/quagga/zebra.conf ja /etc/quagga/ripd.conf ) .

Lõpuks looge uuesti ühendus mõlema ruuteri sebra-teenusega ja märkige, kuidas kumbki neist on\" õppinud " marsruudi teise taga olevasse võrku ja mis on järgmine hüpata selles võrgus käivitades käsu näita ip marsruuti :

# show ip route

Kui soovite proovida erinevaid protokolle või seadistusi, võiksite lisateabe saamiseks pöörduda Quagga projekti saidi poole.

Järeldus

Selles artiklis oleme selgitanud, kuidas seadistada staatiline ja dünaamiline marsruutimine, kasutades Linuxi ruuterite ruutereid. Lisage julgelt nii palju ruutereid kui soovite ja katsetage nii palju kui soovite. Kui teil on kommentaare või küsimusi, pöörduge tagasi meie poole, kasutades allolevat kontaktivormi.