不知道佬友们注意过自己的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代理的,即使设置了密码,也不要暴露到公网,不然可能你的流量很快就没了。
参考资料: