Linux-Networking
SIOCADDRT:在 IPv6 中添加路由時沒有到主機的路由
我有奇怪的問題。我在 RHEL-7.2 上有一些伺服器,因為我無法添加路由。
這個路線加法是我做過千百次的事情。我得到的錯誤是NO-Route to host這有點奇怪。
我在路線添加中遇到以下錯誤#
route -A inet6 add 1203:900:223:3524:21::/112 gw 1203:270:713:3214:34::1 SIOCADDRT: No route to host
以下是我設備的輸出#
[root@localhost ~]# ifconfig eth2 eth2: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet6 1203:270:713:3214:34::12 prefixlen 112 scopeid 0x0<global> inet6 fe80::250:56ff:feaf:3ab7 prefixlen 64 scopeid 0x20<link> ether 00:50:56:af:3a:b7 txqueuelen 1000 (Ethernet) RX packets 23405 bytes 1429434 (1.3 MiB) RX errors 0 dropped 22220 overruns 0 frame 0 TX packets 4129 bytes 352750 (344.4 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
網關 IP 可達#
[root@localhost ~]# ping6 1203:270:713:3214:34::1 PING 1203:270:713:3214:34::1(1203:270:713:3214:34::1) 56 data bytes 64 bytes from 1203:270:713:3214:34::1: icmp_seq=1 ttl=254 time=0.678 ms 64 bytes from 1203:270:713:3214:34::1: icmp_seq=2 ttl=254 time=0.576 ms --- 2405:200:613:3214:34::1 ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 1000ms rtt min/avg/max/mdev = 0.576/0.627/0.678/0.051 ms
設備介面已啟動並執行##
[root@localhost ~]# ethtool eth2 Settings for eth2: Supported ports: [ TP ] Supported link modes: 1000baseT/Full 10000baseT/Full Supported pause frame use: No Supports auto-negotiation: No Advertised link modes: Not reported Advertised pause frame use: No Advertised auto-negotiation: No Speed: 10000Mb/s Duplex: Full Port: Twisted Pair PHYAD: 0 Transceiver: internal Auto-negotiation: off MDI-X: Unknown Supports Wake-on: uag Wake-on: d Link detected: yes
在這個主題上搜尋了很多。找不到解決方案 ROUTE-ADDITION-FAILURE。似乎與此主題無關。這個問題只出現在某些 RHEL 中,而不是在所有機器上。
以防萬一,有人在某處看到過這個問題。請回复,真的很有幫助。
據我所知,在最近的核心中,只有一點可以
EHOSTUNREACH
在 ipv6 路由添加上獲得。https://elixir.bootlin.com/linux/v4.3/source/net/ipv6/route.c#L1922
/* IPv6 嚴格禁止使用非本地連結 地址作為下一跳地址。 否則,路由器將無法發送重定向。 它非常好,但在某些(罕見!)情況下 (SIT、PtP、NBMA NOARP 連結)很方便允許 一些例外。--ANK */
例外是,必須已經有一條到網關的 ipv6 路由。
grt = rt6_lookup(net, gw_addr, NULL, cfg->fc_ifindex, 1);
上面的這一行必須成功。
因此,這台主機上不同的情況很可能是它還沒有路由器通告配置的下一跳。網關仍然是由前綴確定的連結,因此可以通過 ping 訪問,但它不會自動成為路由,因此不能保證 rt6_lookup 會成功。