ip -6 地址

ip -6 地址

我有一台 Ubiquiti 路由器,其上的 ipv6 似乎运行良好。 的输出radvdump以及其他各种相关数据如下。我的问题在于路由器后面的 ubuntu 16.04 机器上的 ipv6。

在 WAN 端将路由器设置为 DHCP 客户端,在 LAN 端将前缀委派/{无状态,有状态} DHCP 服务器设置为客户端上仅有的链路本地地址。在 WAN 端将路由器设置为 {DHCP​​ 客户端,SLAAC},在 LAN 端设置静态地址,在客户端设置 {无状态,有状态} DHCP 服务器,这样可以为我在客户端提供 ipv6 地址,但没有连接。

我理解我可能需要编辑网络管理器配置 /etc/dhclient.conf,尽管 sysctl 中的键也相关,但它们可能与网络管理器配合不佳。我很感激任何关于如何开始的建议。

另外,我犹豫是否要在 Ubuntu 客户端上安装 radvd。我担心它可能与客户端上的 DHCP 或 SLAAC 功能冲突。这是个问题吗?

--------------------------------------------------------------------------------

# radvdump[运行路由器]

interface ath0
{
    AdvSendAdvert on;
    # Note: {Min,Max}RtrAdvInterval cannot be obtained with radvdump
    AdvManagedFlag off;
    AdvOtherConfigFlag on;
    AdvReachableTime 0;
    AdvRetransTimer 0;
    AdvCurHopLimit 64;
    AdvDefaultLifetime 1800;
    AdvHomeAgentFlag off;
    AdvDefaultPreference medium;
    AdvSourceLLAddress on;

    RDNSS 2607:X:X:X::53
    {
        AdvRDNSSPreference 0;
        AdvRDNSSOpen off;
        AdvRDNSSLifetime 1800;
    }; # End of RDNSS definition


    prefix 2607:X:Y:Y::/64
    {
        AdvValidLifetime 2592000;
        AdvPreferredLifetime 604800;
        AdvOnLink on;
        AdvAutonomous on;
        AdvRouterAddr off;
    }; # End of prefix definition

}; # End of interface definition
#
# radvd configuration generated by radvdump 1.2
# based on Router Advertisement from fe80::Z:Z:Z:Z
# received by interface ath0

ip -6 地址[在路由器]

inet6 2607:X:X:X:Y:yff:fey:Y/64 scope global dynamic
plus a link-local address

$ip -6 地址[在客户. 第一个地址仅在使用状态服务器时存在]

inet6 2607:X:X:X::x/128         scope global dynamic
inet6 2607:X:X:X:Y':Y':Y':Y'/64 scope global temporary dynamic 
inet6 2607:X:X:X:Z:Z:Z:Z/64     scope global mngtmpaddr noprefixroute dynamic

$ip -6 路由[在客户. 第一个路由仅在使用状态服务器时存在,并且 fe80::Y:yff:fey:Y 是路由器 LAN 接口的链路本地 ip]

2607:X:X:X::x dev enp0s25 proto kernel metric 256 expires 86292sec pref medium 
2607:X:X:X::/64 via fe80::Y:yff:fey:Y dev enp0s25 proto ra metric 100 pref medium
2607:X:X:X::/64 dev enp0s25 proto kernel metric 256 expires 7090sec pref medium
fe80::/64 dev enp0s25 proto kernel metric 256 pref medium
default via fe80::Y:yff:fey:Y dev enp0s25 proto static metric 100 pref medium
plus a link-local address

$猫/等/网络/接口[与 ubuntu 安装相同]

auto lo
iface lo inet loopback

$sudo sysctl -a | grep accept_ra

net.ipv6.conf.all.accept_ra = 1
net.ipv6.conf.all.accept_ra_defrtr = 1
net.ipv6.conf.all.accept_ra_from_local = 0
net.ipv6.conf.all.accept_ra_min_hop_limit = 1
net.ipv6.conf.all.accept_ra_mtu = 1
net.ipv6.conf.all.accept_ra_pinfo = 1
net.ipv6.conf.all.accept_ra_rt_info_max_plen = 0
net.ipv6.conf.all.accept_ra_rtr_pref = 1
net.ipv6.conf.default.accept_ra = 1
net.ipv6.conf.default.accept_ra_defrtr = 1
net.ipv6.conf.default.accept_ra_from_local = 0
net.ipv6.conf.default.accept_ra_min_hop_limit = 1
net.ipv6.conf.default.accept_ra_mtu = 1
net.ipv6.conf.default.accept_ra_pinfo = 1
net.ipv6.conf.default.accept_ra_rt_info_max_plen = 0
net.ipv6.conf.default.accept_ra_rtr_pref = 1
net.ipv6.conf.enp0s25.accept_ra = 1
net.ipv6.conf.enp0s25.accept_ra_defrtr = 0
net.ipv6.conf.enp0s25.accept_ra_from_local = 0
net.ipv6.conf.enp0s25.accept_ra_min_hop_limit = 1
net.ipv6.conf.enp0s25.accept_ra_mtu = 1
net.ipv6.conf.enp0s25.accept_ra_pinfo = 0
net.ipv6.conf.enp0s25.accept_ra_rt_info_max_plen = 0
net.ipv6.conf.enp0s25.accept_ra_rtr_pref = 0
net.ipv6.conf.lo.accept_ra = 1
net.ipv6.conf.lo.accept_ra_defrtr = 1
net.ipv6.conf.lo.accept_ra_from_local = 0
net.ipv6.conf.lo.accept_ra_min_hop_limit = 1
net.ipv6.conf.lo.accept_ra_mtu = 1
net.ipv6.conf.lo.accept_ra_pinfo = 1
net.ipv6.conf.lo.accept_ra_rt_info_max_plen = 0
net.ipv6.conf.lo.accept_ra_rtr_pref = 1
net.ipv6.conf.virbr0.accept_ra = 0
net.ipv6.conf.virbr0.accept_ra_defrtr = 1
net.ipv6.conf.virbr0.accept_ra_from_local = 0
net.ipv6.conf.virbr0.accept_ra_min_hop_limit = 1
net.ipv6.conf.virbr0.accept_ra_mtu = 1
net.ipv6.conf.virbr0.accept_ra_pinfo = 1
net.ipv6.conf.virbr0.accept_ra_rt_info_max_plen = 0
net.ipv6.conf.virbr0.accept_ra_rtr_pref = 1
net.ipv6.conf.virbr0-nic.accept_ra = 1
net.ipv6.conf.virbr0-nic.accept_ra_defrtr = 1
net.ipv6.conf.virbr0-nic.accept_ra_from_local = 0
net.ipv6.conf.virbr0-nic.accept_ra_min_hop_limit = 1
net.ipv6.conf.virbr0-nic.accept_ra_mtu = 1
net.ipv6.conf.virbr0-nic.accept_ra_pinfo = 1
net.ipv6.conf.virbr0-nic.accept_ra_rt_info_max_plen = 0
net.ipv6.conf.virbr0-nic.accept_ra_rtr_pref = 1
net.ipv6.conf.wlp3s0.accept_ra = 0
net.ipv6.conf.wlp3s0.accept_ra_defrtr = 0
net.ipv6.conf.wlp3s0.accept_ra_from_local = 0
net.ipv6.conf.wlp3s0.accept_ra_min_hop_limit = 1
net.ipv6.conf.wlp3s0.accept_ra_mtu = 1
net.ipv6.conf.wlp3s0.accept_ra_pinfo = 0
net.ipv6.conf.wlp3s0.accept_ra_rt_info_max_plen = 0
net.ipv6.conf.wlp3s0.accept_ra_rtr_pref = 0

答案1

在 WAN 端将路由器设置为 DHCP 客户端,在 LAN 端将前缀委派/{无状态,有状态} DHCP 服务器设置为客户端上仅有的链路本地地址。在 WAN 端将路由器设置为 {DHCP​​ 客户端,SLAAC},在 LAN 端设置静态地址,在客户端设置 {无状态,有状态} DHCP 服务器,这样可以为我在客户端提供 ipv6 地址,但没有连接。

根据这一点以及您的评论,您似乎正在将 SLAAC 公布的 WAN 前缀直接复制到 LAN 接口的配置中。这行不通(原因与 IPv4 上的 WAN DHCP 行不通的原因相同)。

在 IPv6 SLAAC 中,就像在 IPv4 DHCP 中一样,通告的前缀仅指示该子网WAN 接口路由器会从该子网中选择自己的 WAN 地址。但是,这与 LAN 端无关 - 您的路由器是路由器,而不是网桥,因此 LAN 是其自己的网络,需要自己的前缀

要获取 LAN 接口的前缀,路由器通常必须发送前缀委托通过使用请求DHCPv6 协议在 WAN 端。(通常会有一些集成自动开始将委托前缀通告给 LAN。)

您可以请求多大的前缀取决于 ISP(有些提供最多 /60,有些提供最多 /56 等) - 但各个 LAN 接口仍必须使用 /64。

(话虽如此,并非所有 ISP 都提供 DHCPv6-PD;有时您必须自己申请 IPv6 前缀并进行配置手动。还有一个选项是继续使用 IPv4 实践,即为 LAN 使用私有地址范围,并在路由器上进行 1:多 NAT(伪装)。不过,除非万不得已,否则我不会推荐 1:多 NAT;它在 IPv4 上已经够糟糕了。)

另外,我正在犹豫是否在 Ubuntu 客户端上安装 radvd。

不,完全不需要。这就像尝试在客户端上安装 DHCP 服务器一样。

相关内容