Browse Source

update: add describe of DHCP

v1.x.x
dnomd343 2 years ago
parent
commit
923a3929af
  1. 37
      README.md
  2. 4
      cmd/controller.go

37
README.md

@ -253,7 +253,7 @@ radvd:
+ `AdvOtherConfigFlag` :指示 IPv6 其他有状态配置,即 O 位,默认为 `off` + `AdvOtherConfigFlag` :指示 IPv6 其他有状态配置,即 O 位,默认为 `off`
+ > M 位 O 位的详细定义在 [RFC4862](https://www.rfc-editor.org/rfc/rfc4862) 中给出: + > M 位 O 位的详细定义在 [RFC4862](https://www.rfc-editor.org/rfc/rfc4862) 中给出:
+ `M=off``O=off` :使用 `Stateless` 模式,设备通过 RA 广播的前缀,配合 `EUI-64` 算法直接得到接口地址,即 `SLAAC` 方式 + `M=off``O=off` :使用 `Stateless` 模式,设备通过 RA 广播的前缀,配合 `EUI-64` 算法直接得到接口地址,即 `SLAAC` 方式
@ -277,7 +277,36 @@ radvd:
### DHCP服务选项 ### DHCP服务选项
WIP... > DHCP 服务基于 [ISC-DHCP](https://www.isc.org/dhcp/) 项目提供
```yaml
# 以下配置仅为示范
dhcp:
ipv4:
enable: false
config: |
default-lease-time 600;
max-lease-time 7200;
subnet 192.168.2.0 netmask 255.255.255.0 {
range 192.168.2.100 192.168.2.200;
}
host example {
hardware ethernet 03:48:c0:5d:bd:95;
fixed-address 192.168.2.233;
}
ipv6:
enable: false
config: |
...
```
+ `ipv4``ipv6` :分别配置 DHCPv4 与 DHCPv6 服务
+ `enable` :是否启动 DHCP 服务,默认为 `false`
+ `config` :DHCP 服务配置文件,具体配置内容参考 [man文档](https://linux.die.net/man/5/dhcpd.conf)
## 部署流程 ## 部署流程
@ -452,9 +481,9 @@ shell> /etc/init.d/networking restart
> 您可以监视 `log/access.log` 文件,设备正常接入后会在此输出访问日志 > 您可以监视 `log/access.log` 文件,设备正常接入后会在此输出访问日志
+ IPv4下,修改内网DHCP服务器配置(一般位于路由器上),将网关改为容器IP地址,保存后重新接入设备即可生效。 + IPv4 下,修改内网 DHCP 服务器配置(一般位于路由器上),将网关改为容器 IP 地址,保存后重新接入设备即可生效。
+ IPv6下,你需要关闭路由或上级网络的RA广播功能,然后开启配置中的RADVD选项,如果需要使用DHCPv6,可调整配置中的M位与O位开启状态,保存后将设备重新接入网络即可。 + IPv6 下,你需要关闭路由或上级网络的RA广播功能,然后开启配置中的 RADVD 选项,如果需要使用 DHCPv6,可调整配置中的 M 位和 O 位开启状态,保存后将设备重新接入网络即可。
## 演示实例 ## 演示实例

4
cmd/controller.go

@ -106,6 +106,8 @@ func runDhcp(settings *config.Config) {
} }
runProcess(nil, "dhcpd", "-4", "-f", "-cf", v4Config, "-lf", v4Leases) runProcess(nil, "dhcpd", "-4", "-f", "-cf", v4Config, "-lf", v4Leases)
time.Sleep(time.Second) // wait 1s for avoid cluttered output time.Sleep(time.Second) // wait 1s for avoid cluttered output
} else {
log.Infof("Skip running DHCPv4")
} }
if settings.DHCP.IPv6.Enable { if settings.DHCP.IPv6.Enable {
v6Leases := path.Join(leaseDir, "dhcp6.leases") v6Leases := path.Join(leaseDir, "dhcp6.leases")
@ -115,5 +117,7 @@ func runDhcp(settings *config.Config) {
} }
runProcess(nil, "dhcpd", "-6", "-f", "-cf", v6Config, "-lf", v6Leases) runProcess(nil, "dhcpd", "-6", "-f", "-cf", v6Config, "-lf", v6Leases)
time.Sleep(time.Second) // wait 1s for avoid cluttered output time.Sleep(time.Second) // wait 1s for avoid cluttered output
} else {
log.Infof("Skip running DHCPv6")
} }
} }

Loading…
Cancel
Save