我有一个指向我的家庭服务器的域名。在通过 Wily 的每个 Ubuntu 版本下,默认情况下我有一个稳定的 EIU-64 地址,我可以将其用于我的 AAAA 记录。但是,安装Xenial后,我似乎默认没有获得稳定的地址。
joejoe@myserver:~$ ip address
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:24:1d:d2:e3:f4 brd ff:ff:ff:ff:ff:ff
inet 192.168.0.101/24 brd 192.168.0.255 scope global enp2s0
valid_lft forever preferred_lft forever
inet6 2601:280:3068:2945:74ed:b303:6474:6e29/64 scope global temporary dynamic
valid_lft 6965sec preferred_lft 3363sec
inet6 2601:280:3068:2945:ac34:ea15:4340:29a4/64 scope global temporary deprecated dynamic
valid_lft 6965sec preferred_lft 0sec
inet6 2601:280:3068:2945:bdfd:6253:b07e:1308/64 scope global mngtmpaddr noprefixroute dynamic
valid_lft 6965sec preferred_lft 6965sec
inet6 fe80::dc3e:6127:bd4e:18b/64 scope link
valid_lft forever preferred_lft forever
Run Code Online (Sandbox Code Playgroud)
如您所见,所有具有生命周期的inet6地址scope global都是有限的。有没有办法取回我的 EIU-64 地址,或者有没有其他方法可以获得我可以在域名记录中使用的稳定地址?
我只是想通了这一点。对于 中的每个连接/etc/NetworkManager/system-connections/,您需要设置以下属性:
[ipv6]
addr-gen-mode=eui64
Run Code Online (Sandbox Code Playgroud)
16.04 中的 NetworkManager 似乎stable-privacy为该addr-gen-mode设置设置了默认值。当stable-privacy被设置时,每次生成的随机地址,即使当ip6-privacy被设置为0。
小智 7
这里的其他答案是有点不完整:改变NetworkManager的CONFIGS没有帮助,如果你不有一个(实际上是问题,见下文),并关闭IPv6隐私扩展实际上是有点不相关的(再次,如果你的所谓稳定每次启动时 IPv6 地址都会更改,删除额外的隐私地址无济于事)。
如该线程中所述,如果您使用有线连接,默认的新安装 16.04 会有轻微的疏忽。NetworkManager 会自动生成一个“临时”配置,它工作得很好,但也是临时的。这意味着用于散列到假定一致的 IPv6 地址的 GUID 不会被存储,因此您每次启动都会得到一个新的。只需进入 NetworkManager,在有线连接上按“编辑”,然后不做任何更改就将其保存将生成实际的 NM 配置,并带有保存的 GUID,因此每次启动时您将获得相同的 IPv6 地址。
该地址是一个 RFC7217 地址(GUID 的加密哈希、您的前缀等)——所以尽管它在每次启动时都很稳定,但它并不是将您的 MAC 地址直接包含在地址中的那种。如果您想要这些 EUI64 地址之一,则此问题的另一个答案详细说明了如何更改它。
小智 6
Ubuntu 16.04 和以前的版本对我来说总是默认为 EIU-64,所以对于服务器我必须禁用它。我很高兴在我的桌面上使用隐私地址。
所以你需要这样的东西:
sysctl -w net.ipv6.conf.all.use_tempaddr=0
sysctl -w net.ipv6.conf.default.use_tempaddr=0
sysctl -w net.ipv6.conf.default.use_tempaddr=0
sysctl -w net.ipv6.conf.<devname>.use_tempaddr=0
Run Code Online (Sandbox Code Playgroud)
然后ifdown/ifup。对我来说的结果,请注意 MAC/IPv6 关系:
$ ifconfig enp3s0 | egrep 'HWaddr|Global'
enp3s0 Link encap:Ethernet HWaddr 74:d0:2b:90:8b:90
inet6 addr: 2501:300:d008:61c8:76d0:2bff:fe90:8b90/64 Scope:Global
Run Code Online (Sandbox Code Playgroud)
如果您需要在某些接口而不是其他接口上启用它,您可以命名特定接口。您可以通过以下方式查看列表:
$ sysctl -a | grep tempaddr
Run Code Online (Sandbox Code Playgroud)
我不推荐网络管理器用于生产服务。例如,它不能很好地发挥其他作用,例如 /etc/sysctl.conf。如果您想这样做,您将需要 /etc/networking/interfaces 中的条目用于静态地址或自动配置的地址。我只是在使用:
auto enp3s0
iface enp3s0 inet dhcp
iface enp3s0 inet6 auto
pre-up modprobe ipv6
Run Code Online (Sandbox Code Playgroud)
当然要根据口味调整。
| 归档时间: |
|
| 查看次数: |
14104 次 |
| 最近记录: |