Portál AbcLinuxu, 1. července 2025 08:21
ip route
pro IPv4 a ip -6 route
pro IPv6. Rád bych se s vámi o ni podělil získal inspiraci a názory, proč by se v tomto mělo IPv6 a IPv4 v linuxu vůbec lišit.
Začeneme základními parametry:
[pavlix@traveller ~]$ cat /etc/fedora-release Fedora release 15 (Lovelock) [pavlix@traveller ~]$ uname -a Linux traveller.pavlix.net 2.6.40.3-0.fc15.x86_64 #1 SMP Tue Aug 16 04:10:59 UTC 2011 x86_64 x86_64 x86_64 GNU/LinuxCíl testu bude info.nix.cz:
[pavlix@traveller ~]$ host info.nix.cz info.nix.cz has address 195.47.235.3 info.nix.cz has IPv6 address 2a02:38::1001 info.nix.cz mail is handled by 10 mail.nix.cz.První přijde test IPv4 (smazání cache zahrnuju kvůli opakovatelnosti testu):
[pavlix@traveller ~]$ sudo ip -4 route flush cache [pavlix@traveller ~]$ ip -4 route | grep 195.47.235.3 -A 1 [pavlix@traveller ~]$ ping 195.47.235.3 PING 195.47.235.3 (195.47.235.3) 56(84) bytes of data. 64 bytes from 195.47.235.3: icmp_req=1 ttl=90 time=4.47 ms 64 bytes from 195.47.235.3: icmp_req=2 ttl=90 time=3.46 ms 64 bytes from 195.47.235.3: icmp_req=3 ttl=90 time=3.69 ms 64 bytes from 195.47.235.3: icmp_req=4 ttl=90 time=6.66 ms ^C --- 195.47.235.3 ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 3005ms rtt min/avg/max/mdev = 3.465/4.575/6.667/1.267 ms [pavlix@traveller ~]$ ip -4 route | grep 195.47.235.3 -A 1Jak je vidět, nic neočekávaného se neděje, test vyznívá trochu podivně, aneb proč by se měla měnit routovací tabulka, že. Přejdeme tedy na IPv6:
[pavlix@traveller ~]$ sudo ip -6 route flush cache [pavlix@traveller ~]$ ip -6 route | grep 2a02:38::1001 -A 1 [pavlix@traveller ~]$ ping6 2a02:38::1001 PING 2a02:38::1001(2a02:38::1001) 56 data bytes 64 bytes from 2a02:38::1001: icmp_seq=1 ttl=56 time=6.27 ms 64 bytes from 2a02:38::1001: icmp_seq=2 ttl=56 time=6.06 ms 64 bytes from 2a02:38::1001: icmp_seq=3 ttl=56 time=8.66 ms 64 bytes from 2a02:38::1001: icmp_seq=4 ttl=56 time=5.89 ms ^C --- 2a02:38::1001 ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 3003ms rtt min/avg/max/mdev = 5.896/6.723/8.660/1.129 ms [pavlix@traveller ~]$ ip -6 route | grep 2a02:38::1001 -A 1 2a02:38::1001 via fe80::20c:42ff:fe13:857b dev wlan0 metric 0 cache hoplimit 255A tady najednou takový záznam existuje! Výstup testu je tedy takový, že
ip route
na mém systému vypisuje záznamy z routovací cache pro IPv6 a nevypisuje je pro IPv4. Očekával bych chování pro oba protokoly stejné a nejlépe takové, že se cache záznamy nevypisují (když je budu chtít, řeknu si o ně).
Tiskni
Sdílej:
To je tím, že směrovací tabulky pro IPv6 jsou v jádře udělány jinak než pro IPv4. Jsou prý lepší a výkonnější. Mám dojem, že to má něco společného s PMTU, automatickými záznamy (linkové rozsahy) a cachí.To si nemyslím.
Linux ee.hrach.eu 3.0.0-1-686-pae #1 SMP Wed Aug 17 04:28:34 UTC 2011 i686 GNU/Linux ii iproute 20110629-1Toto chování nepozoruji.
~ # ping6 2a02:38::1001 PING 2a02:38::1001(2a02:38::1001) 56 data bytes 64 bytes from 2a02:38::1001: icmp_seq=1 ttl=58 time=31.7 ms ^C --- 2a02:38::1001 ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 31.771/31.771/31.771/0.000 ms ~ # ip -6 route | grep 2a02:38::1001 -A 1 ~ #
u IPv4 žádné takové routy potřeba nejsou, tyhle věci se řeší na úrovni ARP cache. U každé cílové IP adresy je podle rout jasný, ke kterému interfacu patří (nebo se o to stará most)IPv4 má v sobě úplně to samé, ale vypisuje se mi to správně, zkus
ip route show table cache
.
na rozdíl od toho je u ipv6 rozsah fe80:: společný pro všechny interfacy, dává smysl, aby někde bylo poznačeno který interface je ten správnýTo v linuxu rozhodně smysl nedává, když odmítá jakýkoli ping bez udaného rozhraní, i kdybys to rozhraní měl v systému jedno jediné. Ta informace by tak jako tak zůstala nevyužitá. Mimochodem, na Fedoře 15 to pro nejnovější jádra stále platí.
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.