我在默认名称空间和另一个命名空间RoutableNS之间设置了一个虚拟以太网对,如下所示:
-------------- --------------
- veth0 - -------------- veth1 -
- 10.5.1.1 - - 10.5.1.2 -
-------------- --------------
default NS RoutableNS我可以通过接口RoutableNS在命名空间veth1中切换外部世界,但是当SNAT (或伪装)传入流量达到10.5.1.1 (或10.5.1.2)时,veth接口将什么也不会出现。
我对tun设备也做了同样的尝试,我发现在IP不能向外部世界路由时(在默认名称空间中),不可能伪装成tun设备。
所以我有两个问题:
发布于 2017-06-21 16:45:05
这是完全可能的伪装或SNAT的设备,其IP是不可路由的外部世界。是否在网络名称空间中也没有什么区别。
您很方便地忘记告诉我们您到底尝试了什么,但是请记住,SNAT和假冒伪劣仅在POSTROUTING表中工作(而DNAT只在PREROUTING表中工作),这一事实已经有了很好的文档说明,您不能避免在iptable命令中明确地提到这个事实。
这意味着SNAT将发生在数据包离开接口之前的最后一步,而DNAT将作为数据包从外部进入接口的非常早期的步骤发生。
所以通常的设置是路由器(主机或名称空间) NATs in从一边传入,到另一边的所有东西:
+---------------+
| |
masq'ed IP --<--| eth0 eth1 |--<-- original IP
10.0.0.99 | | 10.0.0.1
+---------------+
Host or Namespace您需要相应的DNAT来处理传入连接,因此:
iptables -t nat -A POSTROUTING -o eth0 -s 10.0.0.1/32 -j SNAT --to 10.0.0.99
iptables -t nat -A PREROUTING -i eth0 -d 10.0.0.99/32 -j DNAT --to 10.0.0.1您并没有确切地说明您想要将什么is伪装成什么is,但是如果您的主名称空间充当这样一个路由器,并且您希望将"RouteableNS“(即10.5.1.2 )掩蔽到外部世界,那么通过使用主命名空间的传出if就可以做到这一点。
https://unix.stackexchange.com/questions/371963
复制相似问题