1314258
V2EX  ›  问与答

请教一个 iptables 的问题。

  •  
  •   1314258 · May 14, 2014 · 3966 views
    This topic created in 4390 days ago, the information mentioned may be changed or developed.
    为了防止dns污染,在本机运行了一个解析dns的程序。listen 127.0.0.1:5353
    想让10.0.0.0/24的用户使用。

    iptables -t nat -A PREROUTING -p udp --dport 53 -s 10.0.0.0/24 -j DNAT --to-destination 127.0.0.1:5353

    失败。

    解决方案是listen的时候 10.0.0.1:5353或者直接0.0.0.0:5353
    然后iptables -t nat -A PREROUTING -s 10.0.0.0/24 -p udp --dport 53 -j REDIRECT --to-ports 5353

    因为不想5353暴露在外,所以想按照第一种方式去执行,不知道问题出在什么地方呢?

    请教了。怕没人回答,@ 几个人吧。望赐教。

    @madeye @shierji @letitbesqzr @sheaven @julyclyde @ovear
    15 replies    2014-06-18 16:48:15 +08:00
    madeye
        1
    madeye  
       May 14, 2014
    -A OUTPUT
    1314258
        2
    1314258  
    OP
       May 14, 2014
    @madeye 笨啊我。试了几下,都不成功。厚着脸皮再问一次好了。我第一条写的,是由于什么原因失败的呢?
    madeye
        3
    madeye  
       May 14, 2014
    重新看了一下你的帖子,你是在路由器上做 NAT?那么第二个方案就是正确的,因为经过 DNAT 和 REDIRECT 后目的地址变了,但源地址依然是 10.0.0.0/24
    1314258
        4
    1314258  
    OP
       May 14, 2014
    @madeye 单机上,但我从另外一个机器拨了一个vpn过去。
    madeye
        5
    madeye  
       May 14, 2014
    @1314258 这种情况和在路由器上做NAT是一致的。
    1314258
        6
    1314258  
    OP
       May 14, 2014
    @madeye 如果是OUTPUT,那怎么写?试验几个规则了。没办法搞出来。
    其实就是把 -s 10.0.0.0/24 -p udp --dport 53 -j REDIRECT 127.0.0.1:5353

    但redirect 貌似不能--to-destination
    madeye
        7
    madeye  
       May 14, 2014
    @1314258 第一个评论里面的那个说错了,你这个情况用PREROUTING是正确的。
    bearice
        8
    bearice  
       May 14, 2014
    要是想要劫持会话的话应该用TPROXY,https://www.kernel.org/doc/Documentation/networking/tproxy.txt
    stevenfish
        9
    stevenfish  
       May 14, 2014
    什么原因失败没说啊,收不收到udp的reply啊?
    stevenfish
        10
    stevenfish  
       May 14, 2014
    对了,你如果listen 10.0.0.1:5353这port不是对外打开的啊,这只有你VPN连上才有吧
    1314258
        11
    1314258  
    OP
       May 14, 2014
    @bearice 应该不算是劫持吧。只是把数据重新redirect 到transparent的端口。


    @stevenfish 是的,10.0.0.1就不对外了。绑定5353之前,需要拨号一次来建立10.0.0.1这个ip
    stevenfish
        12
    stevenfish  
       May 14, 2014
    @1314258 那问题不就解决了吗
    shierji
        13
    shierji  
       May 24, 2014
    iptables我根本就是弱的一逼啊

    我现在的做法是在openwrt上跑一个DNS用tcp查询上游国外DNS监听5353。

    然后被污染的域名通过dnsmasq转发给pdns
    shierji
        14
    shierji  
       May 24, 2014
    刚才写的有问题。。应该是这样的:

    在openwrt上跑一个pdns用tcp查询上游国外DNS然后在本机监听5353。

    被污染的域名通过dnsmasq转发给pdnsd
    julyclyde
        15
    julyclyde  
       Jun 18, 2014
    PREROUTING本质上是转发处理
    OUTPUT是本机的

    这两种都得考虑到
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5394 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 80ms · UTC 08:00 · PVG 16:00 · LAX 01:00 · JFK 04:00
    ♥ Do have faith in what you're doing.