ubuntu2404,物理机获取不到 ipv6

37 天前
 mawen0726

netplan 配置的网络,ipv4 是静态配置的。

ipv6 通过 dhcp6: true 无法获取,配置静态 ipv6 的倒是可以用,但是 gateway 的 ipv6 过一段时间就变化,导致服务器的 ipv6 一段时间之后就不可用了。

想通过配置内网 ipv6 的 gateway 来获取地址,但是朋友说看不到 gateway 的内网 ipv6 地址,只有公网的。

netplan 相关文档翻了尝试无果,netplan bug 里面提到用的 dhclient 也无效果

ip 详情如下

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    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 noprefixroute 
       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 8c:0e:60:67:93:7f brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.28/24 brd 192.168.1.255 scope global enp2s0
       valid_lft forever preferred_lft forever
    inet6 fe80::8e0e:60ff:fe67:937f/64 scope link 
       valid_lft forever preferred_lft forever

配置文件如下

  network:
    ethernets:
        enp2s0:
           dhcp6: true
           dhcp4: false
           addresses:
              - 192.168.1.28/24
           nameservers:
              addresses:
                  - 192.168.1.2
                  - 119.29.29.29
                  - 127.0.0.53
                  - 8.8.8.8
                  - 8.8.4.4
                  - 223.5.5.5
                  - 223.6.6.6
           routes:
            - to: default
              via: 192.168.1.2
              on-link: true
    version: 2

同时还有个比较奇怪的问题,路由器用的小米,如果服务器不配置 gateway 的 host ,gateway 会显示成 Xiaoqiang ,并且不配置 host 会 ping 不通百度域名,目前在 hosts 里面配了 192.168.1.2 _gateway

1927 次点击
所在节点    宽带症候群
54 条回复
kenneth104
37 天前
确定 DHCP 没问题??
因为你提到物力机,默认就是机房环境,机房环境我遇到的都是静态 v6
mawen0726
37 天前
@kenneth104 不算是机房环境吧,就是将一台淘汰的电脑直接装 Ubuntu 当服务器用了,然后直接接入家里的路由了,家里的其他设备可以自动获取到 ipv6 地址,但是 ubuntu 服务器获取不到,服务器的 dhcp4 倒是可以...不知道是否跟我的 netplan 配置有关
kenneth104
37 天前
加上 accept-ra: true 试试?

个人对 ubuntu 喜欢不上,我的 debian 只要 iface br0 inet6 dhcp
yyzh
37 天前
路由器问题+1
试试直接用光猫做路由器.正常的话那可以把小米丢了
XiLingHost
37 天前
如果路由器没有使用 dhcpv6 而是 slaac 方式下发前缀的话,你只配置 dhcp6: true 也是没用的,要结合 accept-ra
参考 https://netplan.readthedocs.io/en/latest/netplan-yaml/#properties-for-all-device-types
mawen0726
37 天前
@yyzh
网络拓扑大概是 光猫 -> 路由器 -> 交换机 -> 各种设备
然后路由器拨号,光猫只做光电传输
交换机下的其他设备都能拿到动态 ipv6 ,路由器的 ipv6 设定是 native
laminux29
37 天前
换台 Windows 10 或 Windows 11 ,能自动获取 IPv6 嘛?
mawen0726
37 天前
@XiLingHost
我按 1 楼老哥的说法加上了 `accept-ra: true`,貌似也获取不到 ipv6 地址

网络拓扑大概是 光猫 -> 路由器 -> 交换机 -> 各种设备

同一个网络环境下(都在交换机内),其他设备都能拿到动态 ipv6 ,是不是表示 **dhcpv6 ** 是好的...

然后小米路由器的 ipv6 提供了 3 个 ipv6 方式,native ,nat6 和静态 ipv6 ,目前用的是 native ,拿到的是一个公网 ipv6 地址
mawen0726
37 天前
@laminux29
可以的,其他设备在一样的网络环境下倒是能拿到分发的公网 ipv6
zwy100e72
37 天前
我这边有几个想法

1. 考虑通过 wireshark / tcpdump 抓包,抓包的时候可以用 `icmp6` 做过滤,然后检查下抓到的 Router Advertisement 包
1.1 看下有没有这些标记:Managed (通过 DHCPv6 获取地址)或者 Other (通过 DHCPv6 获取额外配置)
1.2 如果都没有标记,意思是通过 SLAAC 方式自动配置 ipv6 地址
1.3 RA 广播里还可以带 DNS 地址,也可以检查下

2. netplan 我没怎么用过,楼主可以考虑换用 Network Manager 或者 systemd-networkd ,个人目前用的是 systemd-networkd

3. 检查 ubuntu 机器是否开启防火墙,是否放行了 icmpv6 协议
mawen0726
37 天前
@zwy100e72
在一台能分配到 ipv6 地址的电脑用 wireshark 抓包内容大概如下,貌似没有看到 managed 和 other 的字样
![icmpv6 抓包.png]( https://s1.locimg.com/2024/10/17/cf700f0930545.png)

在 linux 上用 tcpdump 抓 icmpv6
![linux-icmpv6.png]( https://s1.locimg.com/2024/10/17/63bc6c5b77555.png)

netplan 替换 network manager 貌似挺麻烦,会有一段时间没有网络,要等朋友在家才好操作...
laminux29
37 天前
找台虚拟机,安装一下 Ubuntu 的最新版,获取到 IPv6 后,把网络配置文件照抄过来。
peasant
37 天前
OP 有没有检查一下 sysctl 里的 IPv6 相关的配置是不是被禁用了?
mawen0726
37 天前
@peasant
我之前通过其他电脑知道的路由 ipv6 地址,配了个静态的公网 ipv6 地址来用,用起来倒是没任何问题

这样能表示相关的 ipv6 配置没有被禁用嘛...
zwy100e72
37 天前
neighbor solicitation / neighbor advertisement 按我理解约等于 ARP 的请求和响应
要看还是应该看 Router Advertisement - 这个是路由器通告自己存在的消息

tcpdump 的结果可以保存 pcap 文件,然后传给 wireshark 来看的

看你网络上有 RA ,accept-ra 应该是要开的,然后 dhcp6 应该也是要开的

看 netplan 文档,里面写了默认的 renderer 是 networkd ,说不定楼主已经间接在用 networkd 了
mawen0726
37 天前
@zwy100e72
我又重新去看了下 wire shark ,貌似 ra 里面你说的都有... 小白有点看不懂这个
![icmpv6-ra.png]( https://s1.locimg.com/2024/10/17/689e2b0b6a377.png)
peasant
37 天前
sysctl net.ipv6.conf.enp2s0.accept_ra
sysctl net.ipv6.conf.all.accept_ra
sysctl net.ipv6.conf.default.accept_ra
@mawen0726 可以看看返回的值是多少,如果是 0 就是禁止接受路由通告了,会拿不到地址,但是你手动配置的是可以用的
rulagiti
36 天前
另外再看 net.ipv6.conf.forwarding 是否为 1 ,如果为 1 accept_ra 要设置为 2 才可以
dalaoshu25
36 天前
为啥我们的机器,也是 Ubuntu 24.04 和 24.10 一路无脑回车正常安装下来,什么特殊设置都不需要,啥地址也不缺?
zwy100e72
36 天前
managed = 地址通过 DHCPv6 获取; other = 其他信息 (DNS) 通过 DHCPv6 获取

楼主要不检查下 `netplan info`,看是否符合预期
再用下 `netplan apply`,看下是不是改了配置没生效
或者考虑重启下服务器

我这边临时下了一个 ubuntu 24.04.1 LTS 的镜像,走 macvtap 模式直连到我本地网络,安装时开启 ipv6 之后自动可以拿到 v6 地址;装好之后同样可以自动拿到地址

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

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

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

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

© 2021 V2EX