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

ubuntu2404,物理机获取不到 ipv6

  •  
  •   mawen0726 · 35 天前 · 1920 次点击
    这是一个创建于 35 天前的主题,其中的信息可能已经有所发展或是发生改变。

    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

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

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

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

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

    然后小米路由器的 ipv6 提供了 3 个 ipv6 方式,native ,nat6 和静态 ipv6 ,目前用的是 native ,拿到的是一个公网 ipv6 地址
    mawen0726
        9
    mawen0726  
    OP
       35 天前
    @laminux29
    可以的,其他设备在一样的网络环境下倒是能拿到分发的公网 ipv6
    zwy100e72
        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 协议
    mawen0726
        11
    mawen0726  
    OP
       35 天前
    @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  
       35 天前
    找台虚拟机,安装一下 Ubuntu 的最新版,获取到 IPv6 后,把网络配置文件照抄过来。
    peasant
        13
    peasant  
       35 天前
    OP 有没有检查一下 sysctl 里的 IPv6 相关的配置是不是被禁用了?
    mawen0726
        14
    mawen0726  
    OP
       35 天前
    @peasant
    我之前通过其他电脑知道的路由 ipv6 地址,配了个静态的公网 ipv6 地址来用,用起来倒是没任何问题

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

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

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

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

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

    我这边临时下了一个 ubuntu 24.04.1 LTS 的镜像,走 macvtap 模式直连到我本地网络,安装时开启 ipv6 之后自动可以拿到 v6 地址;装好之后同样可以自动拿到地址
    yyzh
        21
    yyzh  
       35 天前 via Android
    @dalaoshu25 他路由器有问题吧.从未听说过家庭网络的 ubuntu ipv6 还要折腾的
    dalaoshu25
        22
    dalaoshu25  
       35 天前
    @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
       35 天前
    @dalaoshu25 可能跟我们换了网卡有关系,貌似没换网卡之前是能直接获取到 ipv6 的...现在上面是两个网卡,但是只有新装的网卡是有网络的
    dalaoshu25
        24
    dalaoshu25  
       35 天前
    @mawen0726 这个隐藏信息为什么首贴不说?祸害这么多人浪费时间帮你乱折腾。
    mawen0726
        25
    mawen0726  
    OP
       35 天前
    @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
       35 天前
    @dalaoshu25 我是看到你的信息才回想起这个信息,实在抱歉...但我理解双网卡,只有一个网卡接了网络应该不会有特别大的影响吧....
    mawen0726
        27
    mawen0726  
    OP
       35 天前
    @rulagiti
    找不到这个配置 net.ipv6.conf.forwarding ,找到个相似的 net.ipv6.conf.all.forwarding ,打印的值为 0
    mawen0726
        28
    mawen0726  
    OP
       35 天前
    @zwy100e72
    `netplan info` 没看到有用的信息,好像是打印功能特性的...
    楼下的回复提醒我了,机器有两个网卡,但是只有新网卡接了网络,不清楚是不是这个导致的
    非常感谢耐心解答
    mawen0726
        29
    mawen0726  
    OP
       35 天前
    目前问题应该是接收不到 ra ,搜到一个跟我情况相似的问题 https://askubuntu.com/questions/1384508/cannot-accept-ipv6-router-advertisements

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

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

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

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

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

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

    dmesg 这个我去排查下
    mawen0726
        33
    mawen0726  
    OP
       35 天前
    @zwy100e72
    抓包时也看下 DHCPv6 的相关包是不是发给路由器了,可以 tcpdump 时用 udp6 来抓 ---- 这个应该要搜什么相关信息或者用什么命令,没找到 tcpdump 跟 udp6 的相关信息
    zwy100e72
        34
    zwy100e72  
       35 天前
    我这边配置的是 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  
       34 天前
    tcpdump -nn "icmp6 && ip6[40] == 134" -vv

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

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

    什么“小米路由器”一看就不是什么正经东西,有关的路由器配置页面你倒是想办法贴图晒出来啊。
    mawen0726
        47
    mawen0726  
    OP
       34 天前
    @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
       34 天前
    @dalaoshu25
    再补充一下 ,路由器型号和固件版本 小米路由器 AX6000 MiWiFi 稳定版 1.0.122
    wsseo
        49
    wsseo  
       32 天前
    Ubuntu 默认安装是比宽松的系统,很多东西都是默认开的,防火墙也是默认不激活的,应该不是系统问题。
    mawen0726
        50
    mawen0726  
    OP
       31 天前
    @wsseo
    @yanyanjia
    @rulagiti
    @zwy100e72
    周末换了路由器再去测试,发现没问题了。然后再换回小米路由器,也正常了....
    接着回看之前异常状态下 windows 拿到的 ipv6 地址,也是怪怪的,只有一个 ipv6 地址,没有临时 ipv6 地址啥的(印象中有 4 个)
    也不知道是哪个环境出问题了,现在服务器能正常获取到 ipv6 地址了
    以后遇事不决还是先重启大法吧

    非常感谢解答~学会了挺多新知识
    molezznet
        51
    molezznet  
       3 天前
    楼主, 也碰到了同样的问题
    ```
    ens3:
    dhcp6: true
    accept-ra: true
    ipv6-privacy: yes

    ```
    ubuntu 虚拟机获取不到 v6 , 其他系统都能获取到。
    mawen0726
        52
    mawen0726  
    OP
       3 天前
    @molezznet 我看了下我的 vmware 虚拟机,nat 模式,开了 ipv6 ,虚拟机配了 ipv6 ,确实也拿不到 ipv6 ,还没深究过什么情况...
    mawen0726
        53
    mawen0726  
    OP
       3 天前
    @molezznet 我又试了下,直接用桥接模式是可以的(前提是网卡要对,要能公网访问)。nat 的话,配置 ipv6 那里,用你当前所在的真实 ipv6 配置前 112 位,即 xxxx::xxxx/16 ,则可以分配到,貌似虚拟的分配不到,fd 开头的
    molezznet
        54
    molezznet  
       2 天前
    @mawen0726 还真是挺无语的,就是 bridge , 其他系统都 ok , 难道真是小 bug …… 罢了罢了, 换
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2469 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 15:55 · PVG 23:55 · LAX 07:55 · JFK 10:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.