我在这里有一个小办公室,里面有几个工作站,我想实现一个小型服务器,用于代理服务器、samba 等。这是所述网络的拓扑结构:
+-----+ dynamic +--------+ +-------------------+ +--+workstation1
| | /56 prefix | | | Debian server | +--------+
| ISP +--------------+ Router +-+eth0+-+ +-+eth1+-+ switch +--+workstation2
| | dynamic | | | (squid,dhcp,etc.) | +--------+
+-----+ IPv4 address +--------+ +-------------------+ +--+workstationX
我希望服务器为通过交换机连接到 eth1 的所有设备分配全局(也可能是本地)IPv6 地址和私有 IPv4 地址。我能够使用 dnsmasq 和 iptables 实现 NAT 伪装,但我无法让 IPv6 流量甚至分发 IPv6 地址。路由器在 IPv6 DHCP 服务器选项卡中有三种不同的设置:
- 仅分配 DNS 服务器
- 为下游路由器分配 DNS 服务器和 IPv6 前缀(我认为应该启用)
- 为下游路由器分配 DNS 服务器、IPv6 前缀和 IPv6 地址
我尝试过本指南。它描述了如何使用 dnsmasq 设置 DHCPv6 服务器。我有一个正常工作的 eth0,它获得一个全局、唯一本地和链接本地地址。但我的 eth1 接口从未获得全局 IPv6 地址,只有链接本地地址。服务器后面的设备都有一个有效的 IPv4 地址,但我无法将 IP 设置为静态,因为前缀是动态的并且每晚都会更改。目前我被困在这一点上。
这里是我的配置文件。
感谢您的帮助。
答案1
您需要为分配一个 IPv6 地址,eth1
因为它无法自动配置。/64
从您的中选择一个地址/56
,尽管您可能能够使用您的。我在下面的示例中/56
使用了前缀。2001:0db8:a1b2:c2d3::/64
# This is an IPv6 interface
iface eth1 inet6 static
address 2001:0db8:a1b2:c2d3::1
netmask 64
答案2
我找到了方法。我的接口 eth0 获得了它的 IP,因为启用了 net.ipv6.conf.eth0.accept_ra=2。wide /etc/sysctl.conf
-dhcpv6-client 尝试再次设置 eth0 地址,但它已被路由器广告设置。因此,如果您希望 wide-dhcpv6-client 仅将 ip 设置为内部接口(eth1
在我的情况下),您必须省略
id-assoc na 1 {
# id-assoc for eth1
};
部分来自已发布的教程。否则,dhcp6c 在看到该地址已被使用后将停止。
这是我的 dhcp6c.conf 现在的样子
interface eth0 {
send ia-pd 1;
request domain-name;
request domain-name-servers;
script "/etc/wide-dhcpv6/dhcp6c-script";
};
id-assoc pd 1 {
prefix ::/64 infinity;
prefix-interface eth1 {
sla-len 0;
sla-id 1;
ifid 1;
};
};
现在一切都运行正常。我希望这些信息能帮助任何遇到类似问题的人。