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:
- 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.
- Routing huwa l-proċess ta' \gwida” tad-dejta mis-sors sad-destinazzjoni ġewwa netwerk.
- 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.
- 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):
- link: apparat tan-netwerk.
- addr: indirizz tal-protokoll (IP jew IPv6) fuq apparat.
- rotta: dħul fit-tabella tar-rotot.
- 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.