一个关于路由器 iptables 规则的问题

2017-05-13 23:22:22 +08:00
 neverwintern
我的路由器是 AC66U,merlin 固件,DHCP 模式 PPPOE 上网,可以用 telnet 路由器的 linux 系统。按理说,所有外出的包都要经过路由的转发,但是我在终端上执行以下命令:
iptables -I OUTPUT -d {某个 IP} -m -j DROP
那么应该所有用路由器的设备都无法访问这个 IP。
但是我实际测了以下,结果是只有路由器的终端无法访问这个 IP,其他设备却都可以访问。
这是为什么?有什么路由器层面的办法可以让这个规则运用到所有的使用路由器的设备呢?
3895 次点击
所在节点    路由器
8 条回复
JackyBao
2017-05-13 23:33:35 +08:00
OUTPUT 仅 DROP 路由器本身的包
内网机器的包用 PREROUTING 来 DROP
lcdtyph
2017-05-13 23:35:04 +08:00
经过 forward 链的包不会经过 filter 的 output 链
neverwintern
2017-05-14 12:19:37 +08:00
@JackyBao 谢谢,所以我的规则应该这样写:
iptables -t mangle -I PREROUTING -d {某个 IP} -m -j DROP
这样就是把内网包在进路由之前就把它丢掉。 如果我要阻止它发出就是 POSTROUTING。
neverwintern
2017-05-14 12:20:26 +08:00
@lcdtyph 看了下 iptables 的流程,懂了,谢谢。
neverwintern
2017-05-14 12:33:44 +08:00
比较好奇英雄联盟的网络设计,我依次尝试了两条命令:

iptables -t mangle -A POSTROUTING -m statistic --mode random --probability 0.2 -j DROP

iptables -t mangle -A PREROUTING -m statistic --mode random --probability 0.2 -j DROP

都对浏览网页,下载速度造成了很大影响,但是打 LOL 却没有什么影响,顶多是延迟高了一点。
JackyBao
2017-05-14 20:37:57 +08:00
@neverwintern
你可以抓一下包,看看英雄联盟是不是走的 udp ?
neverwintern
2017-05-15 23:38:33 +08:00
@JackyBao 但是我的命令是所有包都 0.2 几率 DROP 吧。

然后我今天试了试
iptables -t mangle -A POSTROUTING -p udp -j DROP
发现 LOL 还是能玩,而且没有开加速器之类的。
JackyBao
2017-05-16 08:19:03 +08:00
udp 可以自己构造抗丢包和快速重传的协议,比如 kcp。

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

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

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

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

© 2021 V2EX