是否可以使用单个 DHCP 服务器将完全不同范围的 ip 推送到不同 LAN 中的不同网络接口?
例子:
我有服务器 #1 和 #2。
服务器#1:具有名为“enpA”的网络接口的 DHCP 服务器连接到 LAN A。
服务器#2:具有名为“enpA”的网络接口的 DHCP 客户端也连接到 LAN A。它有一个名为“enpB”的网络接口,连接到 LAN B。
羊毛:192.168.56.0/24
局域网B:10.0.2.0/24
我想要 LAN A 服务器(服务器 #1)将 IP 推送到连接到 LAN B 的“enpB”(服务器 #2)接口。也就是说,是否可以使用 LAN A 中连接的单个 DHCP 服务器来执行此操作?
如果是,我应该对 isc KEA 这样的 DHCP 服务器使用什么策略?
答案1
是的,你可以这样做。你需要做的是运行DHCP中继代理在服务器 B 上,它在 LAN B 接口上侦听 UDP/67(对于 DHCPv6 为 UDP/547)上的 DHCP 请求,并将它们转发到 LAN A(显然需要将 DHCP 服务器设置为具有两个网络的网络池!)
该系统的工作原理如下:
Server 1 LAN A Server 2 LAN B Client
* <-- Request
* <-- Request (for Client)
Answer --> *
Answer (from Server 1) --> *
[...]
DHCPv4 和 DHCPv6 中继是单独处理的,因此如果您想处理这两种类型,则需要运行两个中继实例。
假设服务器 A 是192.168.56.1
/ 2001:db8:1::1
,服务器 B在 LAN A 上有eth0
/ 192.168.56.2
/ ,在 LAN B 上有/ / ,您将像这样运行中继:2001:db8:1::2
eth1
10.0.2.1
2001:db8:2::1
- DHCPv4:
/path/to/dhcrelay -4 -i eth1 192.168.56.1
- DHCPv6:
/path/to/dhcrelay -6 -l eth1 -u eth0
请注意,我不需要使用 DHCPv6 中继,因此这是基于文档的。
答案2
虽然从技术上讲,@ErikF 是对您提出的问题的正确答案,但将服务器 #2 设置为多宿主 DHCP 服务器更有意义。
这样做,您将不需要设置 DHCP 中继,并且复杂性也大大降低。
答案3
是的,这是完全可能的。我按照自己的设置这样做。有 2 个要求/条件:
- 您使用的 DHCP 服务器软件允许这样做(有不止一种 DHCP 软件,也许有些不允许;“常用”软件允许)
- 两个子网都有防火墙/路由规则,允许这些子网中的设备成功查询 DHCP 服务器。这可能需要端口映射、路由规则、一对一或出站 NAT(在 IPv4 上)或其他方法。
就我而言,我使用的dhcpd
路由器有 2 个网卡,每个子网一个。我将每个子网的 IP 设置为“xxx1”。然后我dhcpd.conf
的如下。
我已经简化了它,并将其修改为使用您的 IP 地址,否则它没有改变。如果您不希望路由器同时成为 DNS 服务器/解析器,请删除包含以下内容的四行"option domain-name-servers"
:
option domain-name "mydomain.com";
option ldap-server code 95 = text;
option arch code 93 = unsigned integer 16; # RFC4578
default-lease-time 7200;
max-lease-time 86400;
one-lease-per-client true;
deny duplicates;
ping-check true;
update-conflict-detection false;
authoritative;
subnet 192.168.56.0 netmask 255.255.255.0 {
pool {
option domain-name-servers 192.168.56.1;
range 192.168.56.2 192.168.56.254;
}
option routers 192.168.56.1;
option domain-name-servers 192.168.56.1;
}
subnet 10.0.2.0 netmask 255.255.255.0 {
pool {
option domain-name-servers 10.0.2.1;
range 10.0.2.2 10.0.2.254;
}
option routers 10.0.2.1;
option domain-name-servers 10.0.2.1;
}