【问题标题】:IPTables forward traffic without hiding source IPIPTables 转发流量而不隐藏源 IP
【发布时间】:2014-03-29 18:49:35
【问题描述】:
我正在尝试将云服务器设置为网关,它将所有流量转发到我的第二个云服务器。问题是目标服务器(第二个云)只能看到第一个云服务器的 IP 地址。
是否可以保留源 IP,以便显示连接到第一台云服务器的 IP 地址。我已经尝试删除 MASQUERADE,但云 #1 -> 云 #2 之间的连接不再正常工作。
-A FORWARD -p tcp -m tcp --dport 25565 -j ACCEPT
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
-A PREROUTING -p tcp -m tcp --dport 25565 -j DNAT --to-destination DESTINATIONIP:PORT
-A POSTROUTING -j 伪装
它适用于此设置,但不显示源 IP。您知道如何不隐藏连接到第一台云服务器的 IP 吗?
谢谢
【问题讨论】:
标签:
iptables
forward
gateway
【解决方案1】:
使用 -A POSTROUTING -j MASQUERADE 所有传出转发的数据包都将具有相应传出接口的源 IP。
您应该更具体地了解您伪装/SNAT 的数据包。
【解决方案2】:
云 1 和云 2 需要在同一个网络中,VPN 就可以了
在 cloud1 上:
-A FORWARD -p tcp -m tcp --dport 25565 -j ACCEPT
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
-A PREROUTING -p tcp -m tcp --dport 25565 -j DNAT --to-destination DESTINATIONIP:PORT
-A POSTROUTING -j MASQUERADE
在cloud2上,我们用1标记想要的数据包,eth0是默认网关:
iptables -t mangle -A OUTPUT -o eth0 -p tcp --sport 25565 -j MARK --set-mark 1
你需要在cloud2上操作路由表:
编辑/etc/iproute2/rt_tables,添加行
1 http
这里操作,tun0是cloud2上的vpn接口:
ip route add default via ip_vpn_cloud1 dev tun0 table http
ip rule add from all fwmark 1 table http
确保 net.ipv4.conf.all.rp_filter 和 net.ipv4.conf.default.rp_filter 在 /etc/sysctl.conf 中设置为 1