Portál AbcLinuxu, 26. července 2025 16:09


Dotaz: jak vypsat aktualni routovani

10.12.2009 11:29 marek
jak vypsat aktualni routovani
Přečteno: 264×
Odpovědět | Admin
Dobry den. Narazil jsem na zajimavou vyzvu.

Uvod: Mam sit s ne uplne standartnim routovanim. V rozsahu 172.16.0.0/16 maji vsichni default gw 172.16.0.1. Sit 172.26.100.0/24 je vsak pripojena do routeru 172.16.20.20. Tato routa je na stroji s 172.16.0.1 nastavena. Pokud zahajim komunikaci z 172.16.0.2 na 172.26.100.0/24, tak prvni packety jdou na 172.16.0.1. Stroj s 172.16.0.1 je preposle na 172.16.20.20 a zaroven vysle icmp type 5 code 0 (Redirect datagrams for the Network) na 172.16.0.2,aby to priste poslal primo. Ten to skutecne priste posle primo a 172.16.0.1 ma pokoj. Vse bezi na linuxu. Vse funguje k naproste spokojenosti.

Vlastni dotaz: Jak vypisu podle kterych pravidel se aktualne routuje (i podle Service type), jak do tech pravidel mohu zasahnout, jak ovlivnim co presne za code posle 172.16.0.1.

Marek
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

10.12.2009 12:41 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: jak vypsat aktualni routovani
Odpovědět | | Sbalit | Link | Blokovat | Admin
Pokud chcete opravdu kompletní, tak 'ip rule show' a pak pro jednotlivé tabulky 'ip route show table n'.
10.12.2009 13:01 marek
Rozbalit Rozbalit vše Re: jak vypsat aktualni routovani
Dobry den.

Dekuji za reakci.

To bylo to prvni, co jsem zkousel, ale: for ((i=0;i<256;i++)); do ip route show table $i; done | grep 172.26.100 nevypise i v okamziku, kdy soubezne:
marek@setapouch:~$ ping 172.26.100.1
PING 172.26.100.1 (172.26.100.1) 56(84) bytes of data.
64 bytes from 172.26.100.1: icmp_seq=1 ttl=255 time=2.63 ms
From 172.16.0.1: icmp_seq=2 Redirect Host(New nexthop: 172.16.20.20)
64 bytes from 172.26.100.1: icmp_seq=2 ttl=255 time=1.88 ms
From 172.16.0.1: icmp_seq=3 Redirect Host(New nexthop: 172.16.20.20)
64 bytes from 172.26.100.1: icmp_seq=3 ttl=255 time=2.08 ms
64 bytes from 172.26.100.1: icmp_seq=4 ttl=255 time=1.84 m
vubec nic.

Marek
10.12.2009 13:16 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: jak vypsat aktualni routovani
Trochu jsem se ztratil v tom, v čem je problém. V tom, že váš stroj redirecty ignoruje, nebo v tom, že je akceptuje, ale neprojeví se to ve směrovacích tabulkách?
10.12.2009 13:36 marek
Rozbalit Rozbalit vše Re: jak vypsat aktualni routovani
Problem je v tom, ze ip nic nevypise, ackoli redirecty se akceptuji:
tcpdump -nne host 172.26.100.1
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
12:29:29.153003 00:1c:c0:07:06:64 > 00:20:9c:6b:56:cb, ethertype IPv4 (0x0800), length 98: 172.16.200.100 > 172.26.100.1: ICMP echo request, id 21787, seq 135, length 64
12:29:29.179324 00:20:9c:6b:56:cb > 00:1c:c0:07:06:64, ethertype IPv4 (0x0800), length 98: 172.26.100.1 > 172.16.200.100: ICMP echo reply, id 21787, seq 135, length 64


arp -n 172.16.20.20
Address                  HWtype  HWaddress           Flags Mask            Iface
172.16.20.20             ether   00:20:9c:6b:56:cb   C                     eth0

Marek
10.12.2009 14:26 marek
Rozbalit Rozbalit vše Re: jak vypsat aktualni routovani
Odpovědět | | Sbalit | Link | Blokovat | Admin
Takze vypsat to uz umim:

POROVNATEL="eth0.([0-9ABCDEF]{2})([0-9ABCDEF]{2})([0-9ABCDEF]{2})([0-9ABCDEF]{2}).([0-9ABCDEF]{2})([0-9ABCDEF]{2})([0-9ABCDEF]{2})([0-9ABCDEF]{2}).*"
while read IP ;do [[ $IP =~ $POROVNATEL ]] && echo -e "ibase=16\n ${BASH_REMATCH[4]}\n${BASH_REMATCH[3]}\n${BASH_REMATCH[2]}\n${BASH_REMATCH[1]}\n" |bc| tr "\n" "."&&\
> echo -en "\t"&&echo -e "ibase=16\n ${BASH_REMATCH[8]}\n${BASH_REMATCH[7]}\n${BASH_REMATCH[6]}\n${BASH_REMATCH[5]}\n" |bc| tr "\n" "." && echo;  done </proc/net/rt_cache
172.26.100.1.   172.16.20.20.
172.16.1.20.    172.16.1.20.
74.125.87.138.  172.16.0.1.
74.125.87.138.  172.16.0.1.
195.70.150.7.   172.16.0.1.
172.26.100.1.   172.16.20.20.
77.78.99.22.    172.16.0.1.
172.16.1.27.    172.16.1.27.
74.125.87.100.  172.16.0.1.
74.125.87.102.  172.16.0.1.
77.78.99.23.    172.16.0.1.
172.16.1.20.    172.16.1.20.
62.168.44.116.  172.16.0.1.
74.125.87.101.  172.16.0.1.
62.168.44.117.  172.16.0.1.
172.16.0.2.     172.16.0.2.
86.49.105.86.   172.16.0.1.
74.125.87.102.  172.16.0.1.
77.78.99.21.    172.16.0.1.
77.78.99.26.    172.16.0.1.
195.70.150.7.   172.16.0.1.
77.78.99.21.    172.16.0.1.
74.125.87.113.  172.16.0.1.
62.168.44.116.  172.16.0.1.
74.125.87.100.  172.16.0.1.
172.16.0.2.     172.16.0.2.
62.168.44.115.  172.16.0.1.
77.78.99.22.    172.16.0.1.
62.168.44.117.  172.16.0.1.
172.16.1.27.    172.16.1.27.
Ted to jeste zacit ovladat:

echo 0 > /proc/sys/net/ipv4/conf/eth0/accept_redirects

zda se nefunguje

Marek
10.12.2009 14:34 petr_p | skóre: 59 | blog: pb
Rozbalit Rozbalit vše Re: jak vypsat aktualni routovani
ip route show cache :)
10.12.2009 14:47 marek
Rozbalit Rozbalit vše Re: jak vypsat aktualni routovani
Dekuji, minimalne polovinu dotazu to resi:
ip route flush table cache
funguje,

ale treba:
ip route del 172.26.100.1 via 172.16.20.20 dev eth0  src 172.16.200.100  table cache
Error: argument "cache" is wrong: "table" value is invalid
Marek

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.