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
1
kenneth104 35 天前
确定 DHCP 没问题??
因为你提到物力机,默认就是机房环境,机房环境我遇到的都是静态 v6 |
2
mawen0726 OP @kenneth104 不算是机房环境吧,就是将一台淘汰的电脑直接装 Ubuntu 当服务器用了,然后直接接入家里的路由了,家里的其他设备可以自动获取到 ipv6 地址,但是 ubuntu 服务器获取不到,服务器的 dhcp4 倒是可以...不知道是否跟我的 netplan 配置有关
|
3
kenneth104 35 天前
加上 accept-ra: true 试试?
个人对 ubuntu 喜欢不上,我的 debian 只要 iface br0 inet6 dhcp |
4
yyzh 35 天前 via Android
路由器问题+1
试试直接用光猫做路由器.正常的话那可以把小米丢了 |
5
XiLingHost 35 天前
如果路由器没有使用 dhcpv6 而是 slaac 方式下发前缀的话,你只配置 dhcp6: true 也是没用的,要结合 accept-ra
参考 https://netplan.readthedocs.io/en/latest/netplan-yaml/#properties-for-all-device-types |
6
mawen0726 OP |
7
laminux29 35 天前
换台 Windows 10 或 Windows 11 ,能自动获取 IPv6 嘛?
|
8
mawen0726 OP @XiLingHost
我按 1 楼老哥的说法加上了 `accept-ra: true`,貌似也获取不到 ipv6 地址 网络拓扑大概是 光猫 -> 路由器 -> 交换机 -> 各种设备 同一个网络环境下(都在交换机内),其他设备都能拿到动态 ipv6 ,是不是表示 **dhcpv6 ** 是好的... 然后小米路由器的 ipv6 提供了 3 个 ipv6 方式,native ,nat6 和静态 ipv6 ,目前用的是 native ,拿到的是一个公网 ipv6 地址 |
10
zwy100e72 35 天前
我这边有几个想法
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 协议 |
11
mawen0726 OP @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 貌似挺麻烦,会有一段时间没有网络,要等朋友在家才好操作... |
12
laminux29 35 天前
找台虚拟机,安装一下 Ubuntu 的最新版,获取到 IPv6 后,把网络配置文件照抄过来。
|
13
peasant 35 天前
OP 有没有检查一下 sysctl 里的 IPv6 相关的配置是不是被禁用了?
|
14
mawen0726 OP |
15
zwy100e72 35 天前
neighbor solicitation / neighbor advertisement 按我理解约等于 ARP 的请求和响应
要看还是应该看 Router Advertisement - 这个是路由器通告自己存在的消息 tcpdump 的结果可以保存 pcap 文件,然后传给 wireshark 来看的 看你网络上有 RA ,accept-ra 应该是要开的,然后 dhcp6 应该也是要开的 看 netplan 文档,里面写了默认的 renderer 是 networkd ,说不定楼主已经间接在用 networkd 了 |
16
mawen0726 OP @zwy100e72
我又重新去看了下 wire shark ,貌似 ra 里面你说的都有... 小白有点看不懂这个 ![icmpv6-ra.png]( https://s1.locimg.com/2024/10/17/689e2b0b6a377.png) |
17
peasant 35 天前
sysctl net.ipv6.conf.enp2s0.accept_ra
sysctl net.ipv6.conf.all.accept_ra sysctl net.ipv6.conf.default.accept_ra @mawen0726 可以看看返回的值是多少,如果是 0 就是禁止接受路由通告了,会拿不到地址,但是你手动配置的是可以用的 |
18
rulagiti 35 天前
另外再看 net.ipv6.conf.forwarding 是否为 1 ,如果为 1 accept_ra 要设置为 2 才可以
|
19
dalaoshu25 35 天前
为啥我们的机器,也是 Ubuntu 24.04 和 24.10 一路无脑回车正常安装下来,什么特殊设置都不需要,啥地址也不缺?
|
20
zwy100e72 35 天前
managed = 地址通过 DHCPv6 获取; other = 其他信息 (DNS) 通过 DHCPv6 获取
楼主要不检查下 `netplan info`,看是否符合预期 再用下 `netplan apply`,看下是不是改了配置没生效 或者考虑重启下服务器 我这边临时下了一个 ubuntu 24.04.1 LTS 的镜像,走 macvtap 模式直连到我本地网络,安装时开启 ipv6 之后自动可以拿到 v6 地址;装好之后同样可以自动拿到地址 |
21
yyzh 34 天前 via Android
@dalaoshu25 他路由器有问题吧.从未听说过家庭网络的 ubuntu ipv6 还要折腾的
|
22
dalaoshu25 34 天前
@yyzh 那简直是一定的。
我看了一下自己几天前升级的一台 Ubuntu 24.10 机器,/etc/netplan/里面的配置文件根本都没有 dhcpv6 ,啥都好好的。 偶的路由器是 RouterOS RB4011 # This is the network config written by 'subiquity' network: ethernets: enp3s0: dhcp4: true version: 2 |
23
mawen0726 OP @dalaoshu25 可能跟我们换了网卡有关系,貌似没换网卡之前是能直接获取到 ipv6 的...现在上面是两个网卡,但是只有新装的网卡是有网络的
|
24
dalaoshu25 34 天前
@mawen0726 这个隐藏信息为什么首贴不说?祸害这么多人浪费时间帮你乱折腾。
|
25
mawen0726 OP @peasant
sysctl net.ipv6.conf.enp2s0.accept_ra 这个配置是 0 ,其余两个是 1 我将 sysctl net.ipv6.conf.enp2s0.accept_ra=1 改到 /etc/sysctl.conf 里面,重启之后再读值是 0 ,用 `sysctl -p` 使其生效貌似还是拿不到 ipv6... |
26
mawen0726 OP @dalaoshu25 我是看到你的信息才回想起这个信息,实在抱歉...但我理解双网卡,只有一个网卡接了网络应该不会有特别大的影响吧....
|
27
mawen0726 OP @rulagiti
找不到这个配置 net.ipv6.conf.forwarding ,找到个相似的 net.ipv6.conf.all.forwarding ,打印的值为 0 |
28
mawen0726 OP |
29
mawen0726 OP 目前问题应该是接收不到 ra ,搜到一个跟我情况相似的问题 https://askubuntu.com/questions/1384508/cannot-accept-ipv6-router-advertisements
这个楼主也是各种设置 sysctl.conf ,netplan apply 、reboot 等操作之后各种恢复成原值或者不生效....感觉像是系统的 bug.... |
30
zwy100e72 34 天前
先通过 `ip link` 确认在线的网卡的名称,配置上不要配错了
另外如果近期没有更新过 ubuntu ,建议通过 `apt update && apt dist-upgrade` 做一轮升级 另外看下 `dmesg` 或者 `journalctl -k -b 0`,看下内核日志是否有相关提示 最后检查下 ubuntu 机器是否有防火墙,之前你 tcpdump 抓包的结果里是有 RA 的 |
31
zwy100e72 34 天前
@yyzh @dalaoshu25 路由器在这里指定了 DHCPv6 生效,不是一般玩法下的 SLAAC
对了,既然这样,抓包时也看下 DHCPv6 的相关包是不是发给路由器了,可以 tcpdump 时用 udp6 来抓 |
32
mawen0726 OP |
33
mawen0726 OP @zwy100e72
抓包时也看下 DHCPv6 的相关包是不是发给路由器了,可以 tcpdump 时用 udp6 来抓 ---- 这个应该要搜什么相关信息或者用什么命令,没找到 tcpdump 跟 udp6 的相关信息 |
34
zwy100e72 34 天前
我这边配置的是 SLAAC ,没条件测试 DHCPv6
抓包的话 `tcpdump -w udp6.pcap -i enp2s0 ip6 and udp`,抓到的 `udp6.pcap` 文件用 Wireshark 打开,可以分析里面是否有 DHCPv6 的交互 具体应该怎么交互建议阅读下 DHCPv6 相关协议 https://www.rfc-editor.org/rfc/rfc8415.html |
35
rulagiti 34 天前
tcpdump -nn "icmp6 && ip6[40] == 134" -vv
查看 slaac 是否收到 |
36
yanyanjia 34 天前
你的用来分配 ipv6 的是 dhcpv6 还是 slaac ,可以用 rdisc6 interfacename 来试一下
|
37
mawen0726 OP @rulagiti
tcpdump 抓了之后我大概看了下,好像是包含了前缀信息?`prefix info option` 这个信息项 ![tcpdump-slaac.png]( https://s1.locimg.com/2024/10/18/d84a11f408d8a.png) ![wireshark-read-slaac.png]( https://s1.locimg.com/2024/10/18/dde7cdb500968.png) |
38
mawen0726 OP |
39
mawen0726 OP @zwy100e72
抓了一下,应该是没有 dhcp6 吧,因为 protocol 没看到 dhcp6 的字样,我是参考的这篇文章的 -> https://www.wpgdadatong.com.cn/blog/detail/74671 DHCPv6 相关协议 全英且太长了,没耐心读下去... |
40
mawen0726 OP |
42
yanyanjia 34 天前
@mawen0726 #38 你这个看起来 dhcpv6 managed 和 slaac 都开启了,你成功收到了 ra 的消息,但是看起来你的 ubuntu 没有按照预期的行为去分配地址,不过你这个回来的消息是从 2408::来的,我记得这个应该是 link local address ,不过我不是网络专家,得 google 一下看看
|
43
yanyanjia 34 天前
@mawen0726 #38 可以看这个,RFC 明确说了“Routers must use their link-local address as the source for Router Advertisement and Redirect messages so that hosts can uniquely identify routers.“, 参考 link: https://datatracker.ietf.org/doc/html/rfc4861#section-6.1.2 ,总结起来就是你的 Ubuntu 没问题,你的路由器没有按照规范用自己的 link local address 来发 RA 消息
|
44
yanyanjia 34 天前
@mawen0726 #38 看到你的网络拓扑了,你的光猫是 dhcpv6 server ?还是小米路由器是 dhcpv6 server ?光猫是桥接还是拨号?如果光猫是拨号,可能问题出现在小米路由器 proxy icmp6 上。你可以让小米路由器来拨号,我估计问题就能解决
|
45
mawen0726 OP @yanyanjia
非常感谢详细回答! 按我朋友之前给我的描述就是,光猫只负责光电传输,没有拨号行为 然后拨号是放到小米路由器上的(内网 ip 192.168.1.2 ),服务器配的 ipv4 gateway 是 192.168.1.2 ,理论上 dhcp6 server 也是小米路由器吧 |
46
dalaoshu25 34 天前
莫名其妙,一群人掉书袋搞什么抓包阅读 RFC ,现在又不是让你搞开发去调试操作系统协议栈代码,别人 Ubuntu 都正常,显然是你设备配置有问题。
什么“小米路由器”一看就不是什么正经东西,有关的路由器配置页面你倒是想办法贴图晒出来啊。 |
47
mawen0726 OP @dalaoshu25
可能是我标题起的有问题吧,以为是系统级别的 bug ,刚刚远程搞了点路由器的信息,不知道够不够 我也认为系统装好连上网络,必然会自动分配 ipv6 ,那也没想到会碰上这种倒霉事... ![路由器配置 1.png]( https://s1.locimg.com/2024/10/18/6ff25cc9009b5.png) ![路由器设置 2.png]( https://s1.locimg.com/2024/10/18/36a892bee3843.png) ![路由器设置 3.png]( https://s1.locimg.com/2024/10/18/85ed96286d4b7.png) |
48
mawen0726 OP @dalaoshu25
再补充一下 ,路由器型号和固件版本 小米路由器 AX6000 MiWiFi 稳定版 1.0.122 |
49
wsseo 32 天前
Ubuntu 默认安装是比宽松的系统,很多东西都是默认开的,防火墙也是默认不激活的,应该不是系统问题。
|
50
mawen0726 OP |
51
molezznet 3 天前
楼主, 也碰到了同样的问题
``` ens3: dhcp6: true accept-ra: true ipv6-privacy: yes ``` ubuntu 虚拟机获取不到 v6 , 其他系统都能获取到。 |
52
mawen0726 OP @molezznet 我看了下我的 vmware 虚拟机,nat 模式,开了 ipv6 ,虚拟机配了 ipv6 ,确实也拿不到 ipv6 ,还没深究过什么情况...
|