在 guest network 下使用 iptables 无效?

2016-12-08 09:28:44 +08:00
 bluesky139

现正在使用 ASUS 路由,刷的 Merlin 固件。

我开了一个访客网络, ifconfig 出来发现多了一个接口 "wl0.1",我想把这个网络的所有流量转到一个指定端口,因此用了以下 iptables 命令,但是无效:

iptables -t nat -I PREROUTING -i wl0.1 -p tcp -j REDIRECT --to-port 2081

如果我针对单一 IP 进行过滤是能行的,比如这个:

iptables -t nat -I PREROUTING -s 10.10.10.112 -p tcp -j REDIRECT --to-port 2081

有人知道是怎么回事么?

3681 次点击
所在节点    路由器
20 条回复
jasontse
2016-12-08 10:01:14 +08:00
因为不是 wl0.1 ,可能是 br2 。用 brctl show 看一下。
bluesky139
2016-12-08 10:13:18 +08:00
@jasontse brctl show 也没看到 br2.

这是在开启访客网络前:
> bridge name bridge id STP enabled interfaces
> br0 8000.ac9e177dc070 yes vlan1
> eth1
> eth2

这是开启后:
> bridge name bridge id STP enabled interfaces
> br0 8000.ac9e177dc070 yes vlan1
> eth1
> eth2
> wl0.1
ooxxcc
2016-12-08 10:17:54 +08:00
直接根据 guest ip 段过滤算了
jasontse
2016-12-08 10:18:15 +08:00
@bluesky139 那你看它网关地址是从哪个 interface 来的
bluesky139
2016-12-08 10:18:47 +08:00
@jasontse 这排版,我去传个图:
![]( http://ooo.0o0.ooo/2016/12/08/5848c2887235d.jpg)
bluesky139
2016-12-08 10:20:49 +08:00
@ooxxcc 由于 DHCP 不在路由上,在其它机器上,也不好配,所以不能按 IP 段来,这个最初我就想过。
bluesky139
2016-12-08 10:26:00 +08:00
@jasontse 这个网关地址该怎么看?
bluesky139
2016-12-08 10:41:22 +08:00
@bluesky139 我自己是这样确定的,在手机上把接入点的 mac 地址打出来,跟 wl0.1 对应:
https://ooo.0o0.ooo/2016/12/08/5848c77c3d752.png

路由上整个 ifconfig 的结果是这样:
https://ooo.0o0.ooo/2016/12/08/5848c8232b069.jpg
jasontse
2016-12-08 10:44:48 +08:00
private 和 guest 是一个段?。。。没有这样组网的
bluesky139
2016-12-08 11:08:57 +08:00
@jasontse 这个 guest 是拿来当第二个 private 用的,只是纯粹需要转发流量,内网的一切资源正常使用,所以在同一个网段。
网段怎样无所谓,我是想用 interface 来过滤,跟网段又没关系。
jasontse
2016-12-08 11:10:47 +08:00
@bluesky139 wl0.1 发到 br0 才会从防火墙出去你这样做不了的
bluesky139
2016-12-08 11:32:00 +08:00
@jasontse 意思是我需要把“访问内部网络”关掉,让 guest 网络不能访问 private 网络对吗?这样又有个问题, guest 没有 DHCP 无法得到分配到 IP , 路由上的 DHCP 是关掉了的, DHCP 现由另一台服务器在服务。难道无解了?
orzfly
2016-12-08 11:36:50 +08:00
1) wl0.1 不能加入 br0
2) 需要在 iptables 里加入允许 br0 转发和 wl0.1 之间进行转发
3) 为了能转发你需要给 br0 和 wl0.1 用两个不同的 IP 段
orzfly
2016-12-08 11:38:50 +08:00
4) 用两个 IP 段并不是什么大事,反正有转发规则又不是不能互相访问……
jasontse
2016-12-08 11:50:36 +08:00
@bluesky139 访不访问内部网不重要,重要的是弄个 br1 出来单独划个子网, DHCP 服务器广播域的问题可以另外解决。
bluesky139
2016-12-08 14:40:39 +08:00
@jasontse
@orzfly
我现在弄个了 br1 ,然后把 wl0.1 加入到了 br1 ,再配了网段:

ifconfig br1 10.1.1.1 netmask 255.255.255.0 broadcast 10.1.1.255

再到 iptables 配了 br1 允许转发,这时候手机可以上网了(先不考虑 DNS 和 DHCP 的问题)

这时候我再执行以下命令,把 br1 所有流量转到 2081 上(这就是一个 ss-redir ):

iptables -t nat -I PREROUTING -i br1 -p tcp -j REDIRECT --to-port 2081

又不通了。这时我觉得以上 iptables 命令是生效了的,应该还需要怎么设置?
bluesky139
2016-12-08 16:43:38 +08:00
@jasontse
@orzfly
结果,只在 FORWARD 链中添加了允许,没在 INPUT 链中添加允许,加上就对了。
bluesky139
2016-12-08 16:46:01 +08:00
@jasontse DHCP 有什么好的解决方法?
jasontse
2016-12-08 17:30:36 +08:00
@bluesky139 可以用 802.1q VLAN Tagging 解决,具体看你服务器操作系统。
bluesky139
2016-12-08 18:20:49 +08:00
@jasontse 我用 dnsmasq 解决了, dnsmasq 可以指定 br1 ,可以不用 DNS 功能,只用 DHCP 。

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

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

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

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

© 2021 V2EX