Temporary IPv6 Address 开起来

不知道佬友们注意过自己的ipv6地址没有

linux服务器默认是使用 EUI64来生成你的ipv6地址

这种方式的缺点是使用你网卡的 mac 地址来生成的,非常容易被追踪。

因为你的mac地址是全球唯一的,即使ipv6-pd一直在变,因为你的MAC地址不会变,所以你的ipv6后缀也不会变。

不变的ipv6后缀方便我们设置防火墙,比如你的服务上有alist,而你的ipv6后缀是1d8e:e504:cc53:3dd0,你想让你的主路由的防火墙放开你服务器的alist服务的5244端口,那么你可以这样设置nftables规则:

 ip6 saddr { 2409::/16, 240e::/16,  2408::/16 } ip6 daddr & ::ffff:ffff:ffff:ffff == ::1d8e:e504:cc53:3dd0 tcp dport 5244 accept
  • 2409::/16 是中国移动的ip段
  • 240e::/16 是中国电信的ip段
  • 2408::/16 是中国联通的ip段

以上规则的意思是 允许 源地址是 中国三大运营商的ip访问我本地网络中 ipv6地址后缀为1d8e:e504:cc53:3dd0的主机的5244端口。

稳定的后缀使得我们容易配置防火墙规则,但是也同时存在泄露了ipv6给其他人的可能。

特别是你的服务器上还跑了其他的脚本,当你的脚本访问了ipv6的网站的时候,也把这个ipv6地址给暴露出去了。

如果不小心访问到一个恶意服务,这个恶意服务就会尝试扫描你这个ipv6地址,如果你的密码是弱密码的话,你的服务器可能就会被黑了。

或者被这个恶意服务发起ddos,如果它真的闲的没事干的话。

或者被某些人尝试根据这个稳定的ipv6后缀分析你的服务器上网行为特征。

总之,我不想让这个稳定后缀ipv6地址那么轻易的泄露给别人。

是时候开启Temporary IPv6 Address了。如果你用的是windows,那么你不需要任何操作。

如果你用的是Linux系统,那么请跟着做:

修改 /etc/sysctl.conf 文件:

sudoedit /etc/sysctl.conf
# 输入以下内容到/etc/sysctl.conf这个文件中
net.ipv6.conf.enp0s3.use_tempaddr = 2
  • enp0s3 是我的lan接口名字,你的可能不一样,使用ip addr命令查看你的接口名字,并在上述命令中替换好。

然后重启服务器就可以了。

输入ip -6 addr,你会发现你多了一个ipv6的地址,这个地址的后缀是随机生成的。

linux会优先使用这个随机的ipv6地址去访问别的服务,这样即使暴露了这个ipv6地址也没有关系,因为我们的防火墙不会让这个访问随机的ipv6地址的数据包入站,已经建立了连接通道的数据包除外。

2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP qlen 1000
    inet6 2409:xxxx:xxxx:xxxx:c228:6c84:524f:1a4/64 scope global temporary deprecated dynamic
       valid_lft 5387sec preferred_lft 0sec
    inet6 2409:xxxx:xxxx:xxxx:1d8e:e504:cc53:3dd0/64 scope global deprecated dynamic mngtmpaddr
       valid_lft 5387sec preferred_lft 0sec
    inet6 fe80::1d8e:e504:cc53:3dd0/64 scope link
       valid_lft forever preferred_lft forever

家有服务器的话还是需要注意一下防火墙规则的设置,不要轻易暴露端口给公网,clash、xray内核的起了socks代理的,即使设置了密码,也不要暴露到公网,不然可能你的流量很快就没了。

参考资料:

19 个赞

然而,我并没有开通IPv6

3 个赞

Mark一个,虽然我这边路由器都获取不到pd头。。

3 个赞

把mac改了随机

2 个赞

学习了,谢谢

1 个赞

学习了,感谢

我去,路由器后缀默认是::1,是不是更危险 :melting_face:

开这个干啥

感谢分享

简单来说就是让我的出口ipv6地址使用这个随机生成的暂时地址,让注重这方面隐私的朋友多一种选择。

懂了

看了楼主的这个帖子,我把openwrt路由也开启了Temporary IPv6 Address,网络->接口->lan->编辑->高级设置->IPv6 后缀,填写“random”保存就可以了。直接用路由访问网络ipv6再也不是::1后缀了。

你这个操作其实改的是内核的这个addr_gen_mode参数哦,不是临时ipv6:

addr_gen_mode - INTEGER
	Defines how link-local and autoconf addresses are generated.

	0: generate address based on EUI64 (default)
	1: do no generate a link-local address, use EUI64 for addresses generated
	   from autoconf
	2: generate stable privacy addresses, using the secret from
	   stable_secret (RFC7217)
	3: generate stable privacy addresses, using a random secret if unset

openwrt也是linux系统,临时ipv6开启方法和我说的一样。

也可以参考openwrt社区这位朋友的帖子

技术贴,很有用

能帮到你就好

你说的方法在linux系统确实可以,但是openwrt上没有效果,这个帖子我也看了,就net.ipv6.conf.default.stable_secret没试,其他试了也没有效果。不过确实我改的方法也不是增加Temporary IPv6 Address,只是用随机值生成了一个ipv6,因为我在ipv6后面没有看到temporary这个关键词

6都不安全了,那我的46都有,岂不是这几年在裸奔

pd头啥意思

没这个的话路由器就无法给下级设备分配ipv6地址