尝试设置一个小型 AWS Box(Debian Linux)作为路由器,接收公共流量(eth0 - 单个网络接口)并将其重定向到不同的公共 IP 地址、不同的端口,然后将流量发送回客户端。
端口映射(TCP 和 UDP): 源 IP、源端口、目标 IP、目标端口
全部, 27106,168.119.149.150,27015
全部, 8000,168.119.149.150,7777
全部, 8001,168.119.149.150,7778
我想要实现的目标是:
贩运: 公共 IP(客户端应用程序)[27106,8000,8001] -> Linux Box -> 目标公共服务器 (AA) [27015,7777,7778]
回程流量: 公共服务器 (AA) [27015,7777,7778] -> Linux Box -> 公共 IP (客户端应用程序) [27106,8000,8001]
/etc/iptables/rules.v4 当前为:
*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A PREROUTING -p tcp -m tcp --dport 27106 -j DNAT --to-destination 168.119.149.150:27015
-A PREROUTING -p udp -m udp --dport 27106 -j DNAT --to-destination 168.119.149.150:27015
-A PREROUTING -p tcp -m tcp --dport 8000 -j DNAT --to-destination 168.119.149.150:7777
-A PREROUTING -p udp -m udp --dport 8000 -j DNAT --to-destination 168.119.149.150:7777
-A PREROUTING -p tcp -m tcp --dport 8001 -j DNAT --to-destination 168.119.149.150:7778
-A PREROUTING -p udp -m udp --dport 8001 -j DNAT --to-destination 168.119.149.150:7778
-A POSTROUTING -p tcp -m tcp --dport 27015
-A POSTROUTING -p udp -m udp --dport 27015
-A POSTROUTING -p tcp -m tcp --dport 7777
-A POSTROUTING -p udp -m udp --dport 7777
-A POSTROUTING -p tcp -m tcp --dport 7778
-A POSTROUTING -p udp -m udp --dport 7778
COMMIT
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
COMMIT
返回cat /proc/sys/net/ipv4/conf/eth0/forwarding
1
AWS 防火墙端点配置为接受所有流量 [TCP/UDP] - 所以不是那样,我只能认为我没有错误地设置规则文件?
问题是,它似乎没有像我期望的那样工作——有人能指出我做错了什么吗?
答案1
为了安全起见,AWS 不允许这样做。
Amazon EC2 实例无法发送伪造的网络流量。AWS 控制的基于主机的防火墙基础设施不允许实例发送源 IP 或 MAC 地址不是自己的流量。
您可以尝试 nat 出站流量。