1

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

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

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

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

在 Linux 3.16 上

我将立即执行并显示我正在输入的确切命令:

ip netns 添加蓝色

ip 链接添加链接 eth0 名称 eth0.100 类型 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 链接设置 eth0.100 netns 蓝色

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

ip netns exec 蓝色 ip -d 链接

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 路由到,但我什至不能从命名空间路由到 eth0,即使将 vlan 接口添加到命名空间)。

感谢您提供的任何帮助,我已经尝试了几个小时,并且几乎用尽了所有资源。

4

0 回答 0