使用iproute2配置force-onlink路由

有时候在系统上配置一个32位掩码的IP地址是不错的,这样一来可以使系统路由表瘦身,二来可以防止显式路由之外的主机和本系统通信。这个怎么说呢?通过配置一个32位掩码的IP地址,就会发现在路由表的main表中,少了该地址的直连路由,因为它是32位的,本身不表征不携带任何网络,在路由表的local表中,少了该地址表征的网段的广播路由,因为它不表征任何网段,因此除非你显式地配置一条路由,否则该地址应该可以被看作是孤立的了。
在单网卡机器上,如果配置eth0的地址为192.168.40.249/32,那么别指望用常规的方式添加任何路由,这是因为链路层直连路由已经不存在了,我们如下的尝试:
route add -net 192.168.0.0/16 gw 192.168.40.254
将失败,因为网关地址并不和本地地址同在任何一个网段,那么如何是好呢?Linux的iproute2工具包提供了一个onlink参数,可以满足这样的要求:
ip route add 172.16.0.0/16 via 192.168.40.254 dev eth0 onlink
之所以要指明dev参数是因为没有链路层直连路由,因而协议栈根本不知道从哪个网卡发出数据包,必须显式指明才可以,最后的一个onlink参数表明强制此网关是“在链路上”的(虽然并没有链路层路由)。除了路由之外的所有访问都将以“路由不可达”这种错误而告终。
按照上述的配置,即使你访问192.168.40.0/24网段的,也会失败,因为192.168.40.249/32和谁都不在一个网段。那么onlink能表达什么呢?onlink的意义在于协议栈虽然找不到链路层直连路由,但是还是会发布针对via网关的arp请求的,仅此而已。如此一来,这种网络通信显得更加纯粹些。仅仅就是为了通信,不会因为通信本身而造出一个IP网段来。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值