我的 ISP 开始使用 DHCPv6,这意味着/etc/网络/接口...
auto lo eth0 eth1
iface lo inet loopback
allow-hotplug eth0
iface eth0 inet static
address 192.168.0.1
netmask 255.255.255.0
allow-hotplug eth1
iface eth1 inet dhcp
iface eth1 inet6 dhcp
... 我的 Debian Wheezy 路由器终于获得了分配的 IPv6 地址(耶!)。
但是为了让我的路由器为 LAN 内的所有工作站分配 IPv6 地址,我接下来需要做什么?
使用 IPv4,我要做的就是在 WAN 接口上启用 DHCP 客户端,为路由器和工作站分配静态 IPv4 地址,最后设置 NAT(我用于iptables -t nat -a POSTROUTING -s 192.168.0.0/32 ! -d 192.168.0.0/32 -j MASQUERADE
此)。
IPv6 没有 NAT。我研究过電視和isc-dhcp 服务器,但两者似乎都需要在其配置文件中设置前缀(即不会更改的前缀)。但我的 ISP 似乎每次重新连接时都会为我提供一个新的前缀。
我真的迷路了。
答案1
您没有说您的 ISP 是谁,但以下内容在 Comcast 已推出 IPv6 的地区有效。
我不得不使用 wide-dhcpv6-client,因为其他 DHCPv6 客户端都无法同时处理面向 ISP 的接口的地址、前缀委派以及康卡斯特的最大 /60 网络掩码。
安装 wide-dhcpv6-client 后,编辑 /etc/network/interfaces 以使 eth1 IPv6 设置如下所示:
iface eth1 inet6 auto
post-up sysctl -w net.ipv6.conf.ext0.accept_ra=2
编辑 /etc/wide-dhcpv6/dhcp6c.conf 使其看起来像这样:
profile default
{
information-only;
request domain-name-servers;
request domain-name;
script "/etc/wide-dhcpv6/dhcp6c-script";
};
interface eth1 {
send rapid-commit;
send ia-na 0;
send ia-pd 0;
};
id-assoc na 0 {
};
id-assoc pd 0 {
prefix ::/60 infinity;
# Internal interface (LAN)
prefix-interface eth0 {
sla-len 4;
sla-id 0;
ifid 1;
};
};
“na”部分获取 eth1(面向您的 ISP)的 IPv6 地址。“pd”部分获取内部网络的前缀委派,并将 IPv6 地址“[prefix]::1”分配给 eth0(您的内部接口)。如果您有其他内部网络,您可以为这些接口添加其他“prefix-interface”部分,并为每个接口增加“sla-id”。
然后,您需要在系统上为您的内部网络安装一个路由器广告守护进程。您可以使用 radvd 或 dnsmasq。
如果你正在使用 dnsmasq,则 /etc/dnsmasq.conf 中针对 IPv6 的必要添加内容如下
# Enable IPv6 Router Advertisement (RA) features.
enable-ra
# Advertise delegated prefix based on the IPv6 address of eth0.
dhcp-range = ::1,constructor:eth0, ra-stateless, ra-names, 4h
您需要安装 Debian 测试版的 dnsmasq,因为 Debian wheezy 附带的版本无法正确进行路由器广告。
然后 ifdown 和 ifup 您的外部接口,确保 dhcp6c 正在运行,并查看您的外部和内部接口是否都有除本地链路地址(“fe80::...”地址)之外的 IPv6 地址。如果所有操作均成功,请重新启动 dnsmasq,然后 LAN 上的系统应开始自动为自己配置 IPv6 地址。