Openvpn

如何配置 OpenVPN 以更新本地域的 Bind9 條目?

  • February 14, 2020

我發現一篇文章描述瞭如何配置 dhcp3 伺服器以使用主機名和分配的 IP 地址更新 Bind9 區域。

我想達到同樣的效果,但是在一個 VPN 子網中,每個 VPN 客戶端都會收到一個 IP 地址,並且它的主機名/客戶端名稱將被添加到本地域區域。

但是,OpenVPN 似乎有自己的 dhcp 伺服器,我找不到任何關於將其連結到綁定的資訊。

一種解決方案是將 VPN 配置為分路設備,並將其橋接到虛擬網路介面,在該介面上使用 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)

我對您的OpenVPNBind9配置做了幾個假設,以簡化配置:

  1. 兩台伺服器都在同一台主機上執行,
  2. Bind9 的區域允許動態更新,如果您的dhcpd伺服器也在更新該區域,情況肯定是這樣。
  3. OpenVPN 客戶端使用 TLS 證書進行身份驗證,該證書的CN等於您要註冊的 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

PS:您最初嘗試使用Tap界面和真實的dhcpd來提供客戶端地址也應該可以工作,例如使用以下伺服器配置:

server-bridge
dev tap0
ifconfig 172.16.0.2
# authentication options

和客戶端配置:

client
dev tap0
# authentication options

Bind9監聽tap0dhclient -d tap0呼叫 OpenVPN 客戶端會獲取地址。您觀察到的數據包中MAC的變化DHCP是由OpenVPN作為 DHCP 代理引起的:

如果**–server-bridge不帶任何參數(*我的註釋:或使用nogw**參數*)使用,它將啟用 DHCP 代理模式,其中連接的 OpenVPN 客戶端將從上執行的 DHCP 伺服器接收其 TAP 適配器的 IP 地址OpenVPN 伺服器端區域網路。

資料來源:OpenVPN 參考手冊

但是我注意到OpenVPN對伺服器端 LAN 的定義是什麼。

引用自:https://serverfault.com/questions/1002075