Jinsi ya Kugeuza Seva ya Linux kuwa Njia ya Kushughulikia Trafiki Kitakwimu na Kwa Nguvu - Sehemu ya 10


Kama tulivyotarajia katika mafunzo ya awali ya mfululizo huu wa LFCE (Mhandisi Aliyeidhinishwa na Linux Foundation), katika makala haya tutajadili uelekezaji wa trafiki ya IP kwa utaratibu na kwa ubadilikaji kwa kutumia programu mahususi.

Mambo ya kwanza kwanza, hebu tupate ufafanuzi fulani moja kwa moja:

  1. Kwa maneno rahisi, pakiti ni kitengo cha msingi kinachotumika kusambaza taarifa ndani ya mtandao. Mitandao inayotumia TCP/IP kama itifaki ya mtandao hufuata sheria zilezile za uwasilishaji wa data: taarifa halisi hugawanywa katika pakiti ambazo zimeundwa na data zote mbili na anwani ambapo inapaswa kutumwa.
  2. Kuelekeza ni mchakato wa \kuongoza data kutoka chanzo hadi lengwa ndani ya mtandao.
  3. Uelekezaji tuli unahitaji seti ya sheria zilizosanidiwa mwenyewe zilizofafanuliwa katika jedwali la uelekezaji. Sheria hizi zimewekwa na hutumika kufafanua njia ambayo pakiti inapaswa kupitia inaposafiri kutoka kwa mashine moja hadi nyingine.
  4. Uelekezaji wenye nguvu, au uelekezaji mahiri (ukitaka), ina maana kwamba mfumo unaweza kubadilisha kiotomatiki, inapohitajika, njia ambayo pakiti inafuata.

IP ya Juu na Usanidi wa Kifaa cha Mtandao

Kifurushi cha iproute hutoa seti ya zana za kudhibiti mitandao na udhibiti wa trafiki ambazo tutatumia katika makala haya yote kwani zinawakilisha uingizwaji wa zana za urithi kama vile ifconfig na njia.

Huduma kuu katika iproute suite inaitwa kwa urahisi ip. Syntax yake ya msingi ni kama ifuatavyo:

# ip object command

Ambapo kitu kinaweza kuwa kimoja tu kati ya vifuatavyo (vitu vya mara kwa mara pekee ndivyo vinavyoonyeshwa - unaweza kurejelea man ip kwa orodha kamili):

  1. kiungo: kifaa cha mtandao.
  2. addr: anwani ya itifaki (IP au IPv6) kwenye kifaa.
  3. njia: ingizo la jedwali la kuelekeza.
  4. kanuni: kanuni katika hifadhidata ya sera ya uelekezaji.

Ambapo amri inawakilisha kitendo mahususi ambacho kinaweza kufanywa kwenye kitu. Unaweza kuendesha amri ifuatayo ili kuonyesha orodha kamili ya amri ambazo zinaweza kutumika kwa kitu fulani:

# ip object help

Kwa mfano,

# ip link help

Picha iliyo hapo juu inaonyesha, kwa mfano, kwamba unaweza kubadilisha hali ya kiolesura cha mtandao kwa amri ifuatayo:

# ip link set interface {up | down}

Kwa mifano kama hiyo zaidi ya amri ya ‘ip’, soma Amri 10 Muhimu za ‘ip’ ili kusanidi Anwani ya IP.

Katika mfano huu, tutazima na kuwezesha eth1:

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

Ikiwa unataka kuwezesha tena eth1,

# ip link set eth1 up

Badala ya kuonyesha miingiliano yote ya mtandao, tunaweza kutaja mojawapo:

# ip link show eth1

Ambayo itarudisha habari zote za eth1.

Unaweza kutazama jedwali lako kuu la sasa la uelekezaji na mojawapo ya amri 3 zifuatazo:

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

Safu ya kwanza katika matokeo ya amri tatu inaonyesha mtandao unaolengwa. Toleo la njia ya ip onyesho (linalofuata nenomsingi dev) pia huwasilisha vifaa vya mtandao vinavyotumika kama lango halisi la mitandao hiyo.

Ingawa siku hizi amri ya ip inapendelewa zaidi ya njia, bado unaweza kurejelea man ip-route na man route kwa maelezo ya kina ya mengine. ya nguzo.

Tunataka kuelekeza pakiti za icmp (ping) kutoka dev2 hadi dev4 na njia nyingine pia (kumbuka kuwa mashine zote mbili za mteja ziko kwenye mitandao tofauti). Jina la kila NIC, pamoja na anwani yake ya IPv4 inayolingana, imetolewa ndani ya mabano ya mraba.

Mazingira yetu ya mtihani ni kama ifuatavyo:

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

Wacha tuangalie jedwali la uelekezaji katika dev1 (kisanduku cha CentOS):

# ip route show

na kisha uirekebishe ili kutumia enp0s3 NIC yake na muunganisho wa 192.168.0.15 kufikia seva pangishi katika mtandao wa 10.0.0.0/24:

# ip route add 10.0.0.0/24 via 192.168.0.15 dev enp0s3

Ambayo kimsingi inasomeka, \Ongeza njia kwenye mtandao wa 10.0.0.0/24 kupitia kiolesura cha mtandao cha enp0s3 ukitumia 192.168.0.15 kama lango.

Vivyo hivyo katika dev4 (sanduku la kufunguaSUSE) kwa mwenyeji wa ping kwenye mtandao wa 192.168.0.0/24:

# ip route add 192.168.0.0/24 via 10.0.0.15 dev enp0s3

Hatimaye, tunahitaji kuwezesha usambazaji katika kipanga njia chetu cha Debian:

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

Sasa wacha tupige:

na,

Ili kufanya mipangilio hii iendelee kwenye buti zote, hariri /etc/sysctl.conf kwenye kipanga njia na uhakikishe kuwa kigezo cha net.ipv4.ip_forward kimewekwa kuwa kweli kama ifuatavyo:

net.ipv4.ip_forward = 1

Kwa kuongeza, sanidi NICs kwa wateja wote wawili (tafuta faili ya usanidi ndani ya /etc/sysconfig/network kwenye openSUSE na /etc/sysconfig/network-scripts kwenye CentOS - katika visa vyote viwili inaitwa ifcfg-enp0s3).

Hapa kuna faili ya usanidi kutoka kwa kisanduku cha 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

Hali nyingine ambapo mashine ya Linux inaweza kutumika kama kipanga njia ni wakati unahitaji kushiriki muunganisho wako wa Mtandao na LAN ya kibinafsi.

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

Kwa kuongezea kusanidi usambazaji wa pakiti na jedwali tuli la uelekezaji kwenye mteja kama katika mfano uliopita, tunahitaji kuongeza sheria chache za iptables kwenye kipanga njia:

# 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

Amri ya kwanza inaongeza sheria kwenye msururu wa POSTROUTING katika jedwali la nat (Tafsiri ya Anwani ya Mtandao), ikionyesha kuwa eth0 NIC inapaswa kutumika kwa vifurushi vinavyotoka.

MASQUERADE inaonyesha kuwa NIC hii ina IP inayobadilika na kwamba kabla ya kutuma kifurushi kwenye \ulimwengu wa pori ya Mtandao, anwani ya chanzo cha kibinafsi ya pakiti lazima kubadilishwa kuwa ile ya IP ya umma ya kipanga njia.

Katika LAN iliyo na wapangishi wengi, kipanga njia hufuatilia miunganisho imara katika /proc/net/ip_conntrack ili kijue mahali pa kurudisha jibu kutoka kwa Mtandao hadi.

Sehemu tu ya matokeo ya:

# cat /proc/net/ip_conntrack

inaonyeshwa kwenye picha ya skrini ifuatayo.

Ambapo asili (IP ya faragha ya kisanduku openSUSE) na lengwa (Google DNS) ya pakiti imeangaziwa. Hii ilikuwa matokeo ya kukimbia:

# curl linux-console.net

kwenye kisanduku openSUSE.

Kama nina hakika unaweza kukisia, kipanga njia kinatumia 8.8.8.8 ya Google kama seva ya jina, ambayo inaelezea kwa nini hatima ya pakiti zinazotoka inaelekeza kwenye anwani hiyo.

Kumbuka: Kwamba vifurushi vinavyoingia kutoka kwenye Mtandao vinakubaliwa tu ikiwa ni sehemu ya muunganisho uliowekwa tayari (amri #2), huku vifurushi vinavyotoka vinaruhusiwa \kutoka bila malipo” (amri #3).

Usisahau kufanya sheria zako za iptables ziendelee kufuata hatua zilizoainishwa katika Sehemu ya 8 - Sanidi Iptables Firewall ya mfululizo huu.

Uelekezaji Nguvu na Quagga

Siku hizi, zana inayotumika zaidi kwa uelekezaji badilika katika Linux ni quagga. Huruhusu wasimamizi wa mfumo kutekeleza, kwa kutumia seva ya Linux ya bei ya chini, utendakazi sawa na unaotolewa na vipanga njia vya Cisco vyenye nguvu (na vya gharama kubwa).

Zana yenyewe haishughulikii uelekezaji, lakini badala yake hurekebisha jedwali la kuelekeza kernel inapojifunza njia mpya bora za kushughulikia pakiti.

Kwa kuwa ni uma wa pundamilia, programu ambayo maendeleo yake yalikoma kitambo, inashikilia kwa sababu za kihistoria amri na muundo sawa kuliko pundamilia. Ndio maana utaona marejeleo mengi ya pundamilia kuanzia hatua hii kuendelea.

Tafadhali kumbuka kuwa haiwezekani kujumuisha uelekezaji thabiti na itifaki zote zinazohusiana katika makala moja, lakini nina uhakika kwamba maudhui yaliyowasilishwa hapa yatatumika kama sehemu ya kuanzia kwako kuendeleza.

Ili kusakinisha quagga kwenye usambazaji uliochagua:

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

Tutatumia mazingira sawa na kwa Mfano # 3, na tofauti pekee ambayo eth0 imeunganishwa kwenye kipanga njia kikuu cha lango na IP 192.168.0.1.

Kisha, hariri /etc/quagga/daemons ukitumia,

zebra=1
ripd=1

Sasa unda faili zifuatazo za usanidi.

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

na ongeza mistari hii (badilisha kwa jina la mwenyeji na nenosiri ulilochagua):

service quagga restart
hostname    	dev2
password    	quagga
# service quagga restart

Kumbuka: Hiyo ripd.conf ni faili ya usanidi kwa Itifaki ya Taarifa ya Uelekezaji, ambayo hutoa kipanga njia taarifa ya mitandao gani inaweza kufikiwa na umbali (kulingana na kiasi cha humle) iko.

Kumbuka kuwa hii ni moja tu ya itifaki zinazoweza kutumika pamoja na quagga, na niliichagua kwa mafunzo haya kwa sababu ya urahisi wa utumiaji na kwa sababu vifaa vingi vya mtandao vinaiunga mkono, ingawa ina shida ya kupitisha vitambulisho kwa maandishi wazi. Kwa sababu hiyo, unahitaji kupeana ruhusa sahihi kwa faili ya usanidi:

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

Katika mfano huu tutatumia usanidi ufuatao na vipanga njia viwili (hakikisha umeunda faili za usanidi za kipanga njia #2 kama ilivyoelezwa hapo awali):

Muhimu: Usisahau kurudia usanidi ufuatao kwa ruta zote mbili.

Unganisha kwa pundamilia (kusikiliza kwenye lango 2601), ambayo ni kiunganishi cha kimantiki kati ya kipanga njia na kernel:

# telnet localhost 2601

Ingiza nenosiri ambalo limewekwa katika faili ya /etc/quagga/zebra.conf, kisha uwashe usanidi:

enable
configure terminal

Ingiza anwani ya IP na mask ya mtandao ya kila NIC:

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

Sasa tunahitaji kuunganisha kwa RIP terminal ya daemon (bandari 2602):

# telnet localhost 2602

Ingiza jina la mtumiaji na nenosiri kama lilivyosanidiwa katika faili ya /etc/quagga/ripd.conf, kisha uandike amri zifuatazo kwa herufi nzito (maoni huongezwa kwa ajili ya ufafanuzi):

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.

Kumbuka: Kwamba katika hali zote mbili usanidi huongezwa kwa mistari ambayo tuliongeza hapo awali (/etc/quagga/zebra.conf na /etc/quagga/ripd.conf) .

Hatimaye, unganisha tena kwenye huduma ya pundamilia kwenye vipanga njia zote mbili na utambue jinsi kila moja yao \imejifunza” njia ya kuelekea kwenye mtandao iliyo nyuma ya nyingine, na ambayo ni njia panda inayofuata ya kufika. mtandao huo, kwa kutekeleza amri onyesha njia ya ip:

# show ip route

Ikiwa ungependa kujaribu itifaki au usanidi tofauti, unaweza kutaka kurejelea tovuti ya mradi wa Quagga kwa uhifadhi zaidi.

Hitimisho

Katika makala hii tumeelezea jinsi ya kusanidi uelekezaji tuli na wa nguvu, kwa kutumia kipanga njia cha sanduku la Linux. Jisikie huru kuongeza ruta nyingi unavyotaka, na kujaribu kadri unavyotaka. Usisite kurejea kwetu kwa kutumia fomu ya mawasiliano iliyo hapa chini ikiwa una maoni au maswali yoyote.