Ebanormaalne marsruutimine

Linuxi ja andmesidega seotud küsimused

Moderaator: Moderaatorid

Vasta
chris
Pingviini aktivist
Pingviini aktivist
Postitusi: 146
Liitunud: 16.02.2009, 17:39

Ebanormaalne marsruutimine

Postitus Postitas chris »

Koperdasin ebanormaalse marsruutimisprobleemi otsa, mille kiireks lahenduseks oli restart, kuid tahaks siiski jõuda probleemi põhjuste jälile.

Tegelased on kaks arvutit PC1 ja PC2 ning neid ühendav marsruuter RT (vt. pilti). Tegemist on väljavõttega suuremast võrgust.

Probleem seisneb selles, et enamike ühenduste jaoks on PC1 leiutanud, et PC2 on temaga samas alamvõrgus. Minu küsimus: kuidas jõuab Linux sellise tulemuseni?

Erinevad katsed pöörduda arvutist PC1 arvuti PC2 poole näevad välja nii:

Kood: Vali kõik

chris@pc1$ ping -c 3 pc2 
PING pc2 (192.168.200.3) 56(84) bytes of data.
From 192.168.1.20 icmp_seq=1 Destination Host Unreachable
From 192.168.1.20 icmp_seq=2 Destination Host Unreachable
From 192.168.1.20 icmp_seq=3 Destination Host Unreachable

--- pc2 ping statistics ---
3 packets transmitted, 0 received, +3 errors, 100% packet loss, time 2016ms
chris@pc1$ traceroute pc2
traceroute to pc2 (192.168.200.3), 30 hops max, 60 byte packets
 1  rt (192.168.1.1)  0.162 ms  0.138 ms  0.121 ms
 2  pc2 (192.168.200.3)  3001.871 ms !H  3001.860 ms !H  3001.844 ms !H
chris@pc1$ tcptraceroute pc2
Selected device eth0, address 192.168.1.20, port 39900 for outgoing packets
Tracing the path to pc2 (192.168.200.3) on TCP port 80 (www), 30 hops max
 1  rt (192.168.1.1)  0.127 ms  0.103 ms  0.070 ms
 2 pc2 (192.168.200.3) [open]  0.268 ms  0.196 ms  0.174 ms
chris@pc1$ 
Teises terminalis töötav tshark näitas, et PC1 otsis ebaõnnestunud katsete puhul samast alamvõrgust arvutit PC2. Õnnestunud katsete korral läks info ilusasti RT kaudu kohale. See on kontrollitud tshark'ga arvutites RT ja PC2. Kõik vastupidises suunas, PC2-st PC1-e, tehtud katsed ebaõnnestusid, sest PC1 otsis aktiivselt võrgust 192.168.1.0/24 arvutit PC2.

Eksib see, kes arvab, et tulemüür oli valesti seadistatud. Ei olnud. Ikaldus tekkis sellest, et PC2 lülitati kogemata välja. (Kahet kõrvuti arvutist lülitati vastavalt Murphy seadustele välja vale.)
Kõik ülejäänud (pea 200) võrgu 192.168.1.0/24 asukat pääsesid arvutini PC2 probleemideta.

PC1 marsuutimistabel

Kood: Vali kõik

chris@pc1$ ip route
192.168.1.0/24 dev eth0  proto kernel  scope link  src 192.168.1.2 
172.25.57.35/24 dev eth1  proto kernel  scope link  src 172.25.57.35 
default via 192.168.1.1 dev eth0 
chris@pc1$
PC2 marsruutimistabel

Kood: Vali kõik

chris@pc2$ ip route
192.168.200.0/29 dev eth0  proto kernel  scope link  src 192.168.200.3
192.168.1.0/24 via 192.168.200.3 dev eth0 
default via 192.168.200.1 dev eth0 
chris@pc2$
RT marsruutimistabel

Kood: Vali kõik

chris@rt$ ip route
192.168.200.0/29 dev eth0  proto kernel  scope link  src 192.168.200.2
172.25.57.0/24 dev eth1  proto kernel  scope link  src 172.25.57.249 
192.168.1.0/24 dev eth3  proto kernel  scope link  src 192.168.1.20
default via 192.168.200.1 dev eth0 
chris@rt$
Lisaks veel:
* 172.25.57.0/24 võrgus on PC1 ja RT mõlemad kliendid.
* Antud alamvõrgu lüüs on aadressil 172.25.57.1, kuid see ei ole konfigureeritav ning samuti ei tea ta 192.168.0.0/16 võrkudest mitte midagi. 172.25.57.1 taga on kusagil pääs ka laia maailma.
* RT teeb enamikule 192.168.1.0/24 võrgu arvutitele maskeraadi võrku 172.25.57.0/24. Õige marsruutimine on tagatud alternatiivsete marsruutimistabelite ja -reeglitega. (Hetkel puudub võimalus neid siia postitusse lisada, samas ei tohiks need ka olulised olla.)
* Valitud arvutid nagu PC1 on ühendatud otse kahte võrku. Mitte ükski neist erilistest arvutitest ei ole marsruuter. S.t./proc/sys/net/ipv4/ip_forward sisu on 0 (null) ja iptables'ga on edastamine samuti keelatud.
Manused
võrgu pilt
võrgu pilt
Kasutaja avatar
obundra
Vana Pingviin
Vana Pingviin
Postitusi: 1213
Liitunud: 04.08.2005, 03:00

Postitus Postitas obundra »

Esmapilgul paistab silma, et PC2 peal on olemas route 192.168.1.0 võrku, ehk "192.168.1.0/24 via 192.168.200.3 dev eth0", aga PC1 peal sarnast asja 192.168.200.0 peale ei paista.Kuidas neil ülejäänud 192.168.1.0 võrgu masinatel on?
chris
Pingviini aktivist
Pingviini aktivist
Postitusi: 146
Liitunud: 16.02.2009, 17:39

Postitus Postitas chris »

Sul on kahe silma vahele jäänud, et PC1 default route on RT, mis saadab asjad soovitud võrku. Seega eraldi reeglit vaja ei ole.
Muide, ikalduse hetkel sai ka antud marsruut ilmutatult lisatud, kuid paranemist ei kaasnenud.

Aga tänud kaasa mõtlemast!
Kasutaja avatar
imre
Vana Pingviin
Vana Pingviin
Postitusi: 2653
Liitunud: 16.08.2005, 03:00

Postitus Postitas imre »

Kus kohast see 192.168.1.2 tekib?
chris@pc1$ ip route
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.2

Ruutingutabeli seadistasid käsitsi?
Enne teema püstitamist kasutage OTSINGUT
Küsi targalt: Infot siit!
Kui aru ei saa, siis küsi.
chris
Pingviini aktivist
Pingviini aktivist
Postitusi: 146
Liitunud: 16.02.2009, 17:39

Postitus Postitas chris »

imre kirjutas:Kus kohast see 192.168.1.2 tekib?
chris@pc1$ ip route
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.2
Uups. See on minu näpukas teksti kopeerimisel. Õige rida on
[font=monospace]192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.20[/font]

Palun vabandust.
imre kirjutas:Ruutingutabeli seadistasid käsitsi?
Marsruutimistabelid täidetakse kõigis arvutites automaatselt kas kerneli või marsruutimisdeemoni (bird) poolt.
Ainsana on käsitsi lisatud PC2 marsruutimistabelisse võrk 192.168.1.0/24, sest 192.168.200.1 ei tea mitte midagi antud võrgust.
Vasta