• 请不要在回答技术问题时复制粘贴 AI 生成的内容
whx20202
V2EX  ›  程序员

怎么写才能让 iptables 的 nat 不转发我的某些请求

  •  
  •   whx20202 · Feb 18, 2017 · 2877 views
    This topic created in 3381 days ago, the information mentioned may be changed or developed.

    我搞了个软路由,
    eth0 是 WAN 口,也就是上行链路
    eth1 是 LAN 口,开启 DHCP 开启各项服务, 192.168.3.233

    网上教程让开启 NAT 输入下面一句话:

    iptables -t nat -A POSTROUTING -s 192.168.3.0/24 -o eth0 -j MASQUERADE

    游戏电脑接了 eth1 ,现在可以正常上网,没什么问题

    可是我有个疑问:
    比如我的 DNS 请求,是不是也要通过 NAT 从 eth1 转到 eth0 才能响应呢?

    那如果有些服务我不想在 eth0 上,我就不想让 eth1 给我做 NAT ,那个 iptables 规则怎么写啊?

    我不知道是走 filter 的 forward 还是走 nat 表的 prerouting

    6 replies    2017-02-19 09:43:16 +08:00
    privil
        1
    privil  
       Feb 18, 2017
    怎么说呢,你的 dns 请求是外部的话,肯定走 nat ,当你请求是内部的话压根就不过 nat 表,你去看看表链的图示,理解一下就知道了。想重定向的话是 dnat ,在 nat 表的 prerouting 做。
    whx20202
        2
    whx20202  
    OP
       Feb 18, 2017
    @privil 我的网关上 53 端口就开了一个 dnsmasq ,它自己又请求了一个上游的 chinaDNS

    您的意思是如果请求的就是 网关地址本身,是不走 NAT 的对吧
    whx20202
        3
    whx20202  
    OP
       Feb 18, 2017
    @privil
    好像确实是这样

    C:\Users\ruirui>tracert 192.168.3.233

    通过最多 30 个跃点跟踪到 192.168.3.233 的路由

    1 5 ms 4 ms 4 ms 192.168.3.233

    跟踪完成。

    C:\Users\ruirui>tracert 8.8.8.8

    通过最多 30 个跃点跟踪
    google-public-dns-a.google.com [8.8.8.8] 的路由:

    1 5 ms 4 ms 4 ms 192.168.3.233
    2 5 ms 5 ms 5 ms 192.168.2.1
    3 6 ms 5 ms 7 ms 192.168.1.1
    privil
        4
    privil  
       Feb 18, 2017
    @whx20202 你请求的是 192.168.3.233 的 53 端口, prerouting 过后,就是路由判断,请求是本机,就进入本机 input 了,不是本机,就是去 forward 了
    Sh888
        5
    Sh888  
       Feb 18, 2017
    你的命令里不是写着-s -o 么?
    julyclyde
        6
    julyclyde  
       Feb 19, 2017
    首先你要知道,“是否转发”不是 NAT 控制的,而是 FILTER 控制的
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1346 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 17:08 · PVG 01:08 · LAX 10:08 · JFK 13:08
    ♥ Do have faith in what you're doing.