V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
whx20202
V2EX  ›  程序员

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

  •  
  •   whx20202 · 2017-02-18 13:20:46 +08:00 · 2379 次点击
    这是一个创建于 2836 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我搞了个软路由,
    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 条回复    2017-02-19 09:43:16 +08:00
    privil
        1
    privil  
       2017-02-18 13:54:44 +08:00
    怎么说呢,你的 dns 请求是外部的话,肯定走 nat ,当你请求是内部的话压根就不过 nat 表,你去看看表链的图示,理解一下就知道了。想重定向的话是 dnat ,在 nat 表的 prerouting 做。
    whx20202
        2
    whx20202  
    OP
       2017-02-18 14:00:44 +08:00
    @privil 我的网关上 53 端口就开了一个 dnsmasq ,它自己又请求了一个上游的 chinaDNS

    您的意思是如果请求的就是 网关地址本身,是不走 NAT 的对吧
    whx20202
        3
    whx20202  
    OP
       2017-02-18 14:02:47 +08:00
    @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  
       2017-02-18 14:04:40 +08:00
    @whx20202 你请求的是 192.168.3.233 的 53 端口, prerouting 过后,就是路由判断,请求是本机,就进入本机 input 了,不是本机,就是去 forward 了
    Sh888
        5
    Sh888  
       2017-02-18 14:38:40 +08:00
    你的命令里不是写着-s -o 么?
    julyclyde
        6
    julyclyde  
       2017-02-19 09:43:16 +08:00
    首先你要知道,“是否转发”不是 NAT 控制的,而是 FILTER 控制的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   885 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 20:52 · PVG 04:52 · LAX 12:52 · JFK 15:52
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.