团队,
我们已经配置了 IP 表,将来自 eth1(公共 IP xxxx)接口的请求转发到其他服务器。我们能够转发所有请求,但问题是服务器 192.168.254.X 上的原始公共 IP(用户的源 IP)丢失
请参阅以下配置:
# Generated by iptables-save v1.6.0 on Wed Sep 13 12:19:51 2017
*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [8:827]
:POSTROUTING ACCEPT [0:0]
-A PREROUTING -d 192.168.254.142/32 -i eth1 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.254.89
-A PREROUTING -d 192.168.254.142/32 -i eth1 -p tcp -m tcp --dport 443 -j DNAT --to-destination 192.168.254.89
-A POSTROUTING -o eth1 -j MASQUERADE
-A POSTROUTING -o eth0 -j MASQUERADE
COMMIT
# Completed on Wed Sep 13 12:19:51 2017
# Generated by iptables-save v1.6.0 on Wed Sep 13 12:19:51 2017
*filter
:INPUT ACCEPT [479:52143]
:FORWARD ACCEPT [41:1856]
:OUTPUT ACCEPT [417:79506]
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
-A FORWARD -i eth0 -o eth1 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
COMMIT
# Completed on Wed Sep 13 12:19:51 2017
请查找 IP 规则列表的输出。
0: from all lookup local
1000: from 192.168.254.142 lookup eth1rt
1000: from 192.168.254.89 lookup eth1rt
32766: from all lookup main
32767: from all lookup default
请更新在服务器 254.89 上丢失源 IP 的问题。
任何优先帮助都会对您有帮助。
谢谢。
答案1
配置中的规则-j MASQUERADE
指示内核将数据包的源 IP 地址重写为数据包退出系统时使用的接口上的 IP 地址(也称为源 NAT)。
如果您不想这样做,则需要删除这些规则。
但请注意,当您不使用 SNAT(而仅使用目标 NAT 重新路由数据包)时,您必须具有正确的路由(在服务器 192.168.254.89 上)才能使连接按预期工作。