转发的数据包不包含其原始IP地址

我有一台拥有2台虚拟机的专用机器。 主机A(路由器):

eth0 192.0.2.8 eth1 10.0.0.1 

我有

 Host B(Application Server) eth0 10.0.0.2 

我的IPTablesconfiguration是:

 modprobe iptable_nat echo 1 > /proc/sys/net/ipv4/ip_forward iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE iptables -A FORWARD -i eth1 -j ACCEPT iptables -A FORWARD -i eth2 -j ACCEPT 

和我使用的示例防火墙将是

 iptables -t nat -A PREROUTING -p tcp -i eth0 -d 192.0.2.8 --dport 25565 -j DNAT --to 10.0.0.2:25565 

在我所有的应用程序日志中,他们说所有请求都来自我的外部IP 192.0.2.8

我能做些什么来使数据包显示原始源地址而不是192.0.2.8?

你需要做的是删除NAT,而不是端口转发到您服务的每个端口的代理服务器。

然后,代理服务器将请求发送到请求中指定的域的相应服务器。 例如,对于端口80,将Apache2设置为反向代理,如本IBM文章中所述 。

为电子邮件设置一个中继主机。 对于其他服务,您将需要find适当的代理。