【问题标题】: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

      【讨论】:

        猜你喜欢
        • 2014-07-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-03-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多