![如何配置 OpenVPN 以更新本地域的 Bind9 条目?](https://linux22.com/image/748210/%E5%A6%82%E4%BD%95%E9%85%8D%E7%BD%AE%20OpenVPN%20%E4%BB%A5%E6%9B%B4%E6%96%B0%E6%9C%AC%E5%9C%B0%E5%9F%9F%E7%9A%84%20Bind9%20%E6%9D%A1%E7%9B%AE%EF%BC%9F.png)
我找到了一篇文章,描述了如何配置 dhcp3 服务器以使用主机名和分配的 IP 地址更新 Bind9 区域。
我想要实现相同的效果,但在 VPN 子网内,每个 VPN 客户端将接收一个 IP 地址,并且其主机名/客户端名称将被添加到本地域区域。
但是,OpenVPN 似乎有自己的 dhcp 服务器,我找不到任何关于将其链接到 bind 的信息。
一种解决方案是将 VPN 配置为 TAP 设备,并将其桥接到虚拟网络接口,在该接口上使用 dhcp3 服务器。但这似乎有点过头了。
有没有更简单、更干净的解决方案?
更新:
即使这样也行不通。不知何故,dhcp 服务器认为 DHCPDISCOVER 请求来自 tap0 MAC 地址,因此当它发送响应时,VPN 客户端无法收到它:
Feb 7 00:41:22 vpn-server1 dhcpd[7601]: DHCPDISCOVER from fe:b4:3f:fe:9d:0e via tap0
Feb 7 00:41:23 vpn-server1 dhcpd[7601]: DHCPOFFER on 172.16.0.2 to fe:b4:3f:fe:9d:0e (vpn-server1) via tap0
是否配置
tap0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.16.0.1 netmask 255.255.255.0 broadcast 0.0.0.0
inet6 fe80::5c70:cea0:5619:ac47 prefixlen 64 scopeid 0x20<link>
ether fe:b4:3f:fe:9d:0e txqueuelen 100 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 95 bytes 14590 (14.2 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
OpenVPN 服务器日志:
Fri Feb 7 00:41:21 2020 MULTI: no dynamic or static remote --ifconfig address is available for Client-1/192.168.1.105:39069
Fri Feb 7 00:41:23 2020 Client-1/192.168.1.105:39069 PUSH: Received control message: 'PUSH_REQUEST'
Fri Feb 7 00:41:23 2020 Client-1/192.168.1.105:39069 SENT CONTROL [Client-1]: 'PUSH_REPLY,peer-id 1' (status=1)
答案1
我对你做了一些假设OpenVPN和Bind9配置,从而简化配置:
- 两台服务器都在同一主机上运行,
- Bind9 的区域允许动态更新,如果你的DHCP服务器服务器也正在更新该区域。
- OpenVPN 客户端使用 TLS 证书进行身份验证,该证书具有中国等于您要注册的 DNS 名称,例如证书上的 DN 是
DC=com, DC=example, CN=client1.example.com
。
为了注册新连接的客户端的地址,您需要一个简单的脚本(我们称之为/etc/openvpn/update-dns
):
#!/bin/bash
/usr/bin/nsupdate -l <<EOF
del $common_name
add $common_name. 300 IN A $ifconfig_pool_remote_ip
send
EOF
并将其添加到OpenVPN配置:
script-security 2
learn-address /etc/openvpn/update-dns
附言:您首次尝试使用轻敲界面和真实的DHCP服务器提供客户端地址也应该有效,例如服务器配置为:
server-bridge
dev tap0
ifconfig 172.16.0.2
# authentication options
以及客户端配置:
client
dev tap0
# authentication options
和Bind9监听tap0
,dhclient -d tap0
OpenVPN 客户端上的调用将获得一个地址。苹果您观察到的数据包DHCP
是由OpenVPN充当 DHCP 代理:
如果–服务器桥不带任何参数使用(我的注释:或者使用诺格范围),它将启用 DHCP 代理模式,连接时的 OpenVPN 客户端将从在 OpenVPN 服务器端 LAN 上运行的 DHCP 服务器接收其 TAP 适配器的 IP 地址。
来源:OpenVPN 参考手册。
然而我不确定是什么OpenVPN对服务器端局域网的定义。