我想在我的本地networking上为IPv6设置一个DHCP服务器,它发布地址和更多信息,如DNS / NTP等等。 从我的ISP那里得到了IPv6前缀,我将在后面的片段中提到这一点。
我使用isc-dhcp-server。 在/etc/dhcpd.conf下我有
option dhcp6.name-servers <prefix>::2; option dhcp6.info-refresh-time 21600; subnet6 <prefix>::/64 { range6 <prefix>::1 2<prefix>::ffff:ffff; }
eth0接口(连接到路由器)在/ etc / networking / interfaces文件中静态configuration:
iface eth0 inet6 static address <prefix>::2 netmask 64
客户端具有networkingpipe理器的Ubuntu 14.04 LTS,并通过wlan0接口绑定到路由器(路由器充当接入点)。 在从IPv6选项卡的Ubuntunetworkingpipe理器的GUIconfiguration下,我select“方法:自动,只有DHCP”(所以我期望客户端有状态的DHCPv6configuration – 它应该得到一个ipv6地址超出上述定义的范围)。
但是,这不会发生。 ifconfig暗示客户端是使用无状态方法configuration的(configuration的ipv6地址的客户端wlan0 HW-Address编码)
我怀疑路由器有错误的广告标志设置。 但是我不能configuration路由器,因为它是由ISP提供的。 我能做什么? 有什么build议吗?
简而言之:我认为DHCP服务器在错误的界面上侦听。
长答案:假设您从ISP获得前缀2001:DB8:1234 :: / 48。 另外我们假设你的路由器有两个networking接口:eth0(上行到ISP)和wlan0(对于客户端)。 如果您现在configuration您的DHCPv6服务器,请执行以下操作:
subnet6 2001:DB8:1234::/64 { range6 2001:DB8:1234::10 2001:DB8:1234::ffff:ffff; }
那么启动DHCP服务器后,它将在服务器上查找在2001年configuration的接口:DB8:1234 :: / 64范围,并在这些接口上侦听DHCP请求。
这意味着服务器接口必须configuration
另外你应该用一些debugging输出来启动服务器来testing请求是否来自客户端。 对于ISC dhcpd,您可以使用“-d -f”选项,例如
/usr/sbin/dhcpd -6 -cf /etc/dhcp/dhcpd.conf -pf /var/run/dhcpd.pid -f -d