引子
以前对一个主机内几张网卡上出现同网段地址挺不以为然,因为在默认状态下,Linux会出现路由的二义性,从而影响ping过程,虽然抓包上arp过程是对的,但就是在三层路由时出现了问题!
后来,经过交流,发现由于某些产品形态的限制,以及可能需要在已有网络环境上部署,不一定能够满足在一台主机上用不同网段进行隔离的简单部署模型要求,所以,一台主机不同网卡出现同网段的配置,几乎是不可避免的。
但如何解决呢?
同网段通信的网络隔离手段
以笔者现在掌握的知识,进行会汇总,可以有如下技术可以考虑:
| 种类 | 粒度 | 侵入性 | 说明 |
|---|---|---|---|
| 命名空间 | 大 | 不需要感知 | 牛刀杀鸡命名空间可以隔离更多的资源,粒度比较大 |
| VRF | 中 | 需要感知VRF | 虚拟路由功能,但不建议使用,对于同网段通信并不友好,即使是ping流程 |
| IP rule | 中 | 不需要感知 | 策略路由 |
| iptables using set-mark | 中 | 不需要感知 | 数据包过滤规则加策略路由 |
推荐使用策略路由
ip rule的策略路由iptables using set-mark + ip rule usging fwmark
RAW socket with IP_HDRINCL 由于
Linux OS平台限制,可能会绕过纯粹的ip rule策略路由设置结合
iptables set-mark功能修改数据包标记,并辅助策略路由处理,就可以将数据包隔离开
结束语
利用策略路由构造了一个隔离网络环境,而且对于主体程序是非侵入性的,对于复杂的同网段通信非常优必要 😃
文章讨论了在Linux主机上遇到同网段地址的问题,介绍了策略路由作为解决方案,强调了其非侵入性和在复杂同网段通信中的优势。同时提到了其他选项如命名空间和VRF的局限性。
1421

被折叠的 条评论
为什么被折叠?



