为什么我的vlan接口不能在linux网络命名空间中ping父接口?

时间:2016-08-09 13:47:47

标签: linux networking virtualization vlan linux-namespaces

所以我正在编写一个程序,用命名空间隔离自己,但我仍然坚持让网络按照我的意愿工作。我打算通过Tor路由我的应用程序,这是一个在网络接口上公开SocksPort的Socks5代理。

我的应用程序需要工作时,它已经与虚拟机隔离并且只有主机路由,主机上的Tor绑定说vboxnet1(192.168.56.1:9051),VM内部的eth0是(192.168.56.101),然后我有一个网络命名空间。因此,我不能简单地使用veth对并将Tor绑定到父命名空间上的veth,因为Tor甚至不在虚拟机中。所以最终,我需要在192.168.56.1:9051上从命名空间到父命名空间中的eth0(192.168.56.101)连接到SocksPort。但是,当我不在虚拟机中时,以及当Tor在父命名空间中时(而不是具有父命名空间的VM的主机),我使用的解决方案也应该工作。

这只是为什么veth对等为什么对我不起作用的背景,一般来说我想做什么,我的问题更具体;

我按照以下链接的指南进行了操作:http://blog.scottlowe.org/2014/03/21/a-follow-up-on-linux-network-namespaces/

Linux 3.16上的

我现在就会这样做并显示我正在输入的确切命令:

ip netns添加蓝色

ip link add link eth0 name eth0.100 type vlan id 100

此时“ip -d link”显示以下内容(MAC已编辑出来);

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
    link/ether promiscuity 0 

352: eth0.100@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default 
    promiscuity 0 
    vlan protocol 802.1Q id 100 <REORDER_HDR> 

ip link set eth0.100 netns blue

我注意到蓝色命名空间中的ip -d链接具有以下输出

ip netns exec blue ip -d link

1: lo: <LOOPBACK> mtu 65536 qdisc noop state DOWN mode DEFAULT group default 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 promiscuity 0 

352: eth0.100@if2: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default 
    promiscuity 0 
    vlan protocol 802.1Q id 100 <REORDER_HDR> 

请注意,它现在是eth0.100@if2而不是@ eth0,我不确定这是否相关。

我提出了环回,这实际上不在我提到的指南中,但我相信是必需的:

ip netns exec blue ip link set dev lo up

ip netns exec blue ip addr add 192.168.56.102/24 dev eth0.100

ip netns exec blue ip link set eth0.100 up

ip netns exec blue ifconfig现在显示(略微编辑出来)

eth0.100  Link encap:Ethernet   
          inet addr:192.168.56.102  Bcast:0.0.0.0  Mask:255.255.255.0
          Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:33 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 B)  TX bytes:5598 (5.5 KB)
来自父命名空间的

ifconfig显示

eth0      Link encap:Ethernet  
          inet addr:192.168.56.101  Bcast:192.168.56.255  Mask:255.255.255.0

但是当我尝试从命名空间ping时,按照指南;

ip netns exec blue ping -c 4 192.168.56.101

PING 192.168.56.101(192.168.56.101)56(84)字节数据。

从192.168.56.102 icmp_seq = 1目标主机无法访问

总是无法访问,如果我尝试192.168.56.1也是一样,这最终是我想要连接的(它是主机上的vboxnet,可以从vm中的eth0路由到,但是即使将vlan接口添加到命名空间,我甚至无法从命名空间路由到eth0。

感谢任何帮助,我一直试图这样做几个小时,我已经耗尽了所有资源。

0 个答案:

没有答案