我有一台有 5 个 ipv4 的服务器
95.xy1
95.xy2
95.xy3
95.xy4
95.xy5
我只需要将来自端口 80 的传入流量转发到端口 8080(和相同的 IP),因此
95.xy1:80 --> 95.xy1:8080
95.xy2:80 --> 95.xy2:8080
95.xy3:80 --> 95.xy3:8080
95.xy4:80 --> 95.xy4:8080
95.xy5:80 --> 95.xy5:8080
除了 iptables 之外,是否可以使用 nginx(反向代理)实现类似功能?主要问题是 Ubuntu18 的每个 ip 都使用 nginx 的“不同”服务器,将流量路由到特定的 Ubuntu 用户。任何指南/帮助/示例都将不胜感激
答案1
目标DNAT
可以仅重写目标端口号,而无需改变目标 IP 地址。
iptables -t nat -A PREROUTING --dst 95.x.y.1 -p tcp --dport 80 -j DNAT --to :8080
iptables -t nat -A PREROUTING --dst 95.x.y.2 -p tcp --dport 80 -j DNAT --to :8080
iptables -t nat -A PREROUTING --dst 95.x.y.3 -p tcp --dport 80 -j DNAT --to :8080
iptables -t nat -A PREROUTING --dst 95.x.y.4 -p tcp --dport 80 -j DNAT --to :8080
iptables -t nat -A PREROUTING --dst 95.x.y.5 -p tcp --dport 80 -j DNAT --to :8080
回复的数据包应该通过同一个 Linux 机器进行反向转换。
要排除故障,请使用tcpdump
和conntrack
工具。