dhcpv6返回坏子网



我在linux机器和网络上有IPv6,它可以工作。现在我想为它设置DHCP。我设置了isc-DHCP服务器并配置了子网。

另一台linux机器(都是debian7)充当测试客户端,获得IP,但不在配置的范围内,更糟糕的是,获得的是/64子网,而不是/80。

由于路由器上可用的IP池已经是分配给另一台上游机器的/64的子集,所以我需要一个较小的子网。我不能允许它是/64。

dhcp服务器配置:

subnet6 2a01:4f8:202:6106:acda::/80 {
    range6  2a01:4f8:202:6106:acda:f000::/84;
    option dhcp6.name-servers 2a01:4f8:202:6106::2;
    prefix6 2a01:4f8:202:6106:acda:c000:: 2a01:4f8:202:6106:acda:f000:: /84;
}

客户端上的ifconfig输出:

debian@arm:~$ sudo ifconfig
[sudo] password for debian:
eth0      Link encap:Ethernet  HWaddr c8:a0:30:ae:48:24
          inet addr:192.168.0.104  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::caa0:30ff:feae:4824/64 Scope:Link
          inet6 addr: 2a01:4f8:202:6106:acda:ff2f:452c:b7b5/64 Scope:Global
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:185 errors:0 dropped:0 overruns:0 frame:0
          TX packets:201 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:18222 (17.7 KiB)  TX bytes:23159 (22.6 KiB)
          Interrupt:56

同样连接的windows-7计算机根本无法获得IPv6地址。

服务器上radvd的配置(如果重要的话)

interface eth0 {
    AdvSendAdvert on;
    prefix 2a01:4f8:202:6106:acda::/80 {
        AdvOnLink on;
        AdvAutonomous on;
        AdvRouterAddr on;
    };
    route 2000::/3
    {
    };
};

怎么了?为什么不起作用?坏的子网大小是服务器中的错误吗?还是客户?

子网大小不正确的结果是无法访问64位范围内的名称服务器2a01:4f8:202:6106::2。客户端认为它应该在局域网段上,并试图获取链路本地IPv6和它的以太网MAC,但失败了。它需要通过路由器。当我手动将子网设置为/80时,一切都很好。

当然,首先是一般警告:使用非/64子网大小会破坏一切。你的ISP应该给你足够的地址空间,比如/48/56。然后,您可以将/64路由到任何您想要的位置。

然后你必须看看你的ISP是如何给你当前的/64的。如果他们将其路由到连接到服务器eth0接口的LAN,那么除了桥接或代理ND之外,您没有什么可做的,因为您必须使其看起来像所有东西都直接连接到该LAN。这两种方法都有各自的复杂性。

如果你正在桥接到ISP管理的局域网,那么你不应该运行类似radvddhcpd的任何程序,因为你会干扰ISP。

如果您使用的是代理ND或ISP将/64路由到您的服务器(因此您在服务器到ISP的接口上有一个不同的IPv6地址,而ISP则将/64路由到该接口),那么您确实应该运行radvddhcpd,但仅在内部接口上运行,而不是指向ISP。

回到您的RA+DHCPv6设置,因为这部分问题很容易回答。你的radvd设置有三个问题(所以,是的,这很重要:)

首先,除了/64之外,你不能对任何东西执行SLAC(无状态地址自动配置),所以你必须关闭AdvAutonomous。然后,你必须告诉客户端有一个托管(有状态)DHCPv6服务器可用,所以打开AdvManagedFlagroute 2000::/3也是不必要的。你在宣传你是默认网关,而这一点并没有增加任何有用的东西。

interface eth1 {
    AdvSendAdvert on;
    AdvManagedFlag on;
    prefix 2a01:4f8:202:6106:acda::/80 {
        AdvOnLink on;
        AdvAutonomous off;
        AdvRouterAddr on;
    };
};

最新更新