Kif Dawwar Server Linux f'Router biex Immaniġġja t-Traffiku Statikament u Dinamikament - Parti 10


Kif antiċipajna f'tutorials preċedenti ta 'din is-serje LFCE (Linux Foundation Certified Engineer), f'dan l-artikolu ser niddiskutu r-rotot tat-traffiku IP b'mod statiku u dinamiku b'applikazzjonijiet speċifiċi.

L-ewwel affarijiet, ejja nikseb xi definizzjonijiet dritti:

  1. Fi kliem sempliċi, pakkett huwa l-unità bażika li tintuża biex tittrasmetti informazzjoni f'netwerk. Netwerks li jużaw TCP/IP bħala protokoll tan-netwerk isegwu l-istess regoli għat-trażmissjoni tad-dejta: l-informazzjoni attwali hija maqsuma f'pakketti li huma magħmula kemm mid-dejta kif ukoll mill-indirizz fejn għandha tintbagħat.
  2. Routing huwa l-proċess ta' \gwida” tad-dejta mis-sors sad-destinazzjoni ġewwa netwerk.
  3. Rotot statiku jeħtieġ sett ta' regoli kkonfigurati manwalment definiti f'tabella tar-routing. Dawn ir-regoli huma fissi u jintużaw biex jiddefinixxu l-mod kif pakkett irid jgħaddi minnu hekk kif jivvjaġġa minn magna għal oħra.
  4. Rotot dinamiku, jew rotot intelliġenti (jekk tixtieq), ifisser li s-sistema tista' tbiddel awtomatikament, kif meħtieġ, ir-rotta li jsegwi pakkett.

Konfigurazzjoni ta' Apparat tan-Netwerk u IP Avvanzata

Il-pakkett iproute jipprovdi sett ta' għodod għall-immaniġġjar tan-netwerking u l-kontroll tat-traffiku li se nużaw matul dan l-artikolu peress li jirrappreżentaw is-sostituzzjoni ta' għodod legacy bħal ifconfig u route.

L-utilità ċentrali fil-iproute suite tissejjaħ sempliċiment ip. Is-sintassi bażika tagħha hija kif ġej:

# ip object command

Fejn oġġett jista’ jkun wieħed biss minn dawn li ġejjin (jintwerew biss l-oġġetti l-aktar frekwenti – tista’ tirreferi għal man ip għal lista kompluta):

  1. link: apparat tan-netwerk.
  2. addr: indirizz tal-protokoll (IP jew IPv6) fuq apparat.
  3. rotta: dħul fit-tabella tar-rotot.
  4. regola: regola fid-database tal-politika tar-rotot.

Billi kmand jirrappreżenta azzjoni speċifika li tista' titwettaq fuq oġġett. Tista' tħaddem il-kmand li ġej biex turi l-lista kompleta ta' kmandi li jistgħu jiġu applikati għal oġġett partikolari:

# ip object help

Pereżempju,

# ip link help

L-immaġni ta 'hawn fuq turi, pereżempju, li tista' tbiddel l-istatus ta 'interface tan-netwerk bil-kmand li ġej:

# ip link set interface {up | down}

Għal aktar eżempji bħal dawn ta 'kmand 'ip', aqra 10 Kmandi Utli 'ip' biex Ikkonfigura l-Indirizz IP

F'dan l-eżempju, aħna se tiddiżattiva u nattiva eth1:

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

Jekk trid terġa 'tippermetti eth1,

# ip link set eth1 up

Minflok ma nuru l-interfaces tan-netwerk kollha, nistgħu nispeċifikaw waħda minnhom:

# ip link show eth1

Li se jirritorna l-informazzjoni kollha għal eth1.

Tista' tara t-tabella tar-rotot prinċipali attwali tiegħek b'wieħed mit-3 kmandi li ġejjin:

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

L-ewwel kolonna fl-output tat-tliet kmandi tindika n-netwerk fil-mira. L-output ta 'ip route juru (wara l-kelma prinċipali dev) jippreżenta wkoll l-apparat tan-netwerk li jservi bħala portal fiżiku għal dawk in-netwerks.

Għalkemm illum il-ġurnata l-kmand ip huwa preferut fuq ir-rotta, xorta tista' tirreferi għal man ip-route u man route għal spjegazzjoni dettaljata tal-bqija tal-kolonni.

Irridu ngħaddu pakketti icmp (ping) minn dev2 għal dev4 u bil-maqlub ukoll (innota li ż-żewġ magni tal-klijenti huma fuq netwerks differenti). L-isem ta' kull NIC, flimkien mal-indirizz IPv4 korrispondenti tiegħu, jingħata fil-parentesi kwadri.

L-ambjent tat-test tagħna huwa kif ġej:

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

Ejja naraw it-tabella tar-rotta f'dev1 (kaxxa CentOS):

# ip route show

u mbagħad immodifikaha sabiex tuża l-enp0s3 NIC tagħha u l-konnessjoni ma’ 192.168.0.15 biex taċċessa hosts fin-netwerk 10.0.0.0/24:

# ip route add 10.0.0.0/24 via 192.168.0.15 dev enp0s3

Li essenzjalment jaqra, Żid rotta man-netwerk 10.0.0.0/24 permezz tal-interface tan-netwerk enp0s3 billi tuża 192.168.0.15 bħala gateway.

Bl-istess mod f'dev4 (kaxxa openSUSE) għal ping hosts fin-netwerk 192.168.0.0/24:

# ip route add 192.168.0.0/24 via 10.0.0.15 dev enp0s3

Fl-aħħarnett, irridu nippermettu t-trażmissjoni fir-router Debian tagħna:

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

Issa ejja ping:

u,

Biex tagħmel dawn is-settings persistenti madwar l-istivali, editja /etc/sysctl.conf fuq ir-router u kun żgur li l-varjabbli net.ipv4.ip_forward hija ssettjata għal vera kif ġej:

net.ipv4.ip_forward = 1

Barra minn hekk, ikkonfigura l-NICs fuq iż-żewġ klijenti (fittxu l-fajl tal-konfigurazzjoni fi ħdan /etc/sysconfig/network fuq openSUSE u /etc/sysconfig/network-scripts fuq CentOS – fiż-żewġ każijiet tissejjaħ ifcfg-enp0s3).

Hawn il-fajl tal-konfigurazzjoni mill-kaxxa 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

Xenarju ieħor fejn magna Linux tista 'tintuża bħala router huwa meta jkollok bżonn taqsam il-konnessjoni tal-Internet tiegħek ma' LAN privata.

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

Minbarra li nwaqqfu t-twassil tal-pakketti u t-tabella statika tar-routing fil-klijent bħal fl-eżempju preċedenti, irridu nżidu ftit regoli iptables fir-router:

# 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

L-ewwel kmand iżid regola mal-katina POSTROUTING fit-tabella nat (Traduzzjoni ta' l-Indirizz tan-Netwerk), li tindika li l-eth0 NIC għandha tintuża għal pakketti ħerġin.

MASQUERADE jindika li dan NIC għandu IP dinamiku u li qabel ma jibgħat il-pakkett lid-\dinja selvaġġa tal-Internet, l-indirizz tas-sors privat tal-pakkett irid jinbidel għal dak tal-IP pubbliku tar-router.

F'LAN b'ħafna hosts, ir-router iżomm kont tal-konnessjonijiet stabbiliti f'/proc/net/ip_conntrack sabiex ikun jaf fejn għandu jirritorna r-rispons mill-Internet.

Parti biss mill-output ta':

# cat /proc/net/ip_conntrack

huwa muri fil-screenshot li ġej.

Fejn l-oriġini (IP privat tal-kaxxa openSUSE) u d-destinazzjoni (Google DNS) tal-pakketti huma enfasizzati. Dan kien ir-riżultat tat-tmexxija:

# curl linux-console.net

fuq il-kaxxa openSUSE.

Peress li jien ċert li diġà tista 'raden, ir-router qed juża 8.8.8.8 ta' Google bħala nameserver, li jispjega għaliex id-destinazzjoni tal-pakketti ħerġin tipponta lejn dak l-indirizz.

Nota: Li pakketti deħlin mill-Internet huma aċċettati biss jekk huma parti minn konnessjoni diġà stabbilita (kmand #2), filwaqt li pakketti ħerġin huma permessi \ħruġ ħieles (kmand #3).

Tinsiex li tagħmel ir-regoli tal-iptables tiegħek persistenti wara l-passi deskritti fil-Parti 8 - Ikkonfigura Iptables Firewall ta 'din is-serje.

Dynamic Routing ma Quagga

Illum il-ġurnata, l-għodda l-aktar użata għar-routing dinamiku fil-Linux hija quagga. Jippermetti lill-amministraturi tas-sistema li jimplimentaw, b'server Linux bi prezz relattivament baxx, l-istess funzjonalità li hija pprovduta minn routers Cisco b'saħħithom (u għaljin).

L-għodda nnifisha ma tieħu ħsieb ir-routing, iżda pjuttost timmodifika t-tabella tar-routing tal-kernel hekk kif titgħallem l-aħjar rotot ġodda biex timmaniġġja l-pakketti.

Peress li huwa furketta taż-żebra, programm li l-iżvilupp tiegħu waqaf ftit ilu, iżżomm għal raġunijiet storiċi l-istess kmandijiet u struttura taż-żebra. Huwa għalhekk li minn dan il-punt se tara ħafna referenza għaż-żebra.

Jekk jogħġbok innota li mhux possibbli li tkopri r-rotot dinamiku u l-protokolli kollha relatati f'artikolu wieħed, iżda jien kunfidenti li l-kontenut ippreżentat hawn se jservi bħala punt tat-tluq għalik biex tibni fuqu.

Biex tinstalla quagga fuq id-distribuzzjoni magħżula tiegħek:

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

Se nużaw l-istess ambjent bħall-Eżempju #3, bl-unika differenza li eth0 huwa konness ma 'router gateway prinċipali b'IP 192.168.0.1.

Sussegwentement, editja /etc/quagga/daemons bi,

zebra=1
ripd=1

Issa oħloq il-fajls ta 'konfigurazzjoni li ġejjin.

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

u żid dawn il-linji (issostitwixxi l-hostname u l-password tal-għażla tiegħek):

service quagga restart
hostname    	dev2
password    	quagga
# service quagga restart

Nota: Dak ripd.conf huwa l-fajl tal-konfigurazzjoni għall-Protokoll tal-Informazzjoni tar-Rotot, li jipprovdi lir-router bl-informazzjoni dwar liema netwerks jistgħu jintlaħqu u kemm (f'termini ta 'ammont ta' ħops) huma.

Innota li dan huwa biss wieħed mill-protokolli li jista 'jintuża flimkien ma' quagga, u għażiltha għal dan it-tutorja minħabba l-faċilità ta 'użu u minħabba li l-biċċa l-kbira tal-apparati tan-netwerk jappoġġjawh, għalkemm għandu l-iżvantaġġ li jgħaddi kredenzjali f'test sempliċi. Għal dik ir-raġuni, għandek bżonn tassenja permessi xierqa għall-fajl tal-konfigurazzjoni:

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

F'dan l-eżempju se nużaw is-setup li ġej b'żewġ routers (kun żgur li toħloq il-fajls tal-konfigurazzjoni għal router #2 kif spjegat qabel):

Importanti: Tinsiex tirrepeti s-setup li ġej għaż-żewġ routers.

Qabbad maż-zebra (simgħu fuq il-port 2601), li huwa l-intermedjarju loġiku bejn ir-router u l-kernel:

# telnet localhost 2601

Daħħal il-password li kienet issettjata fil-fajl /etc/quagga/zebra.conf, u mbagħad ippermetti l-konfigurazzjoni:

enable
configure terminal

Daħħal l-indirizz IP u l-maskra tan-netwerk ta’ kull NIC:

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

Issa għandna bżonn nikkonnettjaw mat-terminal tad-daemon RIP (port 2602):

# telnet localhost 2602

Daħħal l-isem tal-utent u l-password kif ikkonfigurat fil-fajl /etc/quagga/ripd.conf, u mbagħad ittajpja l-kmandi li ġejjin b'tipa grassa (il-kummenti huma miżjuda għall-fini ta' kjarifika):

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.

Nota: Li fiż-żewġ każijiet il-konfigurazzjoni hija mehmuża mal-linji li żidna qabel (/etc/quagga/zebra.conf u /etc/quagga/ripd.conf) .

Fl-aħħarnett, erġa' qabbad mas-servizz zebra fuq iż-żewġ routers u nnota kif kull wieħed minnhom \tgħallem” ir-rotta għan-netwerk li hemm wara l-ieħor, u liema huwa l-ħops li jmiss biex tasal dak in-netwerk, billi tħaddem il-kmand show ip route:

# show ip route

Jekk trid tipprova protokolli jew setups differenti, tista 'tkun trid tirreferi għas-sit tal-proġett Quagga għal aktar dokumentazzjoni.

Konklużjoni

F'dan l-artikolu spjegajna kif twaqqaf routing statiku u dinamiku, bl-użu ta 'router(i) tal-kaxxa Linux. Ħossok liberu li żżid kemm trid routers, u tesperimenta kemm trid. Toqgħodx lura milli terġa' lura magħna billi tuża l-formola ta' kuntatt hawn taħt jekk għandek xi kummenti jew mistoqsijiet.