Ubuntu 作为 IPv6 路由器不采用来自上游 RA 的默认路由

jus*_*ian 1 linux routing ipv6 radvd

我有一个 Ubuntu 14.04 盒子作为我的家庭路由器。我有一个由 ISP 委派的 IPv6 /64,并且我正在使用 RA 和 WIDE DHCPv6 客户端来配置 IPv6。一切正常,除了没有设置默认路由。如果我用来radvdump查看 WAN 接口上的 RA 包并使用它来手动设置默认路由,一切都会完美运行。

我可以(目前,我确实)只是将此手动路由规范作为WAN 接口的up命令/etc/network/interfaces,但这并不理想 - 似乎每次我的 ISP 进行维护时,路由器的地址都会发生变化,并且我有再次重新配置它。我想从 RA 获取路线,但我似乎无法获取该设置。我错过了什么吗?

eth1我的WAN接口是WAN接口,eth0LAN接口是LAN接口。

系统控制设置

root@nix $ grep ipv6 /etc/sysctl.conf
net.ipv6.conf.default.forwarding=1
net.ipv6.conf.eth1.accept_ra=2         # The WAN interface
net.ipv6.conf.eth1.accept_ra_defrtr=1
net.ipv6.conf.eth0.accept_ra=0         # The LAN interface
net.ipv6.conf.all.accept_redirects = 0
Run Code Online (Sandbox Code Playgroud)

宽配置

interface eth1 # WAN
{
  send ia-na 1;
  send ia-pd 1;
  request domain-name-servers;
  request domain-name;

  script "/etc/wide-dhcpv6/dhcp6c-script"; # does resolvconf work
};

id-assoc pd 1 {
  prefix-interface eth0 { # LAN
    sla-id 0;
        ifid 1;
        sla-len 0;
  };
};

id-assoc na 1 {
};
Run Code Online (Sandbox Code Playgroud)

radvd配置

interface eth0
{
        AdvManangedFlag off;
        AdvOtherConfigFlag off;
        AdvSendAdvert on;
        AdvLinkMTU 1280;
        prefix ::/64
        {
                AdvOnLink on;
                AdvAutonomous on;
        };
};
Run Code Online (Sandbox Code Playgroud)

/etc/网络/接口

# The loopback network interface
auto lo
iface lo inet loopback

# The LAN interface
auto eth0
iface eth0 inet static
        address 172.20.0.1
        netmask 255.255.255.0

# The WAN interface
auto eth1
iface eth1 inet dhcp
iface eth1 inet6 auto
        # My current workaround:
        up ip -6 route add default via fe80::21b:edff:feb2:d481 dev eth1
Run Code Online (Sandbox Code Playgroud)

任何帮助,将不胜感激!

San*_*ann 5

accept_ra当启用转发时,Linux 将关闭。要在上游接口上强制启用它(假设eth0),您可以使用net.ipv6.conf.eth0.accept_ra = 2. 即使启用转发,这也会强制接口接受路由器通告。