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

2017-02-18 13:20:46 +08:00
 whx20202

我搞了个软路由,
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

2377 次点击
所在节点    程序员
6 条回复
privil
2017-02-18 13:54:44 +08:00
怎么说呢,你的 dns 请求是外部的话,肯定走 nat ,当你请求是内部的话压根就不过 nat 表,你去看看表链的图示,理解一下就知道了。想重定向的话是 dnat ,在 nat 表的 prerouting 做。
whx20202
2017-02-18 14:00:44 +08:00
@privil 我的网关上 53 端口就开了一个 dnsmasq ,它自己又请求了一个上游的 chinaDNS

您的意思是如果请求的就是 网关地址本身,是不走 NAT 的对吧
whx20202
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
2017-02-18 14:04:40 +08:00
@whx20202 你请求的是 192.168.3.233 的 53 端口, prerouting 过后,就是路由判断,请求是本机,就进入本机 input 了,不是本机,就是去 forward 了
Sh888
2017-02-18 14:38:40 +08:00
你的命令里不是写着-s -o 么?
julyclyde
2017-02-19 09:43:16 +08:00
首先你要知道,“是否转发”不是 NAT 控制的,而是 FILTER 控制的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/341381

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX