使用Linux的network namespace低开销验证桥接独立IP

问题

目前遇到一个问题,就是有一个网关上,同一个二层网络中,有两个独立的网段,其中一个网段使用DHCP方式进行管理,另一个网段可以通过手工配置IP进行访问。

那么如何在现有的Linux机器上,低成本的去验证另一个网段上的IP呢?

方案

经过考虑,可以使用Linux的network namespace来进行验证。它的原理就像从网桥中独立引出一个网线,插到另一个独立的网络环境中。具体操作如下,基于GPT3.5给出的信息并进行调整。

创建 veth pair

连接 veth0 到 br0

将 veth1 移动到新的 network namespace (ns1)

GPT3.5一开始没有给出添加ns1的命令,这个是事后调整增加的

进入 ns1 network namespace

在 ns1 中配置 veth1

验证

接下来,在ns1中的bash中验证网络是否正常,不过存在一点点问题。就是本来希望通过curl 访问域名进行验证,发现域名解析走的是ns1中的内部监听的端口,因此无法正常访问。

所以最后采用了在/etc/hosts文件中固定域名的IP的方法,进行了验证。

最终发现第二个网段的ping畅通,向外访问也正常走了对应的线路。

如果长期使用,还是使用完整docker会好一些,成本并不高,而且域名解析等操作也更方便。

参考

  • chatGPT-3.5

发表评论

为防机器,验证码请直接输入4个数字1

*