用策略路由构造隔离环境解决同网段通信

引子

以前对一个主机内几张网卡上出现同网段地址挺不以为然,因为在默认状态下,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功能修改数据包标记,并辅助策略路由处理,就可以将数据包隔离开

结束语

利用策略路由构造了一个隔离网络环境,而且对于主体程序是非侵入性的,对于复杂的同网段通信非常优必要

你可能感兴趣的:(网络,策略路由,网络隔离技术)