V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
bluesky139
V2EX  ›  路由器

在 guest network 下使用 iptables 无效?

  •  
  •   bluesky139 · 2016-12-08 09:28:44 +08:00 · 3770 次点击
    这是一个创建于 2919 天前的主题,其中的信息可能已经有所发展或是发生改变。

    现正在使用 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

    有人知道是怎么回事么?

    20 条回复    2016-12-08 18:20:49 +08:00
    jasontse
        1
    jasontse  
       2016-12-08 10:01:14 +08:00 via Android
    因为不是 wl0.1 ,可能是 br2 。用 brctl show 看一下。
    bluesky139
        2
    bluesky139  
    OP
       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
        3
    ooxxcc  
       2016-12-08 10:17:54 +08:00
    直接根据 guest ip 段过滤算了
    jasontse
        4
    jasontse  
       2016-12-08 10:18:15 +08:00 via Android
    @bluesky139 那你看它网关地址是从哪个 interface 来的
    bluesky139
        5
    bluesky139  
    OP
       2016-12-08 10:18:47 +08:00
    @jasontse 这排版,我去传个图:
    ![]( http://ooo.0o0.ooo/2016/12/08/5848c2887235d.jpg)
    bluesky139
        6
    bluesky139  
    OP
       2016-12-08 10:20:49 +08:00
    @ooxxcc 由于 DHCP 不在路由上,在其它机器上,也不好配,所以不能按 IP 段来,这个最初我就想过。
    bluesky139
        7
    bluesky139  
    OP
       2016-12-08 10:26:00 +08:00
    @jasontse 这个网关地址该怎么看?
    bluesky139
        8
    bluesky139  
    OP
       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
        9
    jasontse  
       2016-12-08 10:44:48 +08:00 via iPad
    private 和 guest 是一个段?。。。没有这样组网的
    bluesky139
        10
    bluesky139  
    OP
       2016-12-08 11:08:57 +08:00
    @jasontse 这个 guest 是拿来当第二个 private 用的,只是纯粹需要转发流量,内网的一切资源正常使用,所以在同一个网段。
    网段怎样无所谓,我是想用 interface 来过滤,跟网段又没关系。
    jasontse
        11
    jasontse  
       2016-12-08 11:10:47 +08:00 via iPad
    @bluesky139 wl0.1 发到 br0 才会从防火墙出去你这样做不了的
    bluesky139
        12
    bluesky139  
    OP
       2016-12-08 11:32:00 +08:00
    @jasontse 意思是我需要把“访问内部网络”关掉,让 guest 网络不能访问 private 网络对吗?这样又有个问题, guest 没有 DHCP 无法得到分配到 IP , 路由上的 DHCP 是关掉了的, DHCP 现由另一台服务器在服务。难道无解了?
    orzfly
        13
    orzfly  
       2016-12-08 11:36:50 +08:00   ❤️ 1
    1) wl0.1 不能加入 br0
    2) 需要在 iptables 里加入允许 br0 转发和 wl0.1 之间进行转发
    3) 为了能转发你需要给 br0 和 wl0.1 用两个不同的 IP 段
    orzfly
        14
    orzfly  
       2016-12-08 11:38:50 +08:00
    4) 用两个 IP 段并不是什么大事,反正有转发规则又不是不能互相访问……
    jasontse
        15
    jasontse  
       2016-12-08 11:50:36 +08:00 via iPad   ❤️ 1
    @bluesky139 访不访问内部网不重要,重要的是弄个 br1 出来单独划个子网, DHCP 服务器广播域的问题可以另外解决。
    bluesky139
        16
    bluesky139  
    OP
       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
        17
    bluesky139  
    OP
       2016-12-08 16:43:38 +08:00
    @jasontse
    @orzfly
    结果,只在 FORWARD 链中添加了允许,没在 INPUT 链中添加允许,加上就对了。
    bluesky139
        18
    bluesky139  
    OP
       2016-12-08 16:46:01 +08:00
    @jasontse DHCP 有什么好的解决方法?
    jasontse
        19
    jasontse  
       2016-12-08 17:30:36 +08:00 via iPad
    @bluesky139 可以用 802.1q VLAN Tagging 解决,具体看你服务器操作系统。
    bluesky139
        20
    bluesky139  
    OP
       2016-12-08 18:20:49 +08:00
    @jasontse 我用 dnsmasq 解决了, dnsmasq 可以指定 br1 ,可以不用 DNS 功能,只用 DHCP 。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5738 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 03:14 · PVG 11:14 · LAX 19:14 · JFK 22:14
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.