Hvernig á að breyta Linux netþjóni í leið til að meðhöndla umferð á kyrrstæðan og kraftmikinn hátt - Hluti 10


Eins og við höfum gert ráð fyrir í fyrri námskeiðum í þessari LFCE (Linux Foundation Certified Engineer) röð, í þessari grein munum við fjalla um leið á IP umferð á kyrrstæðan og kraftmikinn hátt með sérstökum forritum.

Fyrst og fremst skulum við fá nokkrar skilgreiningar á hreinu:

  1. Í einföldum orðum, pakki er grunneiningin sem er notuð til að senda upplýsingar innan nets. Netkerfi sem nota TCP/IP sem netsamskiptareglur fylgja sömu reglum um sendingu gagna: raunverulegum upplýsingum er skipt í pakka sem eru gerðir úr bæði gögnum og heimilisfanginu sem þær eiga að senda á.
  2. Bein er ferlið við að \leiðbeina gögnum frá uppruna til áfangastaðar innan nets.
  3. Statísk leið krefst handstillts setts af reglum sem skilgreindar eru í leiðartöflu. Þessar reglur eru fastar og eru notaðar til að skilgreina hvernig pakki verður að fara í gegnum þegar hann fer frá einni vél til annarrar.
  4. Dynamísk leið, eða snjöll leið (ef þú vilt), þýðir að kerfið getur breytt sjálfkrafa, eftir þörfum, leiðinni sem pakki fylgir.

Ítarlegri IP og netbúnaðarstillingar

iproute pakkinn býður upp á sett af verkfærum til að stjórna netkerfi og umferðarstýringu sem við munum nota í þessari grein þar sem þau koma í staðinn fyrir eldri verkfæri eins og ifconfig og route.

Aðal tólið í iproute svítunni heitir einfaldlega ip. Grunnsetningafræði þess er sem hér segir:

# ip object command

Þar sem hlutur getur aðeins verið einn af eftirfarandi (aðeins algengustu hlutir eru sýndir – þú getur vísað til mannsins ip fyrir heildarlista):

  1. tengill: nettæki.
  2. addr: samskiptareglur (IP eða IPv6) vistfang á tæki.
  3. leið: færsla í leiðartöflu.
  4. regla: regla í gagnagrunni leiðarstefnu.

En skipun táknar ákveðna aðgerð sem hægt er að framkvæma á hlut. Þú getur keyrt eftirfarandi skipun til að birta heildarlistann yfir skipanir sem hægt er að beita á tiltekinn hlut:

# ip object help

Til dæmis,

# ip link help

Myndin hér að ofan sýnir til dæmis að þú getur breytt stöðu netviðmóts með eftirfarandi skipun:

# ip link set interface {up | down}

Fyrir slík fleiri dæmi um 'ip' skipun, lestu 10 Gagnlegar 'ip' skipanir til að stilla IP tölu

Í þessu dæmi munum við slökkva á og virkja eth1:

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

Ef þú vilt virkja eth1 aftur,

# ip link set eth1 up

Í stað þess að sýna öll netviðmót, getum við tilgreint eitt þeirra:

# ip link show eth1

Sem mun skila öllum upplýsingum fyrir eth1.

Þú getur skoðað núverandi aðalleiðartöflu með annarri af eftirfarandi 3 skipunum:

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

Fyrsti dálkurinn í úttakinu þriggja skipana gefur til kynna marknetið. Úttak ip leið sýna (á eftir leitarorði dev) sýnir einnig nettækin sem þjóna sem líkamleg hlið að þessum netum.

Þó að nú á dögum sé ip skipunin valin fram yfir leið, geturðu samt vísað til man ip-route og man route til að fá nákvæma útskýringu á restinni af dálkunum.

Við viljum beina icmp (ping) pakka frá dev2 til dev4 og öfugt líka (athugið að báðar biðlaravélarnar eru á mismunandi netum). Nafn hvers NIC, ásamt samsvarandi IPv4 vistfangi þess, er gefið innan hornklofa.

Prófumhverfið okkar er sem hér segir:

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

Við skulum skoða leiðartöfluna í dev1 (CentOS kassi):

# ip route show

og breyttu því svo til að nota enp0s3 NIC þess og tenginguna við 192.168.0.15 til að fá aðgang að vélum í 10.0.0.0/24 netinu:

# ip route add 10.0.0.0/24 via 192.168.0.15 dev enp0s3

Sem segir í meginatriðum, Bættu leið við 10.0.0.0/24 netið í gegnum enp0s3 netviðmótið með því að nota 192.168.0.15 sem gátt.

Sömuleiðis í dev4 (openSUSE kassi) til að pinga gestgjafa á 192.168.0.0/24 netinu:

# ip route add 192.168.0.0/24 via 10.0.0.15 dev enp0s3

Að lokum þurfum við að virkja áframsendingu í Debian leiðinni okkar:

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

Nú skulum við smella:

og,

Til að gera þessar stillingar viðvarandi yfir stígvélum skaltu breyta /etc/sysctl.conf á beininum og ganga úr skugga um að net.ipv4.ip_forward breytan sé stillt á satt sem hér segir:

net.ipv4.ip_forward = 1

Að auki skaltu stilla NIC á báðum viðskiptavinum (leitaðu að stillingarskránni innan /etc/sysconfig/network á openSUSE og /etc/sysconfig/network-scripts á CentOS - í báðum tilfellum er það kallað ifcfg-enp0s3).

Hér er stillingarskráin úr openSUSE kassanum:

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

Önnur atburðarás þar sem hægt er að nota Linux vél sem leið er þegar þú þarft að deila nettengingunni þinni með einkanetneti.

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

Auk þess að setja upp pakkaframsendingu og kyrrstöðu leiðartöfluna í biðlaranum eins og í fyrra dæmi, þurfum við að bæta við nokkrum iptables reglum í leiðinni:

# 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

Fyrsta skipunin bætir reglu við POSTROUTING keðjuna í nat (Network Address Translation) töflunni, sem gefur til kynna að eth0 NIC ætti að nota fyrir pakka sem fara út.

MASQUERADE gefur til kynna að þetta NIC sé með kraftmikið IP og að áður en pakkinn er sendur á \villta villta heiminn á internetinu, þá þarf einkaheimild pakkans að breytast í opinbera IP beinsins.

Í staðarneti með mörgum hýsingum heldur beininn utan um staðfestar tengingar í /proc/net/ip_conntrack svo hann viti hvert hann á að skila svarinu af netinu til.

Aðeins hluti af framleiðslu á:

# cat /proc/net/ip_conntrack

er sýnt á eftirfarandi skjámynd.

Þar sem uppruna (einka IP openSUSE kassi) og áfangastaður (Google DNS) pakka er auðkenndur. Þetta var niðurstaða hlaupsins:

# curl linux-console.net

á openSUSE kassanum.

Eins og ég er viss um að þú getur nú þegar giskað á, notar beininn Google 8.8.8.8 sem nafnaþjón, sem útskýrir hvers vegna áfangastaður útsendinga pakka bendir á það heimilisfang.

Athugið: Að pakkar sem berast frá internetinu eru aðeins samþykktir ef þeir eru hluti af tengingu sem þegar hefur verið komið á (skipun #2), á meðan pakkar á útleið eru leyfðir \ókeypis útgangur (skipun #3).

Ekki gleyma að gera iptables reglurnar þínar viðvarandi með því að fylgja skrefunum sem lýst er í hluta 8 - Stilla Iptables eldvegg þessarar seríu.

Dynamic Routing með Quagga

Nú á dögum er tólið sem er mest notað fyrir kraftmikla leið í Linux quagga. Það gerir kerfisstjórum kleift að innleiða, með tiltölulega ódýrum Linux netþjóni, sömu virkni og öflugir (og dýrir) Cisco beinir veita.

Tólið sjálft sér ekki um leiðina, heldur breytir kjarnaleiðartöflunni þar sem það lærir nýjar bestu leiðir til að meðhöndla pakka.

Þar sem það er gaffal af sebrahest, forrit sem hætt var að þróast fyrir stuttu síðan, heldur það af sögulegum ástæðum sömu skipunum og uppbyggingu og sebrahest. Þess vegna muntu sjá mikla tilvísun í zebra héðan í frá.

Vinsamlegast athugaðu að það er ekki hægt að fjalla um kraftmikla leið og allar tengdar samskiptareglur í einni grein, en ég er fullviss um að efnið sem kynnt er hér mun þjóna þér sem upphafspunktur til að byggja á.

Til að setja upp quagga á völdum dreifingu:

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

Við munum nota sama umhverfi og með dæmi #3, með þeim eina mun að eth0 er tengdur við aðalgáttarbeini með IP 192.168.0.1.

Næst skaltu breyta /etc/quagga/daemons með,

zebra=1
ripd=1

Búðu til eftirfarandi stillingarskrár.

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

og bættu við þessum línum (komdu út fyrir hýsilnafn og lykilorð að eigin vali):

service quagga restart
hostname    	dev2
password    	quagga
# service quagga restart

Athugið: Að ripd.conf er stillingarskrá fyrir Routing Information Protocol, sem veitir beininum upplýsingar um hvaða net er hægt að ná í og hversu langt (miðað við fjölda hoppa) þau eru.

Athugaðu að þetta er aðeins ein af samskiptareglunum sem hægt er að nota ásamt quagga, og ég valdi hana fyrir þessa kennslu vegna auðveldrar notkunar og vegna þess að flest nettæki styðja það, þó það hafi þann ókost að senda skilríki í venjulegum texta. Af þeirri ástæðu þarftu að úthluta viðeigandi heimildum fyrir stillingarskrána:

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

Í þessu dæmi munum við nota eftirfarandi uppsetningu með tveimur beinum (vertu viss um að búa til stillingarskrár fyrir beini #2 eins og útskýrt var áður):

Mikilvægt: Ekki gleyma að endurtaka eftirfarandi uppsetningu fyrir báða beina.

Tengstu við zebra (hlustaðu á port 2601), sem er rökréttur milliliður milli beinisins og kjarnans:

# telnet localhost 2601

Sláðu inn lykilorðið sem var stillt í /etc/quagga/zebra.conf skránni og virkjaðu síðan stillingar:

enable
configure terminal

Sláðu inn IP tölu og netmaska hvers NIC:

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

Nú þurfum við að tengjast RIP púkaútstöðinni (gátt 2602):

# telnet localhost 2602

Sláðu inn notandanafn og lykilorð eins og það er stillt í /etc/quagga/ripd.conf skránni og sláðu síðan inn eftirfarandi skipanir feitletraðar (athugasemdum er bætt við til skýringar):

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.

Athugið: Að í báðum tilfellum er stillingunni bætt við línurnar sem við bættum við áður (/etc/quagga/zebra.conf og /etc/quagga/ripd.conf) .

Að lokum skaltu tengjast sebraþjónustunni á báðum beinum aftur og athugaðu hvernig hver og einn þeirra hefur \lært leiðina á netið sem er fyrir aftan hina og hver er næsta hopp til að komast á það net, með því að keyra skipunina show ip route:

# show ip route

Ef þú vilt prófa mismunandi samskiptareglur eða uppsetningar gætirðu viljað vísa á Quagga verkefnissíðuna til að fá frekari skjöl.

Niðurstaða

Í þessari grein höfum við útskýrt hvernig á að setja upp kyrrstæða og kraftmikla leið með því að nota Linux kassabeini. Ekki hika við að bæta við eins mörgum beinum og þú vilt og gera tilraunir eins mikið og þú vilt. Ekki hika við að hafa samband við okkur með því að nota tengiliðaformið hér að neðan ef þú hefur einhverjar athugasemdir eða spurningar.