当我连接一个 USB 到以太网适配器(以前使用过)时,我收到一个 MAC 地址,然后如果另一端有连接的东西,我还会收到一个 IP 地址(在我的情况下为 192.168.1.1,配置为NetworkManager 中的静态)。另一方面,有各种仪器等待在该 PC 上运行的 DHCP 服务器为它们提供 IP。
问题是如果没有找到子网,DHCP 服务器会拒绝启动,因此在连接建立之前无法启动它。systemctl restart isc-dhcp-server.service
从 NetworkManager 收到 IP 192.168.1.1 后,我该怎么办?
我想过使用 udev 规则,ATTR{address}=="f0:1f:af:3d:6c:e7" RUN+="systemctl restart isc-dhcp-server.service"
但它在分配 IP 之前运行。是否有我可以使用的 udev 选项,或者我必须通过 systemd 或 NetworkManager 或其他方法使用其他方法?
UDEV 触发 systemd 服务是执行此操作的方法。
您可以通过 usb id 匹配您的 USB 适配器,当您看到 mac 地址时为时已晚。
这篇文章有说明
https://unix.stackexchange.com/questions/229987/udev-rule-to-match-any-usb-storage-device
您的系统配置了 systemd 。
isc-dhcp-server
因此,一种解决方案是在和 USB 设备之间添加依赖关系。ps 6c & e7是来自你的 USB 设备的你的 mac 的最后 2 个字节
你必须有类似的东西
isc-dhcp-server
并添加这些行
重启
isc-dhcp-server
通过运行这些命令检查状态和配置终于在这个问题上花了一些时间,并用我命名
restart-dhcpd.sh
并放置在/etc/NetworkManager/dispatcher.d/
. (注意:您可能需要systemctl restart network-manager.service
和/或systemctl daemon-reload
之后):