Linux 能否实现 Windows 临时 IPv6 地址

2022-02-22 06:27:11 +08:00
 acbot

Windows 系统开启 v6 协议后 会在系统中生成 IPv6 地址 和 临时 IPv6 地址两个地址,对外访问的时候使用临时 IPv6 地址,外面对内访问的时候两个地址都可以用,我看 Linux 系统都下只有一个 IPv6 地址,不知道临时 IPv6 地址这个功能能否实现?

4354 次点击
所在节点    Linux
17 条回复
duke807
2022-02-22 06:34:04 +08:00
一個網路接口可以支持很多個 IP 地址是 IPv6 特有的特性,和用什麼操作系統沒什麼關係

至於你問的問題,不用想就知道可以實現
acbot
2022-02-22 07:31:37 +08:00
@duke807 理论上是这样的,我只知道手动可以配置多个固定地址,但是我不知道 SLAAC 或者是 DHCPv6 模式下 Linux 系统如何配置才能获取到临时地址,一个相对固定后缀的地址。
kuichieh
2022-02-22 08:47:59 +08:00
搜索关键词 IPv6 Privacy
Love4Taylor
2022-02-22 08:56:41 +08:00
net.ipv6.conf.all.use_tempaddr

另外我不懂,为啥请你都要用临时地址了还要固定
jtshs256
2022-02-22 08:57:08 +08:00
net.ipv6.conf.xxx.use_tempaddr=2
Love4Taylor
2022-02-22 08:59:41 +08:00
@Love4Taylor 另外 arch wiki 其实是真的很好用的
https://wiki.archlinux.org/title/IPv6
acbot
2022-02-22 10:02:09 +08:00
@Love4Taylor 类似 windows 系统的策略 对外访问(比如:上网 下载更新)使用临时地址; 系统对外开放服务(比如: http )用固定地址
acbot
2022-02-22 10:04:11 +08:00
@jtshs256 谢谢,我试试这个仅仅是生成两个临时地址吗,还是我可以同时让这两个临时地址在不同的策略下生成,并且指定一个地址默认 比如:一个随机后缀 一个固定后缀
raysonx
2022-02-22 13:25:18 +08:00
你用的什么发行版?不同发行版默认使用的网络配置工具不一样。比如 Debian 和 Fedora 的桌面版默认用的 NetworkManager ,可以用下面的命令开启(假设连接名称是 eth0 ):

nmcli connection modify eth0 ipv6.ip6-privacy prefer-temp-addr
acbot
2022-02-22 13:43:45 +08:00
@raysonx 平常用 ubuntu 和 centos 多
qakito
2022-02-23 08:54:27 +08:00
在 SLAAC 中,作为 IPv6 host 可以通过 RS/RA 学习 IPv6 前缀以及默认网关
通过 IPv6 前缀生成 IPv6 地址的方式有
EUI64 对于 ethernet 来说,就是通过 mac 地址变换得到,为固定地址
临时地址

这个就看 linux kernel 对 IPv6 SLAAC 的支持程度了
acbot
2022-02-23 09:33:56 +08:00
@qakito 可能是我没有描述清楚,实际上我得需求不是选择或者是配置某一种模式,而是一个网卡能不能两种模式同时存在。
qbqbqbqb
2022-02-23 11:51:55 +08:00
@acbot 开启隐私扩展后就是两者同时存在的。

不开隐私扩展时只有固定地址,开隐私扩展后同时有固定地址和临时地址。不存在只有临时地址的情况。
acbot
2022-02-24 11:16:46 +08:00
@jtshs256
@qbqbqbqb

net.ipv6.conf.all.use_tempaddr = 2
net.ipv6.conf.default.use_tempaddr = 2

在 ubuntu 和 centos 都没有成功 ifconfig -a 和 ip -6 add show 系统还是显示一个地址 把值改成 1 也是一样 甚至尝试下面的参数 都无效

net.ipv6.conf.default.accept_ra=2
net.ipv6.conf.all.accept_ra=2

不知道问题出在哪里
jtshs256
2022-02-24 21:48:59 +08:00
出在系统用的 systemd 的 networkd……IPv6PrivacyExtensions=yes
acbot
2022-02-25 09:51:51 +08:00
@jtshs256 谢谢,其实我一直没怎么明白 linux 网络管理配置 NetworkManager / networkd / “/etc/sysconfig/network-scripts/ifcfg-***” 和 net.ipv6.conf.all.use_tempaddr 这种修改内核的方式 他们之前的区别联系是什么 这么多配置方式容易让人糊涂
qbqbqbqb
2022-02-26 00:38:06 +08:00
@acbot
SLAAC 是内核直接支持的,不像 DHCP 必须启动客户端软件,即使不用任何网络配置工具,内核也会自动配置 IPv6 SLAAC. 修改内核参数其实就是修改内核默认的 SLAAC 行为。

用 sysctl 命令修改 net.ipv6.conf.all.use_tempaddr ,就像用 ifconfig 或者 ip addr 命令设置静态 ip 一样,是不持久的,重启丢失(除非你写到 sysctl.conf 里)。通过网络配置工具来配置,可以在以后开机的时候自动生效。本质上也是网络配置工具帮你改了内核设置。

用网络配置工具来配置这个设置(而不是用 sysctl.conf 配置 net.ipv6.conf.all.use_tempaddr )的另一个好处就是可以统一在一个地方配置 IPv4 和 IPv6.

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/835535

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX