分享:允许或者拒绝特定的设备获取 IPV6 地址, ip6tables / nftables 规则 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
a90405
V2EX    宽带症候群

分享:允许或者拒绝特定的设备获取 IPV6 地址, ip6tables / nftables 规则

  •  
  •   a90405 2023-11-07 16:20:33 +08:00 1950 次点击
    这是一个创建于 708 天前的主题,其中的信息可能已经有所发展或是发生改变。
    解释:
    mac1 mac2 mac3 自己替换成需要获取 ipv6 地址的设备 mac ,你可以继续添加按格式添加 mac4 mac5 之类的
    如果你要拒绝你设置的 mac 获取 ipv6 地址:
    iptables 规则,请把 -m set 后面的 ! 号删掉
    nftables 规则,请把 != 删掉
    如果你的 lan 口设备不是 br-lan 你把代码的 br-lan 替换成相应的设备名

    iptables 规则:下面的代码放到 防火墙自定义规则 里面
    ipset create ipv6macs hash:mac
    ipset add ipv6macs mac1
    ipset add ipv6macs mac2
    ipset add ipv6macs mac3

    ip6tables -t mangle -I PREROUTING -i br-lan -p ipv6-icmp -m set ! --match-set ipv6macs src -j DROP
    ip6tables -t mangle -I PREROUTING -i br-lan -p udp --dport 547 -m set ! --match-set ipv6macs src -j DROP

    nftables: 新建一个 xxx.nft 文件,复制下面代码进去,放到/usr/share/nftables.d/chain-pre/mangle_prerouting/ ,没有目
    录就新建,注意 xxx.nft 的换行格式要换成 linux 的,否则会报错。

    iifname br-lan meta nfproto ipv6 udp dport 547 ether saddr !={ mac1, mac2, mac3 } counter drop comment
    iifname br-lan icmpv6 type { 133-143 } ether saddr !={ mac1, mac2, mac3 } counter drop comment
    7 条回复    2025-07-01 04:10:41 +08:00
    dant
        1
    dant  
       2023-11-07 17:19:03 +08:00
    也可以在 luci 中添加 firewall rule ,给特定 MAC 地址阻断 ICMPv6/DHCPv6
    a90405
        2
    a90405  
    OP
       2023-11-09 19:51:35 +08:00
    @dant #1 我研究了一下,只要开了路由器定期发送的 RA ,客户端开了 SLAAC ,就没办法阻止客户获得 ipv6 地址,顶楼的防火墙只能阻挡客户端刚接入网络时候的请求 IPV6 地址发送的 RS ,从而让客户端立即接收不到路由器回播的单播 RA 消息,从而让客户端一开始没法获取 IPV6 地址,直到下一次的路由器主动发送的组播 RA 消息。

    路由器定期的 RA 组播消息,它发送到 FF02::1 这个目标地址的,这个地址是所有 ipv6 客户端所在的组播地址,所有只要开了 ipv6 协议,有链路本地 ipv6 FE80 开头的那个地址的机器都能收到。

    所以说,在路由器上阻止特定客户端获取 Ipv6 地址是没办法的,至少 openwrt 的 odhcpd 是没有办法的。

    所以说本贴作废。
    ranaanna
        3
    ranaanna  
       2023-11-09 22:53:52 +08:00
    @a90405 同意。不过在路由器上可以配置向其发送路由通告并接受路由请求的客户端列表,也就是 RADVD 的 clients{};。这样路由器只会发送 RA 到列表中的单播地址而不会发送到组播地址,来自其它地址的请求也会被拒绝。当然 OP 想要实现的,是一个黑名单,而这是个白名单
    beyondstars
        4
    beyondstars  
       2023-11-17 12:17:01 +08:00
    如果不限定于纯软件方法的话,可以考虑 VLAN ,主路由器的 LAN 口连接到 port 0, 一个 IPv4 only 的路由器接到 port 1 ,不允许获取 IPv6 地址到机器接到 port 2, 然后 port 0, port 1 属于 VLAN 1, port 1, port 2 属于 VLAN 2, port 1 设定为汇聚端口。这时如果在主路由 ping ff02::1 这个地址应该只收到连接到 port 0, port 1 两台主机的回复。

    这样从主路由发出的 RA 广播帧就不会到达受限制获取 IPv6 地址的那台机器了。
    beyondstars
        5
    beyondstars  
       2023-11-17 12:21:52 +08:00
    有的交换机支持 IPv6 RA Guard 功能,可以屏蔽特定条件的 RA 帧,不过这个我没有仔细了解过。https://networklessons.com/cisco/ccie-routing-switching-written/ipv6-ra-guard
    wxhwz
        6
    wxhwz  
       107 天前
    只开 slaac 情况下的 iptables 规则:
    ip6tables -I OUTPUT -p icmpv6 --icmpv6-type router-advertisement -o br-lan -j DROP
    ip6tables -I OUTPUT -p icmpv6 --icmpv6-type router-advertisement -o br-lan -d fe80::c197:e354:557d:fa7b (放行客户端的本地链路地址) -j ACCEPT

    原理:
    https://www.networkacademy.io/ccna/ipv6/stateless-address-autoconfiguration-slaac
    wxhwz
        7
    wxhwz  
       107 天前
    @wxhwz 需要路由器客户端都支持单播 RA
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1731 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 18ms UTC 00:01 PVG 08:01 LAX 17:01 JFK 20:01
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86