【问题标题】:iptables redirect all requests to localhostiptables 将所有请求重定向到 localhost
【发布时间】:2013-08-16 21:18:41
【问题描述】:

我想将对特定 ip 的所有请求重定向到 localhost (127.0.0.1)。我需要它,因为我有一个服务器的本地副本并且想要测试一些东西

如何编写 iptables 规则来做到这一点?

谢谢

【问题讨论】:

    标签: debian iptables hosts


    【解决方案1】:

    您的意思是“我希望从机器 A 到机器 B 的所有请求都重定向到机器 A”吗?如果是这样,我相信您正在寻找的命令是

    sudo iptalbes -t nat -A PREROUTING -d <DESTINATION_IP> -p <PROTOCOL> --dport <DESTINATION_PORT_NUMBER> -j DNAT --to 127.0.0.1
    

    【讨论】:

    • 对不起.. 我的错。您还需要启用 IP 转发。回声 1 > /proc/sys/net/ipv4/ip_forward
    • 好的。那我就不知道了!对此感到抱歉.. :)
    【解决方案2】:
    iptables -t mangle -A PREROUTING -p tcp ''otherconditions'' -j TPROXY --on-port ''dst''
    

    引用手册页:此目标仅在 mangle 表中有效,在 PREROUTING 链中 以及仅从此链调用的用户定义链。它重新 将数据包重定向到本地套接字而不更改数据包头 以任何方式。

    【讨论】:

      【解决方案3】:

      我知道这是一个相当古老的线程......但仍然没有答案。所需的主要更改是附加一个 OUTPUT 规则而不是 PREROUTING 规则。

      来自手册页:

      nat:
          This table is consulted when a packet that creates a new connection is encountered.  It consists of three built-ins: PREROUTING (for altering packets as soon as they come in), OUTPUT (for altering locally-generated packets  before  routing),  and  POSTROUTING  (for altering packets as they are about to go out).
      

      所以,这可能是所需的命令:

      iptables -t nat -A OUTPUT -p tcp --src <SOURCE PORT TO BE REDIRECTED> --dst 127.0.0.1 --dport 9090 -j REDIRECT --to-ports 9090
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-09-30
        • 2013-02-15
        • 2016-10-23
        • 1970-01-01
        • 1970-01-01
        • 2017-12-19
        • 2012-12-17
        • 2013-11-26
        相关资源
        最近更新 更多