我正在尝试在 Linux 机器上使用 ISC DHCPv6 设置一个简单的 IPv6 网络。
这是我的 dhcpd6.conf:
subnet6 beef:fade::/112 {
max-lease-time 3600;
range6 beef:fade::100 beef:fade::fffe;
}
dhcpv6 服务器工作并为指定范围内的连接主机分配地址,但是,连接的设备无法互相 ping 通或 ping dhcpv6 服务器,因为它们使用 128 作为网络掩码。
在网上查找后,我发现这是由于缺少 RA 造成的。因此,我下载并启动了 RADVD,启用了 ipv6 转发,并禁用了防火墙。这是我的 radvd.conf:
interface enp1s0
{
AdvSendAdvert on;
MinRtrAdvInterval 3;
MaxRtrAdvInterval 10;
prefix beef:fade::/112
{
AdvOnLink on;
AdvAutonomous off;
};
};
但这会导致 radvd 说:enp1s0 prefix length should be: 64
。但我不想要 64 长度的前缀。我希望能够根据需要将其设置为几乎任何长度。
我该如何做呢?我唯一的要求是必须使用 ISC DHCPv6 实现。
另外,假设我可以让它工作。当在 DHCPv6 服务器上启用防火墙时,我必须向防火墙添加哪些规则才能使其工作。
答案1
显然enp1s0 prefix length should be: 64
这只是一个警告,而不是问题的原因。
在我的特定情况下,此方法不起作用的原因是客户端不接受 RA。要在 Linux 机器上接受 RA,您必须设置/proc/sys/net/ipv6/conf/eth0/accept_ra
为1
或2
。
答案2
我使用 debian 11。根据我的经验,您不需要对 ipv6 使用全状态寻址。更重要的是使用 ISP 提供给您的路由广告,您不需要 dhcpv6。我的连接是 pppd。我现在明白了,对于 ipv6,我不需要在 /etc/network/interfaces 中进行任何设置:
auto dsl-provider
iface dsl-provider inet ppp
pre-up /bin/ip link set enp2s0 up # line maintained by pppoeconf
provider dsl-provider
allow-hotplug enp3s0
iface enp3s0 inet static
address 192.168.1.1/24
allow-hotplug enp4s0
iface enp4s0 inet static
address 192.168.2.1/24
allow-hotplug enp5s0
iface enp5s0 inet static
address 192.168.3.1/24
为了在我的网络中提高 ip6,我使用 WIDE-DHCPV6 并在 /etc/wide-dhcpv6/dhcp6c.conf 中进行以下简单设置:
interface ppp0 {
request domain-name-servers;
request domain-name;
send ia-na 1;
send ia-pd 1;
};
id-assoc na 1 {
};
id-assoc pd 1{
prefix ::/56 infinity;
prefix-interface enp3s0 {
sla-id 1;
sla-len 8;
};
prefix-interface enp4s0 {
sla-id 2;
sla-len 8;
};
prefix-interface enp5s0 {
sla-id 3;
sla-len 8;
};
};
参考:https://major.io/2015/09/11/time-warner-road-runner-linux-and-large-ipv6-subnets/ 现在我的网络如下所示:
root@srv1:~# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:e2:69:59:33:6a brd ff:ff:ff:ff:ff:ff
inet6 fe80::2e2:69ff:fe59:336a/64 scope link
valid_lft forever preferred_lft forever
3: enp3s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000
link/ether 00:e2:69:59:33:6b brd ff:ff:ff:ff:ff:ff
inet 192.168.1.1/24 brd 192.168.1.255 scope global enp3s0
valid_lft forever preferred_lft forever
inet6 2a02:2f0e:d114:4b01:2e2:69ff:fe59:336b/64 scope global
valid_lft forever preferred_lft forever
inet6 fe80::2e2:69ff:fe59:336b/64 scope link
valid_lft forever preferred_lft forever
4: enp4s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:e2:69:59:33:6c brd ff:ff:ff:ff:ff:ff
inet 192.168.2.1/24 brd 192.168.2.255 scope global enp4s0
valid_lft forever preferred_lft forever
inet6 2a02:2f0e:d114:4b02:2e2:69ff:fe59:336c/64 scope global
valid_lft forever preferred_lft forever
inet6 fe80::2e2:69ff:fe59:336c/64 scope link
valid_lft forever preferred_lft forever
5: enp5s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000
link/ether 00:e2:69:59:33:6d brd ff:ff:ff:ff:ff:ff
inet 192.168.3.1/24 brd 192.168.3.255 scope global enp5s0
valid_lft forever preferred_lft forever
inet6 2a02:2f0e:d114:4b03:2e2:69ff:fe59:336d/64 scope global tentative
valid_lft forever preferred_lft forever
8: ppp0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1492 qdisc pfifo_fast state UNKNOWN group default qlen 3
link/ppp
inet 188.27.50.191 peer 10.0.0.1/32 scope global ppp0
valid_lft forever preferred_lft forever
inet6 2a02:2f0e:d1ff:ffff::bc1b:32bf/128 scope global
valid_lft forever preferred_lft forever
inet6 fe80::bc1b:32bf peer fe80::1/128 scope link
valid_lft forever preferred_lft forever
不要忘记 /etc/default/wide-dhcpv6-client。接下来您需要 RADVD 服务,该服务为您的整个网络提供所需的一切(/etc/radvd.conf):
interface enp3s0 {
AdvSendAdvert on;
MaxRtrAdvInterval 30;
prefix ::/64 {
AdvOnLink on;
AdvAutonomous on;
AdvRouterAddr on;
};
RDNSS 2a02:2f0c:8000:3::1 2a02:2f0c:8000:8::1 {
AdvRDNSSLifetime 30;
};
};
interface enp4s0 {
AdvSendAdvert on;
MaxRtrAdvInterval 30;
prefix ::/64 {
AdvOnLink on;
AdvAutonomous on;
AdvRouterAddr on;
};
RDNSS 2a02:2f0c:8000:3::1 2a02:2f0c:8000:8::1 {
AdvRDNSSLifetime 30;
};
};
interface enp5s0 {
AdvSendAdvert on;
MaxRtrAdvInterval 30;
prefix ::/64 {
AdvOnLink on;
AdvAutonomous on;
AdvRouterAddr on;
};
RDNSS 2a02:2f0c:8000:3::1 2a02:2f0c:8000:8::1 {
AdvRDNSSLifetime 30;
};
};
使用您自己的公共 ipv6 DNS。现在!!!!我个人发现 RADVDUMP。这是一项艺术,它向您展示了您需要的所有设置,包括来自您的 ISP 的前缀。我认为,使用一些脚本,您可以将该前缀与 ISC-DHCPV6-SERVER 等 dhcpv6 服务器一起使用。尽情享受,并快乐地使用 google。