为什么Linux Loopback接口上整个网段的地址都能通?

有人咨询了一个比较有意思的问题:
我在lo上添加了10.0.1.1/24这个地址,为什么10.0.1.0/24整个段都可以在本机ping通呢?而且在本机telnet这个段任何地址的侦听0.0.0.0的端口也是通的,为什么?

答案似乎不难解释。 因为添加IPv4地址到lo口时,链路层路由就自动在Local表生成啊!

本文接着上面那篇继续写点儿细节。

比如,当我添加地址到lo口时:

[root@localhost ~]# ip addr add dev lo 10.0.1.1/24

按照IP路由规范,一条 链路层路由 将会自动生成,该路由项以添加地址前缀10.0.1.0/24为健值。由于地址是添加在lo口,而lo口的路由在IPv4关联了Local表,所以这条链路层路由被添加在了Local表中:

[root@localhost ~]# ip route show 10.0.1.0/24 dev lo tab local
local 10.0.1.0/24 proto kernel scope host src 10.0.1.1

现在我们知道,当我们在lo口添加一个非32位长度掩码的地址时:

该前缀的链路层网段路由会被添加在Local表中。
看另一方面,当数据包进入IP路由逻辑时,会用目标地址为健值按照下面的顺序查询路由表(基于Linux实现):

[root@localhost ~]# cat /etc/iproute2/rt_tables
255    local
254    main
253    default
0    unspec
我们看得出来,Local表是最优先被查询的(注意:后面4.X高

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值