V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
mawen0726
V2EX  ›  宽带症候群

ubuntu2404,物理机获取不到 ipv6

  •  
  •   mawen0726 · 1 天前 · 1279 次点击

    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

    48 条回复    2024-10-18 11:38:00 +08:00
    kenneth104
        1
    kenneth104  
       1 天前
    确定 DHCP 没问题??
    因为你提到物力机,默认就是机房环境,机房环境我遇到的都是静态 v6
    mawen0726
        2
    mawen0726  
    OP
       1 天前
    @kenneth104 不算是机房环境吧,就是将一台淘汰的电脑直接装 Ubuntu 当服务器用了,然后直接接入家里的路由了,家里的其他设备可以自动获取到 ipv6 地址,但是 ubuntu 服务器获取不到,服务器的 dhcp4 倒是可以...不知道是否跟我的 netplan 配置有关
    kenneth104
        3
    kenneth104  
       1 天前
    加上 accept-ra: true 试试?

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

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

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

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

    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
        11
    mawen0726  
    OP
       1 天前
    @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
        12
    laminux29  
       1 天前
    找台虚拟机,安装一下 Ubuntu 的最新版,获取到 IPv6 后,把网络配置文件照抄过来。
    peasant
        13
    peasant  
       1 天前
    OP 有没有检查一下 sysctl 里的 IPv6 相关的配置是不是被禁用了?
    mawen0726
        14
    mawen0726  
    OP
       1 天前
    @peasant
    我之前通过其他电脑知道的路由 ipv6 地址,配了个静态的公网 ipv6 地址来用,用起来倒是没任何问题

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

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

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

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

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

    我这边临时下了一个 ubuntu 24.04.1 LTS 的镜像,走 macvtap 模式直连到我本地网络,安装时开启 ipv6 之后自动可以拿到 v6 地址;装好之后同样可以自动拿到地址
    yyzh
        21
    yyzh  
       22 小时 10 分钟前 via Android
    @dalaoshu25 他路由器有问题吧.从未听说过家庭网络的 ubuntu ipv6 还要折腾的
    dalaoshu25
        22
    dalaoshu25  
       21 小时 36 分钟前
    @yyzh 那简直是一定的。

    我看了一下自己几天前升级的一台 Ubuntu 24.10 机器,/etc/netplan/里面的配置文件根本都没有 dhcpv6 ,啥都好好的。

    偶的路由器是 RouterOS RB4011

    # This is the network config written by 'subiquity'
    network:
    ethernets:
    enp3s0:
    dhcp4: true
    version: 2
    mawen0726
        23
    mawen0726  
    OP
       20 小时 33 分钟前
    @dalaoshu25 可能跟我们换了网卡有关系,貌似没换网卡之前是能直接获取到 ipv6 的...现在上面是两个网卡,但是只有新装的网卡是有网络的
    dalaoshu25
        24
    dalaoshu25  
       20 小时 31 分钟前
    @mawen0726 这个隐藏信息为什么首贴不说?祸害这么多人浪费时间帮你乱折腾。
    mawen0726
        25
    mawen0726  
    OP
       20 小时 18 分钟前
    @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...
    mawen0726
        26
    mawen0726  
    OP
       20 小时 8 分钟前
    @dalaoshu25 我是看到你的信息才回想起这个信息,实在抱歉...但我理解双网卡,只有一个网卡接了网络应该不会有特别大的影响吧....
    mawen0726
        27
    mawen0726  
    OP
       20 小时 7 分钟前
    @rulagiti
    找不到这个配置 net.ipv6.conf.forwarding ,找到个相似的 net.ipv6.conf.all.forwarding ,打印的值为 0
    mawen0726
        28
    mawen0726  
    OP
       20 小时 2 分钟前
    @zwy100e72
    `netplan info` 没看到有用的信息,好像是打印功能特性的...
    楼下的回复提醒我了,机器有两个网卡,但是只有新网卡接了网络,不清楚是不是这个导致的
    非常感谢耐心解答
    mawen0726
        29
    mawen0726  
    OP
       19 小时 43 分钟前
    目前问题应该是接收不到 ra ,搜到一个跟我情况相似的问题 https://askubuntu.com/questions/1384508/cannot-accept-ipv6-router-advertisements

    这个楼主也是各种设置 sysctl.conf ,netplan apply 、reboot 等操作之后各种恢复成原值或者不生效....感觉像是系统的 bug....
    zwy100e72
        30
    zwy100e72  
       19 小时 26 分钟前
    先通过 `ip link` 确认在线的网卡的名称,配置上不要配错了

    另外如果近期没有更新过 ubuntu ,建议通过 `apt update && apt dist-upgrade` 做一轮升级

    另外看下 `dmesg` 或者 `journalctl -k -b 0`,看下内核日志是否有相关提示

    最后检查下 ubuntu 机器是否有防火墙,之前你 tcpdump 抓包的结果里是有 RA 的
    zwy100e72
        31
    zwy100e72  
       19 小时 16 分钟前
    @yyzh @dalaoshu25 路由器在这里指定了 DHCPv6 生效,不是一般玩法下的 SLAAC

    对了,既然这样,抓包时也看下 DHCPv6 的相关包是不是发给路由器了,可以 tcpdump 时用 udp6 来抓
    mawen0726
        32
    mawen0726  
    OP
       19 小时 15 分钟前
    @zwy100e72
    网卡名称应该是没有错的,我现在尝试一下升级试试

    防火墙是有的,关闭之后 `netplan apply` 也没效果

    dmesg 这个我去排查下
    mawen0726
        33
    mawen0726  
    OP
       19 小时 10 分钟前
    @zwy100e72
    抓包时也看下 DHCPv6 的相关包是不是发给路由器了,可以 tcpdump 时用 udp6 来抓 ---- 这个应该要搜什么相关信息或者用什么命令,没找到 tcpdump 跟 udp6 的相关信息
    zwy100e72
        34
    zwy100e72  
       18 小时 40 分钟前
    我这边配置的是 SLAAC ,没条件测试 DHCPv6

    抓包的话 `tcpdump -w udp6.pcap -i enp2s0 ip6 and udp`,抓到的 `udp6.pcap` 文件用 Wireshark 打开,可以分析里面是否有 DHCPv6 的交互

    具体应该怎么交互建议阅读下 DHCPv6 相关协议 https://www.rfc-editor.org/rfc/rfc8415.html
    rulagiti
        35
    rulagiti  
       11 小时 31 分钟前
    tcpdump -nn "icmp6 && ip6[40] == 134" -vv

    查看 slaac 是否收到
    yanyanjia
        36
    yanyanjia  
       9 小时 0 分钟前
    你的用来分配 ipv6 的是 dhcpv6 还是 slaac ,可以用 rdisc6 interfacename 来试一下
    mawen0726
        37
    mawen0726  
    OP
       8 小时 47 分钟前
    @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)
    mawen0726
        38
    mawen0726  
    OP
       8 小时 40 分钟前
    @yanyanjia
    不是看的很懂,但是看到了前缀等信息
    ![rdisc6.png]( https://s1.locimg.com/2024/10/18/02dd349058f32.png)
    mawen0726
        39
    mawen0726  
    OP
       8 小时 29 分钟前
    @zwy100e72
    抓了一下,应该是没有 dhcp6 吧,因为 protocol 没看到 dhcp6 的字样,我是参考的这篇文章的 -> https://www.wpgdadatong.com.cn/blog/detail/74671

    DHCPv6 相关协议 全英且太长了,没耐心读下去...
    mawen0726
        40
    mawen0726  
    OP
       8 小时 17 分钟前
    @zwy100e72
    补充一下 wireshark 截图
    ![wireshark.png]( https://s1.locimg.com/2024/10/18/d111709e2ed3f.png)
    rulagiti
        41
    rulagiti  
       8 小时 11 分钟前
    @mawen0726
    是的,不过你这 router lifetime 60s 有点小啊。
    yanyanjia
        42
    yanyanjia  
       8 小时 8 分钟前
    @mawen0726 #38 你这个看起来 dhcpv6 managed 和 slaac 都开启了,你成功收到了 ra 的消息,但是看起来你的 ubuntu 没有按照预期的行为去分配地址,不过你这个回来的消息是从 2408::来的,我记得这个应该是 link local address ,不过我不是网络专家,得 google 一下看看
    yanyanjia
        43
    yanyanjia  
       7 小时 55 分钟前
    @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 消息
    yanyanjia
        44
    yanyanjia  
       7 小时 52 分钟前
    @mawen0726 #38 看到你的网络拓扑了,你的光猫是 dhcpv6 server ?还是小米路由器是 dhcpv6 server ?光猫是桥接还是拨号?如果光猫是拨号,可能问题出现在小米路由器 proxy icmp6 上。你可以让小米路由器来拨号,我估计问题就能解决
    mawen0726
        45
    mawen0726  
    OP
       7 小时 15 分钟前
    @yanyanjia
    非常感谢详细回答!
    按我朋友之前给我的描述就是,光猫只负责光电传输,没有拨号行为
    然后拨号是放到小米路由器上的(内网 ip 192.168.1.2 ),服务器配的 ipv4 gateway 是 192.168.1.2 ,理论上 dhcp6 server 也是小米路由器吧
    dalaoshu25
        46
    dalaoshu25  
       7 小时 9 分钟前
    莫名其妙,一群人掉书袋搞什么抓包阅读 RFC ,现在又不是让你搞开发去调试操作系统协议栈代码,别人 Ubuntu 都正常,显然是你设备配置有问题。

    什么“小米路由器”一看就不是什么正经东西,有关的路由器配置页面你倒是想办法贴图晒出来啊。
    mawen0726
        47
    mawen0726  
    OP
       6 小时 55 分钟前
    @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)
    mawen0726
        48
    mawen0726  
    OP
       6 小时 50 分钟前
    @dalaoshu25
    再补充一下 ,路由器型号和固件版本 小米路由器 AX6000 MiWiFi 稳定版 1.0.122
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3387 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 10:28 · PVG 18:28 · LAX 03:28 · JFK 06:28
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.