V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
1314258
V2EX  ›  问与答

请教一个 iptables 的问题。

  •  
  •   1314258 · 2014-05-14 14:44:00 +08:00 · 3242 次点击
    这是一个创建于 3848 天前的主题,其中的信息可能已经有所发展或是发生改变。
    为了防止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 条回复    2014-06-18 16:48:15 +08:00
    madeye
        1
    madeye  
       2014-05-14 14:50:47 +08:00
    -A OUTPUT
    1314258
        2
    1314258  
    OP
       2014-05-14 15:13:03 +08:00
    @madeye 笨啊我。试了几下,都不成功。厚着脸皮再问一次好了。我第一条写的,是由于什么原因失败的呢?
    madeye
        3
    madeye  
       2014-05-14 15:39:56 +08:00
    重新看了一下你的帖子,你是在路由器上做 NAT?那么第二个方案就是正确的,因为经过 DNAT 和 REDIRECT 后目的地址变了,但源地址依然是 10.0.0.0/24
    1314258
        4
    1314258  
    OP
       2014-05-14 15:50:43 +08:00
    @madeye 单机上,但我从另外一个机器拨了一个vpn过去。
    madeye
        5
    madeye  
       2014-05-14 16:23:12 +08:00
    @1314258 这种情况和在路由器上做NAT是一致的。
    1314258
        6
    1314258  
    OP
       2014-05-14 16:28:11 +08:00
    @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  
       2014-05-14 16:33:04 +08:00
    @1314258 第一个评论里面的那个说错了,你这个情况用PREROUTING是正确的。
    bearice
        8
    bearice  
       2014-05-14 16:37:22 +08:00
    要是想要劫持会话的话应该用TPROXY,https://www.kernel.org/doc/Documentation/networking/tproxy.txt
    stevenfish
        9
    stevenfish  
       2014-05-14 17:24:04 +08:00
    什么原因失败没说啊,收不收到udp的reply啊?
    stevenfish
        10
    stevenfish  
       2014-05-14 17:27:55 +08:00
    对了,你如果listen 10.0.0.1:5353这port不是对外打开的啊,这只有你VPN连上才有吧
    1314258
        11
    1314258  
    OP
       2014-05-14 17:56:22 +08:00
    @bearice 应该不算是劫持吧。只是把数据重新redirect 到transparent的端口。


    @stevenfish 是的,10.0.0.1就不对外了。绑定5353之前,需要拨号一次来建立10.0.0.1这个ip
    stevenfish
        12
    stevenfish  
       2014-05-14 18:36:46 +08:00
    @1314258 那问题不就解决了吗
    shierji
        13
    shierji  
       2014-05-24 16:47:59 +08:00
    iptables我根本就是弱的一逼啊

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

    然后被污染的域名通过dnsmasq转发给pdns
    shierji
        14
    shierji  
       2014-05-24 16:48:58 +08:00
    刚才写的有问题。。应该是这样的:

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

    被污染的域名通过dnsmasq转发给pdnsd
    julyclyde
        15
    julyclyde  
       2014-06-18 16:48:15 +08:00
    PREROUTING本质上是转发处理
    OUTPUT是本机的

    这两种都得考虑到
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4790 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 01:06 · PVG 09:06 · LAX 17:06 · JFK 20:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.