便携 DHCP 服务器 (Portable DHCP Server)
一个运行在 Windows 电脑上的轻量 DHCP 服务器(单文件、免安装、图形界面), 用于给局域网里的测试设备临时分配 IP:开发板、IP 摄像头、交换机、PXE 网络启动等。
一、环境要求(二选一)
- 直接用 exe(推荐):Windows 7 及以上,双击即用,无需安装任何东西
- 源码方式:需 Python 3.10+(仅用标准库,无需第三方包) 安装时勾选 Add python.exe to PATH
二、快速开始
- 双击
便携DHCP服务器.exe(首次启动约需几秒自解压,属正常现象) 或源码方式:双击启动DHCP服务器.bat - 确认「服务网卡 IP」是接入测试网络的网卡地址(可点「刷新本机IP」)
- 设置地址池,例如
192.168.10.100 ~ 192.168.10.200 - 点击 ▶ 启动服务
- 把待分配 IP 的设备接进同一个交换机/Wi-Fi,设为自动获取 IP 即可
排错:窗口一闪而过时,在命令行手动运行
python dhcp_server_app.py查看报错。 自检:python dhcp_server_app.py --selftest可验证协议引擎是否正常。
三、三大管理界面
客户端列表:顶部搜索框可按 IP / MAC / 主机名 / 备注实时过滤;状态下拉可只看 已分配 / 预分配 / 已过期。选中任意行,下方详情栏显示该客户端完整信息; 右键弹出快捷菜单(复制、解除租约、设为保留地址)。
租约管理:列表工具栏提供「解除选中租约」「清空过期租约」「清空全部租约」, 均带确认弹窗。解除租约后该设备下次续租会被拒绝并重新申请地址。
保留地址(MAC→IP):点「新增保留地址」填写 MAC、固定 IP、备注和可选的 独立租约时长;立即生效无需重启服务。「在线状态」列实时显示该设备是否在线。 在客户端列表中选中某行点「设为保留地址」,可把当前分配的 IP 直接固定给该设备。 支持导入 / 导出 CSV,方便批量维护。
四、首次使用必看:防火墙
客户端的 DHCP 请求是发往本机 UDP 67 的入站流量,默认会被 Windows 防火墙拦截。
- 右键
启动DHCP服务器.bat→ 以管理员身份运行 - 在程序里点击 「防火墙放行 UDP 67」(会弹窗确认)
- 之后日常使用无需再管(也可随时点「移除放行」撤销)
对应的手动命令(管理员):
netsh advfirewall firewall add rule name="PortableDhcpServer-UDP67" dir=in action=allow protocol=UDP localport=67 profile=any
netsh advfirewall firewall delete rule name="PortableDhcpServer-UDP67"
五、功能说明
| 功能 | 说明 |
|---|---|
| 地址池 | 起始~结束范围内的顺序分配;自动跳过网关、本机 IP、网络号、广播地址 |
| 客户端列表 | 实时查看 IP / MAC / 主机名 / 状态 / 来源 / 租约到期 / 剩余有效期 / 备注 / 最近活动;支持关键字搜索与状态筛选;选中行在下方显示完整详情 |
| 租约管理 | 解除选中租约、一键清除全部过期租约、清空全部租约;到期自动回收;同一设备尽量保持原 IP;停止服务时保存到磁盘 |
| 保留地址 | 按 MAC 固定 IP(即 DHCP 保留地址);支持备注和单独自定义租约时长;显示在线/离线/从未上线状态;可编辑、导入/导出 CSV、从客户端列表一键转为保留 |
| 客户端操作 | 右键菜单:复制 MAC / 复制 IP / 解除租约 / 设为保留地址;双击 MAC 复制到剪贴板 |
| 冲突检测 | 分配前先 Ping 候选地址,占用或已被 DECLINE 的地址自动跳过并记入冲突名单 |
| 导出 CSV | 客户端列表、保留地址均可导出为 Excel 可读的 CSV |
| PXE 支持 | 填写 TFTP 服务器(option 66) 和启动文件名(option 67) 即可用于网络启动 |
六、常见问题
1. 启动失败:端口被占用(10013/10048)
通常是系统开启了「Internet 连接共享 / 移动热点」,其内置 DHCP 分配器占了 UDP 67。
用管理员运行 net stop SharedAccess 关闭,或
netstat -ano -p udp | findstr :67 查看占用进程。
2. 客户端拿不到 IP
- 防火墙没放行(见第四节)
- 设备和电脑不在同一个二层网络(DHCP 依赖广播,不能跨路由器/跨 VPN)
- 网段填错:地址池必须与网卡 IP 同网段
3. 多网卡电脑 服务监听所有网卡的 UDP 67,但「服务网卡 IP」决定下发的网关/子网参数。 插着 VPN 或虚拟网卡时请选对网卡,建议只保留接测试网的网卡。
4. 和路由器的 DHCP 冲突? 同一网段只能有一个 DHCP 服务器,否则客户端会随机拿到二者之一。 要么关闭路由器 DHCP,要么把电脑接到独立交换机做纯测试网。
七、文件说明
| 文件 | 作用 |
|---|---|
便携DHCP服务器.exe |
独立可执行程序,免 Python,可单独拷贝到其他电脑使用 |
dhcp_server_app.py |
主程序源码(引擎 + 界面) |
启动DHCP服务器.bat |
源码方式一键启动(需装 Python) |
dhcp_config.json |
点「保存配置」后生成的配置文件(exe 生成时保存在其所在目录) |
dhcp_leases.json |
运行时自动生成的租约记录(可删除,删除后重新分配) |
exe 使用提示:配置与租约文件保存在 exe 同一目录,拷贝 exe 时同目录 的这两个 json 可一并拷贝以保留配置。首次运行若 Windows SmartScreen 提示 "已保护你的电脑",点「更多信息」→「仍要运行」即可(自打包程序未签名属正常现象)。
八、重新打包 exe(可选)
当前 便携DHCP服务器.exe 已打包完成。修改源码后如需重新打包:
python -m venv .temp\dhcppkg
.temp\dhcppkg\Scripts\python.exe -m pip install pyinstaller
.temp\dhcppkg\Scripts\pyinstaller.exe --onefile --windowed --name 便携DHCP服务器 dhcp_server_app.py
生成的 dist\便携DHCP服务器.exe 可单独拷贝使用。
九、使用须知
- 本工具面向测试/实验网络,请勿接入生产网络与正式 DHCP 服务混用
- DHCP 基于 UDP 广播,仅适用于与电脑同一物理网段的设备
- 程序不做鉴权,同一网段内任何设备都能申请到地址,注意使用场景
AI生成