# ip route get 1.2.3.4
anycast 1.2.3.4 dev eth0 src 5.6.7.8问题是它怎么知道地址是选播?(显然是真的)。
现为选播路线:
root@hv2 ~ # ip route get 1.2.3.4
anycast 1.2.3.4 dev eth0 src 5.6.7.8
cache 但在清单中看不到:
root@hv2 ~ # ip route list|grep 1.2.3.4|wc -l
0但是可以删除它,并将其恢复到正常状态(不再有anycast ):
root@hv2 ~ # ip route del anycast 1.2.3.4 dev eth0
root@hv2 ~ # ip route get 1.2.3.4
1.2.3.4 via 5.6.7.8 dev eth0 src 9.10.11.12
cache 发布于 2014-07-11 21:20:48
如果您查看iproute2 gitweb,您将看到它显示了在内核路由结构上设置的RTN_ANYCAST位的状态。如果交叉引用内核源(rtnetlink.h.h.h),您将看到以下评论:
RTN_ANYCAST, /* Accept locally as broadcast,
but send as unicast */如果您检查手动页面,您将看到地址的anycast状态由配置决定(特别是在指定要添加的地址时添加anycast关键字)。根据man 8 ip的说法:
IFADDR := PREFIX | ADDR peer PREFIX [ broadcast ADDR ] [ anycast ADDR ]
[ label STRING ] [ scope SCOPE-ID ]
...
anycast - _not implemented_ the destinations are anycast
addresses assigned to this host. They are mainly equivalent to
local with one difference: such addresses are invalid when used
as the source address of any packet.在手册的第一部分中,它指出当您指定地址时,可以指示堆栈它是一个anycast地址。在不检查内核源代码的情况下,我设想当您添加anycast地址时,anycast位将被传播到相应的路由表条目,在添加地址时将创建该路由表条目。
我不确定“未实现”部分是否完全正确,因为看起来iproute2确实在将anycast标志传递到系统调用中。因此,如果内核支持anycast,那么它应该可以工作。但我还没测试过所以我不知道。
发布于 2014-07-17 18:34:32
来自ip-route的手册页,在"ip路由获取“一节中:
请注意,此操作不等同于ip路由显示。显示现有的路线。如果需要的话,get会解决这些问题并创建新的克隆。从本质上说,get相当于沿着这条路径发送数据包。
您可以使用命令ip route show type anycast显示任意播路由。
https://serverfault.com/questions/611284
复制相似问题