35+ stories, thoughts and ideas.35+ stories, thoughts and ideas.


stories, thoughts and ideas.

禁止特定设备获取IPv6地址

禁止IPhone获取IPv6地址

背景

双栈网络中,IPv6网络由于各种原因,网络质量不行,另外如果使用了VPN,也有可能通过IPv6地址泄露了信息。但是在网络中,部分设备又需要使用,因此需要找到一个方法禁止特定设备不获取IPv6地址。
一般移动设备是不能设置IPv6的相关配置,即使IPv4是手动设置的,在网络中还是可以自动获取的IPv6地址,尤其是iOS。
IP地址在路由器上的DHCP服务上进行分配,禁止设备分配IPv6地址在网络很少文章提及,而且padavan固件本身,IPv6地址分配方面的参数极少,研究了一下IPv6地址分配,大体如下(可能有不正确的表述):

  • 1 拨号后,路由器通过 DHCPv6/RA(路由广播)获取IPv6前缀
  • 2.1 路由器通过RA广播前缀到局域网的设备,如果支持SLAAC(无状态地址自动配置),设备会自行计算后缀并配置IPv6,所谓的stateless模式
  • 2.2 设备也可以通过DHCPv6协议,从路由器申请IPv6地址,所谓的stateful模式。
  • 2.3 也可以同时通过2种模式获取,此时设备会拥有多个IPv6地址
  • 2.4 如果关闭RA广播,IPv6前缀发生变化后,DHCP获取的IP地址可能不能通信,只有租期到期之后,才会主动找路由器重新获取IP,因此可能导致断网一段时间。

因此要禁止部分设备获取IPv6地址,路由器需要做到:

  1. 支持RA,但是不能支持SLAAC
  2. 支持DHCPv6
  3. DHCPv6支持把部分设备列入黑名单

配置方法

Openwrt路由器配置方法可以参考文章V2EX:如何只给路由器后的某个设备单独分配 IPv6 地址
但是我的路由器只有padavan固件稳定,上述方法没有在padavan上实施成功,因此我看了一下dnsmasq的配置,使用 dhcp-host=mac-address,ignore 配置项应该可以做到。
此方法可以适配所有使用dnsmasq的路由器,简单配置即可。

  1. 增加DHCP配置禁止对应MAC的设备获取IP地址
    在Advanced-settings > LAN > DHCP Server > Advanced Settings > ustom Configuration File "dnsmasq.conf"中添加

    #方法1,写mac地址,需要设置静态IPv4地址,否则IPv4地址也无法获取到
    #dhcp-host=ff:cc:00:66:55:11,ignore  
    #方法2,写id:+ DUID,打开dnsmasq日志,设备申请IPv6地址时DUID会在日志出现。
    dhcp-host=id:00:03:00:01:ff:cc:00:66:55:11,ignore
    #对于需要固定IPv6后缀地址的NAS设备,可以指定地址
    dhcp-host=id:00:03:00:01:ff:cc:00:66:55:11, NAS, [::888]
  2. 添加固定的IPv4地址分配,当然也可以不加,iPhone手动配置IP
    在Advanced-settings > LAN > DHCP Server > Advanced Settings > Manually Assigned IP around the DHCP List 添加

    ff:cc:00:66:55:11  192.168.1.19  iPhone

    3.配置DHCPv6
    在Advanced-settings > WAN > IPv6 Protocol配置如下
    Padavan IPv6 Config

效果

执行效果是设备可以获取IPv4地址,而不能获取到IPv6地址。
路由器日志可以看到具体过程。

dnsmasq-dhcp: DHCPDISCOVER(br0) ff:cc:00:66:55:11 
dnsmasq-dhcp: DHCPOFFER(br0) 192.168.1.19 ff:cc:00:66:55:11 
dnsmasq-dhcp: DHCPREQUEST(br0) 192.168.1.19 ff:cc:00:66:55:11 
dnsmasq-dhcp: DHCPACK(br0) 192.168.1.19 ff:cc:00:66:55:11 

dnsmasq-dhcp: RTR-SOLICIT(br0) 
dnsmasq-dhcp: RTR-ADVERT(br0) 2409:8a55:aaaa:bbbb::
dnsmasq-dhcp: DHCPSOLICIT(br0) 00:03:00:01:ff:cc:00:66:55:11 ignored
本原创文章未经允许不得转载 | 当前页面:35+ stories, thoughts and ideas. » 禁止特定设备获取IPv6地址

评论