所以我正在编写一个程序,用命名空间隔离自己,但我仍然坚持让网络工作,因为我想要它 . 我打算通过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,我不确定这是否相关 .
我提出了loopback,这实际上不在我提到的指南中,但我认为是必需的:
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路由到,但我甚至不能从命名空间路由到eth0,即使将vlan接口添加到命名空间也是如此 .
感谢任何帮助,我一直试图这样做几个小时,我几乎耗尽了每一个资源 .