我想要实现的目标:
通过(1)测试/配置所有NAT场景(完整锥,端口受限等)。使用iptables(2)以太网接口(3)环回接口(仅使用一台机器)
我在Linux BOX中运行一个VM,并执行以下配置:
Linux BOX IP是:192.168.0.4
Linux Box Virtual Box 网关IP是:192.168.56.1
在Linux Box上运行Stun Server:192.168.56.1
(主要)和192.168.0.4
(辅助)
在127.0.0.1:2000
上运行虚拟机上的Stun客户端(在Linux服务器上运行),并配置iptables规则将环回接口流量转发到以太网接口(192.168.56.102
),反之亦然。
我应该能够通过iptables / ethernet / loopback接口配置每个NAT模拟,其中运行在主机上的STUN服务器和运行在VM上的Stun客户端,它应该告诉类型的NAT
iptables无法处理数据包输入/输出到环回接口
socket sendto 调用失败,错误:“错误22无效争论”因为socket已与127.0.0.1:2000
绑定,目标地址为:192.168.56.1
[Loopback-Interface(127.0.0.1 :2000 / *Running STUN Client*/ VM) -->[*IPTABLES RULES TO/FROM*] <-- Ethernet-Interface(VM -- 192.168.56.102:2000) ==>|| ==> HOST(Gateway - 192.168.56.1:3478 - *Running STUN Server*)] ::
示例规则::
sudo iptables -t nat -A POSTROUTING -o eth0 -p udp --source 127.0.0.1 --sport 2000 -j SNAT --to-source 192.168.56.102
sudo iptables -t nat -A POSTROUTING -o eth0 -p tcp --source 127.0.0.1 --sport 2001 -j SNAT --to-source 192.168.56.102
sudo iptables -t nat -A PREROUTING -i eth0 -p udp --destination 192.168.56.102 --dport 2000 -j DNAT --to-destination 127.0.0.1
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --destination 192.168.56.102 --dport 2000 -j DNAT --to-destination 127.0.0.1
看起来iptables不会从环回接口中选择数据包
如果有任何人可以提供帮助,请告诉我。