在 Ubuntu 上通过 PPPoE 获取 IPv6

在 Ubuntu 上通过 PPPoE 获取 IPv6

我这里的情况很奇怪。如果有人能帮忙,请帮忙。

我们正在讨论使用 Ubuntu 18.04.3 LTS 作为路由器运行的 Linux Box,它有 2 个接口:“lan” - 连接到我的内部 LAN 和“wan” - 连接到我的 ISP。

但是,我的 ISP 需要 PPPoE 连接,因此基本上,“wan”接口仅用作 ppp0 接口的启动器。

我的问题是我无法在此服务器上获取 IPv6 全局地址。

我能够成功连接到我的 ISP。我已经按照这里的教程操作了:http://gruffi.be/mediawiki/index.php/Ipv6_with_PPPoE_on_Ubuntu,但它对我来说不起作用。

因此,我做了以下事情:

  1. /etc/ppp/选项:

    +ipv6 ipv6cp-use-ipaddr
    
  2. /etc/sysctl.conf:

    net.ipv6.conf.all.forwarding=1
    
    net.ipv6.conf.ppp0.accept_ra=2
    
  3. /etc/wide-dhcpv6/dhcp6c.conf:

    interface ppp0 {
    
        send ia-pd 2;
        send ia-na 1;
    };
    
    # Use subnets from the prefix with id 0
    id-assoc pd 2 {
        prefix-interface lan {
            # Assign subnet 1 to eth0
            sla-len 8; # <----- BELANGRIJK: 8 omdat ons klein net 64 en ons groot 56 is en dat het verschil is
            sla-id 2;
        };
    };
    
    id-assoc na 1 { };
    
  4. /etc/radvd.conf:

    interface lan
    {
        AdvSendAdvert on;
        prefix ::/64
        {
            AdvOnLink on;
            AdvAutonomous on;
            AdvRouterAddr on;
        };
    RDNSS 2001:4860:4860::8888  2001:4860:4860::8844
            {
                    # AdvRDNSSLifetime 3600;
            };
    };
    

我的 ISP 告诉我它不使用路由器通告,但是它使用 DHCPv6 前缀委派并提供 /64 子网。

问题是我尝试了网络上的更多配置,但没有一个适合我。

当我“ifconfig ppp0”时,它显示:

inet 1.2.3.4 ...
inet6 fe80::xxxx:yyyy

没有全球 IPv6 地址的迹象。

如果我打开宽 DHCP 客户端上的调试并检查 /var/log/syslog,我会发现它尝试将 Solicit 消息发送到 ff02::1:2%ppp0,并且计时器重置。我没有收到回复。

但是,路由器广告在“ppp0”和我的内网局域网上均有效,因为我有一个默认路由:“default via fe80::1”,当我使用“ip -6 r”时。但是,没有全局 IPv6 地址。

我怀疑这与 DHCP 有关。地址获取不正确。

我可以 ping 通:

ping6 fe80::1%ppp0
64 bytes from...

但是当尝试“ping6 google.com”时,它显示:“超出源地址范围”

从长远来看,我需要做两件事:

  1. 尝试在“ppp0”上获取全局 IPv6 地址,以便我的网站可以通过 IPv6 地址访问(DNS 已处理)

  2. 我需要将 ISP 提供的任何 /64 前缀(比如说:“2001:abcd:dead:beef::/64”)转发到我的内部计算机,但对内部计算机使用固定部分。[/COLOR]

例如:

Computer 1: 2001:abcd:dead:beef::1/64
Computer 2: 2001:abcd:dead:beef::2/64
Computer 3: 2001:abcd:dead:beef::3/64

我既不需要 EUI-64 地址,也不需要私有地址。我希望我的计算机分配一个有序的 IPv6 地址,并指定前缀,而不管动态前缀是什么。

例如,重启后,我可能会得到“2001:1234:beef:dead::/64”。我希望使用“::1", "::2”,等等……

谢谢 !

答案1

对于 #1,您的解决方案可能是使用 pppd 配置中的 ipv6 选项:

+ipv6 启用 IPv6CP 和 IPv6 协议。

ipv6 , 设置本地和/或远程 64 位接口标识符。可以省略其中任何一个。标识符必须以 IPv6 地址的标准 ASCII 表示法指定(例如 ::dead:beef)。如果给出了 ipv6cp-use-ipaddr 选项,则本地标识符是本地 IPv4 地址(参见上文)。在支持唯一持久 ID 的系统上,例如从以太网 MAC 地址派生的 EUI-48,ipv6cp-use-persistent 选项可用于替换 ipv6 , 选项。否则标识符是随机的

因此,如果您使用 ipv6 ::1,那么它会达到您想要的效果吗?作为实验,您可以用 ipv6cp-use-persistent 替换 ipv6cp-use-ipaddr...这应该会为您的 ppp0 提供可预测的全局 ipv6。从那里您可以开始调整 wide-dhcpv6 和 radvd....

相关内容