所以我正在编写一个程序,用命名空间隔离自己,但我仍然坚持让网络按照我的意愿工作。我打算通过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。
感谢任何帮助,我一直试图这样做几个小时,我已经耗尽了所有资源。