当前位置: 首页 > news >正文

工控机配置dhcp server,绑定指定网口,不报错服务不重启、开机自启、不插网线也能用的 dhcp 完整配置

工控机内置DHCP Server,绑定指定网口,插入指定网口后为接入机器自动分配IP,像路由器一样访问管理节点,实现开机自启、不插网线也能用服务器不会一直重启。下面以Ubuntu系统为例,进行配置

一、安装服务

sudo apt-get update
sudo apt-get install isc-dhcp-server -y

二、配置网卡

1. 指定网卡eth1配置固定IP(使用 systemd-networkd 配置)

  • 创建文件
#创建文件 
sudo vim /etc/systemd/network/10-eth1-static.network
  • 编辑内容如下:
[Match]
Name=eth1[Network]
# 配置静态 IP
Address=192.168.10.1/24
# 不需要网关,因为是局域网服务端
# Gateway=... 
# DNS=...# 关键配置:即使没有检测到载波(没插网线),也认为接口是“就绪”的
# 这能防止系统等待网络连接超时而导致启动慢或服务启动失败
LinkLocalAddressing=no
ConfigureWithoutCarrier=yes# 关闭 IPv6 (可选,根据你的需求)
IPv6AcceptRA=no
IPv6LinkLocalAddressGenerationMode=none# 新增:确保即使被其他管理器短暂接管,也强制管理
[Link]
Unmanaged=no

2. NetworkManage不再管理网卡eth1

告诉 NetworkManager 不要尝试管理 eth1,把它留给 systemd-networkd。这样可以消除 sys-iface-state: 'external' 的警告日志,避免两者冲突。

  • 编辑配置文件
sudo vim /etc/NetworkManager/NetworkManager.conf
  • 配置内容如下:
[keyfile]
# 让 NetworkManager 忽略 eth1 接口
unmanaged-devices=interface-name:eth1

3. 重启网络服务并验证

  • 重启服务
# 重启 networkd 以应用新 IP
sudo systemctl restart systemd-networkd# 重启 NM 以应用忽略规则
sudo systemctl restart NetworkManager
  • 验证 IP (关键步骤):

拔掉 eth1 的网线(确保物理断开),然后运行:

ip addr show eth1

预期结果:
你应该能看到类似如下输出(重点是有 inet 192.168.10.1/24):

6: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc fq_codel state DOWN group default qlen 1000link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ffinet 192.168.10.1/24 brd 192.168.10.255 scope global eth1valid_lft forever preferred_lft forever

注意:这一步很关键,isc-dhcp-server 要求网卡必须正常,不然会一直启动失败,反复重启,这个配置是保障在不插入网线的情况,网卡eth1仍然可以启动,并且分配有固定IP

三、配置DHCP服务

1. 绑定指定的网卡eth1

  • 编辑配置文件
 sudo vim /etc/default/isc-dhcp-server
  • 配置内容如下:
# On what interfaces should the DHCP server (dhcpd) serve DHCP requests?
#       Separate multiple interfaces with spaces, e.g. "eth0 eth1".
INTERFACESv4="eth1"
INTERFACESv6=""

2. 编辑主配置文件

  • 编辑配置文件
sudo vim /etc/dhcp/dhcpd.conf
  • 编辑内容如下
subnet 192.168.10.0 netmask 255.255.255.0 {option routers 192.168.10.1;option subnet-mask 255.255.255.0;option broadcast-address 192.168.10.255;option interface-mtu 1500;range 192.168.10.100 192.168.10.200;
}
  • 测试配置
    sudo dhcpd -t -cf /etc/dhcp/dhcpd.conf

3. 配置开启启动

  • 编辑systemd配置
# 编辑systemd配置文件,会自动创建文件/etc/systemd/system/isc-dhcp-server.service.d/override.conf
sudo systemctl edit isc-dhcp-server
  • 输入以下内容
[Unit]
# 清空依赖防止,等待网络接入的情况
After=
Wants=
# 强制DHCP在网络完全就绪后启动
After=systemd-networkd.service
Wants=systemd-networkd.service 
After=local-fs.target[Service]
# 启动前延迟3秒(适配工控机启动慢)
ExecStartPre=/bin/sleep 3
# 启动失败自动重试(最多5次,间隔3秒)
Restart=on-failure
RestartSec=5
StartLimitBurst=3
# 允许网卡无载波时启动
TimeoutStartSec=30User=root
Group=root
  • 重载并重启服务
sudo systemctl daemon-reload
sudo systemctl restart isc-dhcp-server

4. 重启系统2分钟后isc-dhcp-server才启动成功问题解决

  • 原因分析

因为你之前的配置虽然写了 After=systemd-networkd.service,但没有清除原服务文件中可能存在的 After=systemd-networkd-wait-online.service。Systemd 会把它们合并,导致只要有一个依赖没满足(wait-online 在等网线),DHCP 就得等着。现在的配置通过 After= 清空列表,彻底解决了这个问题。

  • 确认 wait-online 服务已正确配置忽略 eth1

虽然我们现在不依赖它了,但为了系统整体启动速度,还是建议保持之前的配置,防止其他服务被卡住。

# 确认配置存在
cat /etc/systemd/system/systemd-networkd-wait-online.service.d/override.conf

确保内容包含 --ignore-interface=eth1。如果没有,请执行:

sudo mkdir -p /etc/systemd/system/systemd-networkd-wait-online.service.d
sudo tee /etc/systemd/system/systemd-networkd-wait-online.service.d/override.conf > /dev/null <<EOF
[Service]
ExecStart=
ExecStart=/lib/systemd/systemd-networkd-wait-online --ignore-interface=eth1 --timeout=30
EOF
  • 重载并验证
# 1. 重载配置
sudo systemctl daemon-reload# 2. 重置失败状态(如果有)
sudo systemctl reset-failed isc-dhcp-server# 3. 测试重启服务(这次应该秒回,不会卡住)
time sudo systemctl restart isc-dhcp-server
# 观察 time 输出的时间,应该是 5-6 秒左右(sleep 5 + 启动时间),绝不再是 2 分钟# 4. 检查状态
systemctl status isc-dhcp-server
  • 最终重启测试
sudo reboot
http://www.jsqmd.com/news/490256/

相关文章:

  • 衡山派D133EBS开发板模块移植手册:基于RT-Thread与Luban-lite的官方指南
  • 2026年沈阳钢材拉弯加工厂费用排行,哪家价格合理 - 工业设备
  • 基于TI TMS320F28P550的光敏电阻传感器模块移植与ADC/GPIO驱动实战
  • 2026年工厂短视频推广避坑指南:本地化服务如何破解制作陷阱 - 精选优质企业推荐榜
  • 立创开源四开关BUCK-BOOST数字电源开发板(STM32G474核心)硬件设计与功能解析
  • 讲讲硬质合金材料厂家,湖南博云东方粉末冶金值得推荐吗 - 工业品牌热点
  • 有哪些本地上门手表回收平台,性价比高的推荐 - 工业推荐榜
  • 新手如何借助快马平台轻松上手智能车竞赛嵌入式开发
  • EasyAnimateV5模型量化部署:TensorRT加速实战
  • 2026年工厂短视频推广避坑指南:本地化服务如何破解制作痛点 - 精选优质企业推荐榜
  • bert-base-chinese预训练模型新手教程:完型填空、语义相似度、特征提取全解析
  • 【Linux系统】万字解析,进程间的信号
  • 正德会计服务质量如何,专业团队保障审计结果? - mypinpai
  • Phi-3-vision-128k-instruct开发者案例:跨境电商多语言商品图理解
  • FLUX.1游戏开发:Unity插件实现场景自动生成
  • Qwen3-14b_int4_awq性能实测报告:吞吐量、首token延迟、e2e响应时间分析
  • 家人们谁懂啊
  • Phi-3-vision-128k-instruct效果展示:实验室设备图→操作规范+安全风险+维护周期
  • 突破网络限制的小说下载解决方案:Tomato-Novel-Downloader全平台离线阅读方案
  • Lumafly:实现模组无缝管理的跨平台解决方案 - 空洞骑士玩家的效率提升工具
  • AI头像生成器实战案例:为小红书/微信/B站定制风格化头像的完整方案
  • 盒马鲜生购物卡回收避坑指南:这 5 个坑千万别踩! - 团团收购物卡回收
  • Qwen3-14b_int4_awq教程升级:支持Streaming输出、历史会话与上下文管理
  • 新手零基础入门:借助快马AI一键生成可运行的worldmonitor数据获取项目
  • BalenaEtcher镜像烧录工具Mac下载异常深度修复指南
  • 从高阶耦合到解耦控制:LCL型三相PWM整流器建模与坐标变换实践
  • 2026年北京小程序开发公司怎么选?附带联系方式 - 品牌2025
  • EcomGPT-中英文-7B电商模型Ubuntu 20.04一键部署与运维指南
  • 睿尔曼超轻量仿人机械臂与云迹底盘集成实战:AGV复合机器人开发指南
  • macrodroid在小米14安卓手机上的效果,像是ios的快捷指令的镜像