homeall/dhcphelper项目代码库可在GitHub查看。
这是一个包含DHCP Helper的小型Docker镜像,适用于Docker环境中的DHCP服务器需要广播中继的场景。容器内的DHCP服务器默认只能接收单播DHCPOFFER消息,而实际需要广播DHCPOFFER消息才能正常工作(详情参考网络问题)。即使在host网络模式下,Docker中的DHCP服务器也无法正常工作,除非使用DHCP中继。
如需了解DHCP协议工作原理,推荐参考此链接。
支持Linux(amd64架构)及树莓派(arm64或arm32架构)。
需安装:
只需通过环境变量IP传递DHCP服务器的IP地址:"-e IP=X.X.X.X"
运行命令示例:
bashdocker run --privileged -d --name dhcp --net host -e "IP=172.31.0.100" homeall/dhcphelper:latest
确保主机的UDP 67端口在操作系统的iptables/防火墙中已开放,且必须使用host网络模式。
可通过以下命令检查服务是否正常运行:
bash$ nc -uzvw3 127.0.0.1 67 Connection to 127.0.0.1 port 67 [udp/bootps] succeeded!
Docker状态中显示healthy表示健康检查通过,可通过以下命令查看健康状态:
bash$ docker inspect --format "{{json .State.Health }}" dhcp | jq { "Status": "healthy", "FailingStreak": 0, "Log": [ { "Start": "2021-01-04T10:28:11.8070681Z", "End": "2021-01-04T10:28:14.8695872Z", "ExitCode": 0, "Output": "127.0.0.1 (127.0.0.1:67) open\n" } ] }
在Linux/Mac系统中,可通过以下命令测试DHCP发现:
bash$ sudo nmap --script broadcast-dhcp-discover -e $你的网络接口
预期输出结果:
Starting Nmap 7.91 ( [***] ) at 2021-01-01 19:40 GMT Pre-scan script results: | broadcast-dhcp-discover: | Response 1 of 1: | Interface: en0 | IP Offered: 192.168.1.30 | DHCP Message Type: DHCPOFFER | Server Identifier: 172.31.0.100 | IP Address Lease Time: 2m00s | Renewal Time Value: 1m00s | Rebinding Time Value: 1m45s | Subnet Mask: 255.255.255.0 | Broadcast Address: 192.168.1.255 | Domain Name Server: 172.31.0.100 | Domain Name: lan | Router: 192.168.1.1 Nmap done: 0 IP addresses (0 hosts up) scanned in 10.26 seconds
dhcphelper与PiHole配合使用效果良好,以下是docker-compose.yml示例:
yamlversion: "3.3" services: pihole: container_name: pihole image: pihole/pihole:latest hostname: pihole ports: - "53:53/tcp" - "53:53/udp" - "80:80/tcp" environment: TZ: 'Europe/London' WEBPASSWORD: 'admin' DNS1: '127.0.0.53' DNS2: 'no' volumes: - './etc-pihole/:/etc/pihole/' depends_on: - dhcphelper cap_add: - NET_ADMIN restart: unless-stopped networks: backend: ipv4_address: '172.31.0.100' proxy-tier: {} dhcphelper: restart: unless-stopped container_name: dhcphelper network_mode: "host" image: homeall/dhcphelper:latest environment: TZ: 'Europe/London' IP: '172.31.0.100' # PiHole的IP地址 cap_add: - NET_ADMIN
采用MIT许可证分发。详见LICENSE。
欢迎在Github提交issue反馈问题。
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务