ISC-DHCP 服务器将两个IP 地址分配给同一接口?

ISC-DHCP 服务器将两个IP 地址分配给同一接口?

我在带有两个以太网设备的 RaspberryPi(称为 VPNbridge)上有 ISC DHCP 服务器。一个是普通(内部)以太网设备 ( eth0),另一个是eth1我已连接 Aastra VoIP 电话的 USB 转以太网设备 ( )。因此,RaspberryPi 服务器作为 Aastra VoIP 电话与 VPN 网络的“桥梁”。

问题是,Aastra 手机(或连接到 RaspberryPi 上该接口的任何其他设备)每隔几分钟就会失去连接。此外,eth1RaspberryPi 上的设备有两个 IP 地址。

这是我的配置:

/etc/dhcp/dhcpd.conf我有:

default-lease-time 600;
max-lease-time 7200;

ddns-update-style none;

authoritative;
subnet 192.168.100.0 netmask 255.255.255.0 {
  range 192.168.100.50 192.168.100.51;
  option routers 192.168.100.1;
  option domain-name-servers 8.8.8.8;
  option domain-name "vpnbridge.local";
  ###option subnet-mask 255.255.255.0;
}

host aastraphone {
  hardware ethernet 00:08:5d:35:e8:57;
  fixed-address 192.168.100.51;
}

/etc/default/isc-dhcp-server我有:

INTERFACESv4="eth1"
INTERFACESv6=""

sudo systemctl status isc-dhcp-server

● isc-dhcp-server.service - LSB: DHCP server
   Loaded: loaded (/etc/init.d/isc-dhcp-server; generated)
   Active: active (running) since Sat 2022-08-06 23:37:59 CEST; 4min 42s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 597 ExecStart=/etc/init.d/isc-dhcp-server start (code=exited, status=0/SUCCESS)
    Tasks: 1 (limit: 2059)
   CGroup: /system.slice/isc-dhcp-server.service
           └─671 /usr/sbin/dhcpd -4 -q -cf /etc/dhcp/dhcpd.conf eth1

avg 06 23:41:44 vpnbridge dhcpd[671]: DHCPDISCOVER from 00:e0:4c:89:c3:e2 via eth1
avg 06 23:41:45 vpnbridge dhcpd[671]: DHCPOFFER on 192.168.100.50 to 00:e0:4c:89:c3:e2 (vpnbridge) via eth1
avg 06 23:41:45 vpnbridge dhcpd[671]: DHCPREQUEST for 192.168.100.50 (192.168.100.1) from 00:e0:4c:89:c3:e2 (vpnbridge) via eth1
avg 06 23:41:45 vpnbridge dhcpd[671]: DHCPACK on 192.168.100.50 to 00:e0:4c:89:c3:e2 (vpnbridge) via eth1
avg 06 23:41:48 vpnbridge dhcpd[671]: DHCPDISCOVER from 00:08:5d:35:e8:57 via eth1
avg 06 23:41:48 vpnbridge dhcpd[671]: DHCPOFFER on 192.168.100.51 to 00:08:5d:35:e8:57 via eth1
avg 06 23:41:50 vpnbridge dhcpd[671]: DHCPDISCOVER from 00:08:5d:35:e8:57 via eth1
avg 06 23:41:50 vpnbridge dhcpd[671]: DHCPOFFER on 192.168.100.51 to 00:08:5d:35:e8:57 via eth1
avg 06 23:41:55 vpnbridge dhcpd[671]: DHCPREQUEST for 192.168.100.51 (192.168.100.1) from 00:08:5d:35:e8:57 via eth1
avg 06 23:41:55 vpnbridge dhcpd[671]: DHCPACK on 192.168.100.51 to 00:08:5d:35:e8:57 via eth1

ip a show eth1在 RaspberryPi 上显示:

5: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:e0:4c:89:c3:e2 brd ff:ff:ff:ff:ff:ff
    inet 192.168.100.1/24 brd 192.168.100.255 scope global eth1
       valid_lft forever preferred_lft forever
    inet 192.168.100.50/24 brd 192.168.100.255 scope global secondary dynamic noprefixroute eth1
       valid_lft 474sec preferred_lft 399sec
    inet6 fe80::2e0:4cff:fe89:c3e2/64 scope link 
       valid_lft forever preferred_lft forever

另外,在 RaspberryPi 上我有 cat /etc/network/interfaces.d/eth1::

auto eth1
iface eth1 inet static
address 192.168.100.1
netmask 255.255.255.0

我究竟做错了什么?

答案1

首先,你的系统没有一个但是DHCP 组件:

  • dhcpd、ISC DHCP服务器
  • dhcpcd, 罗伊·马普尔斯的 DHCP客户,或dhclientISC DHCP客户

您正在尝试使用 Debian 风格/etc/network/interfaces,但现代版本的 RasPiOS 已经远离了这种风格:它仍然可以工作,因为 RasPiOS 基于 Debian 并且他们希望保持向后兼容性。

但当前 RasPiOS 中的首选方式是使用该/etc/dhcpcd.conf文件(DHCP客户配置文件,请注意所有网络接口配置的第二个“C”),包括静态 IP 分配(!)。您可能需要阅读有关网络配置的 RasPiOS 官方文档:https://www.raspberrypi.com/documentation/computers/configuration.html#using-the-command-line

这样做可能会使处理热插拔 USB 网络适配器变得更简单,因此这可能就是 RasPiOS 选择该方法的原因。

如果您想/etc/network/interfaces.d/eth1用于配置eth1,那么您至少需要添加denyinterfaces eth1to/etc/dhcpcd.conf来告诉 DHCP 客户端不要向 分配动态地址eth1

关于您在评论中提到的日志消息:

dhcpd[6403]: Dynamic and static leases present for 192.168.100.51. avg 07 09:07:49 vpnbridge dhcpd[6403]: Remove host declaration aastraphone or remove 192.168.100.51 avg 07 09:07:49 vpnbridge dhcpd[6403]: from the dynamic address pool for 192.168.100.0/24

range 192.168.100.50 192.168.100.51;您的subnetDHCP 服务器配置声明中,地址 ...50 和 ...51 用于动态分配给任何提出请求的有效客户端;静态赋值(使用host声明)不应使用range语句中的任何地址,反之亦然。

如果您的目的是仅为特定 VoIP 电话或提前已知硬件地址的其他设备提供静态 DHCP,那么您可以range完全删除或注释掉该语句。

相关内容