我可能使用了错误的工具,但网络名称空间看起来似乎非常合适.

我有3个程序无法指定监听接口或地址(只能监听“0.0.0.0”).我想把这些服务放在netns中,他们只看到内部地址(即192.168.3.0/24),阻止他们收听外部流量.

我创建了一个名为“Local”的netn并创建了一个跨越主要和本地ns的veth,如:

ip link add veth1 type veth peer name vpe1

我将veth1与其他2个物理接口一起绑定到本地网桥(br0). “brctl show br0”现在显示3个接口:eth0,eth5和veth1.


接下来,我在本地网上将vpe1的IP设置为“129”.测试显示我能够从其他主机和Local-ns中的bash-shell ping它,我只能ping本地网络上的主机.

但是,progs(一个是xinetd)是为服务器的本地网络地址(桥接地址为192.168.3.1)提供服务.在“仅限本地”命名空间中使用不同的IP不能使它们响应“服务器”上的服务.

尝试其他一些选项 – 我首先尝试在其命名空间内为’vpe1’提供相同的主机名,然后尝试提供相同的IP ……没有任何效果或产生影响.

从概念上讲,我认为有一个子网复制主名称空间
然后从外部接口中删除外部接口 – 让那些proc只看到本地接口和服务请求,就像他们看到所有接口之前一样(并且不在命名空间中).

虽然这似乎是一个单独的命名空间为一组进程提供服务器接口的不同逻辑视图的理想位置,但我没有看到如何让netns只提供不同的“视图”(使用’bind /这些“客户”.

这是否可以使用linux的网名称空间?或者他们遗漏了什么可以允许这个?如果名称空间不提供这种类型的“分段”,是否可以在没有大量iptable路由的情况下提供它来模拟主命名空间中的那些客户端程序?

谢谢!
一个一个☆

解决方法:

简而言之,Linux网络命名空间是孤立的IP堆栈.忘记网络名称空间之类的虚拟事物,只要问问自己:如何使用路由器,主机,桥接盒和以太网电缆解决我的任务?如果您有物理设置,那么它几乎可以自然地转换为虚拟双胞胎.但是不要忘记数据包过滤规则,它们可能是关键.

我不完全明白你的任务是什么.但有一件事引起了我的注意,因为它可能根本不是你想要的:一个连接物理网络接口的桥接器,以及另一个网络命名空间(IP栈)的veth电缆.这意味着完全第2层访问任何人,因为桥. IP地址在这个级别上并不重要.您可以完全直接访问网络命名空间.这本身并没有错(事实上,我个人知道一些非常有用的情况),但这是你想要的吗?

标签: linux, namespace

相关文章推荐

添加新评论,含*的栏目为必填