IPv6 通过 PPPoe?

IPv6 通过 PPPoe?

通过 PPPoe 获取 IPv6 地址的最佳方法是什么?

我目前使用 NM-Applet 从我的 ISP 获取互联网服务,但它在 PPPOE 连接上没有 IPv6 选项卡。我不介意使用一些命令行工具,但如果必须这样做,将我的设置从 NM-applet 转移到任何工具上会更好。

答案1

您可以尝试添加

+ipv6 ipv6cp-use-ipaddr

到 /etc/ppp/options。根据您的 ISP 提供 IPv6 的方式,这可能足以为机器本身提供 IPv6。

许多 ISP 假设路由器通过 PPPoE 而不是 PC 进行连接,因此这可能不适合您。在这种情况下,获取 IPv6 的唯一方法是将您的机器配置为路由器。然后它应该使用 IPv6 的 DHCP 来请求前缀委派。它获得的前缀可用于将 /64 子网分配给您的网络或本地机器。如果您想为本地网络提供 IPv6 服务,您应该运行 radvd(路由器广告守护程序)来宣传您的机器是路由器。

最简单的方法是使用 wide-dhcpdv6。基本思想是从一个接口请求前缀委托,然后使用该前缀将子网分配给其他接口,例如:

interface ppp0 {
    # Request Prefix Delegation on ppp0, and give the received prefix id 0
    send ia-pd 0;
};

# Use subnets from the prefix with id 0
id-assoc pd 0 {
    prefix-interface eth0 {
        # Assign subnet 1 to eth0
        sla-id 1;
    };
};

假设您从 ISP 收到前缀 2001:db8:1234::/48。此示例会将 2001:db8:1234:1::/64 分配给 eth0。

基本的 radvd.conf 如下所示:

interface eth0
{
    AdvSendAdvert on;
    prefix ::/64
    {
        AdvOnLink on;
        AdvAutonomous on;
    };
};

哦,别忘了放

net.ipv6.conf.all.forwarding=1

在你的 /etc/sysctl.conf 中。

答案2

Sander Steffann 的回答很棒,但如果你发现你获得了 IPv6 地址(可以通过ip addr或检查ifconfig),但mtr -6 www.google.com仍然不起作用,则这可能是由本地路由器中的某种默认路由分配引起的(可以通过ip -6 route或检查netstat -6rn)。

解决此问题的一种方法是禁用以太网端口上的 RA,如下所示(更改中的现有文件/etc/netplan/):

network:
    version: 2
    renderer: networkd
    ethernets:
        enp3s0:
            accept-ra: false

相关内容