4

我想要实现的目标:

通过 (1) 使用 iptables (2) 以太网接口 (3) 环回接口(仅使用一台机器)测试/配置所有 NAT 场景(全锥、端口受限等)

设置以下配置:

我在 Linux BOX 中运行一个虚拟机,并执行了以下配置:

Linux BOX IP 为:192.168.0.4

Linux Box Virtual Box网关 IP 为:192.168.56.1

在 Linux Box上运行绑定的 Stun 服务器:(192.168.56.1主要)和192.168.0.4(次要)

在 VM 上运行 Stun 客户端(在 Linux 服务器上运行)127.0.0.1:2000,并配置 iptables 规则以将环回接口流量转发到以太网接口(192.168.56.102),反之亦然。

预期结果

我应该能够通过 iptables/ethernet/loopback 接口配置每个 NAT 模拟,STUN 服务器在主机上运行,​​Stun 客户端在 VM 上运行,它应该告诉NAT 的类型

实际结果

iptables 对输入/输出到环回接口套接字的数据包不做任何事情sendto调用失败并出现错误:“错误 22 无效争论”,因为套接字已绑定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 没有从环回接口挑选数据包

参考资料:http ://www.linuxquestions.org/questions/linux-networking-3/iptables-redirect-127-0-0-1-to-192-168-1-113-a-818817/

请让我知道是否有任何机构可以提供帮助。

4

0 回答 0