如何在 OpenVPN 上使用 dnsmasq 自訂主機名稱?

如何在 OpenVPN 上使用 dnsmasq 自訂主機名稱?

我正在嘗試設定 dnsmasq,以便我可以透過 OpenVPN 伺服器建立自訂主機名稱。這樣,當機器連接時,主機名稱將指向位於 OpenVPN 主機或網路上的資源。

例如,伺服器上的 /etc/hosts 檔案如下所示:

db.private.resource 10.8.0.1
app.private.resource 10.8.0.1

讓客戶端使用隧道進行 DNS 查找非常簡單。在 server.conf 檔案中我有:

push "dhcp-option DNS 10.8.0.1"

在客戶端配置中我有:

dhcp-option DNS 10.8.0.1

我可以透過執行以下命令來驗證用戶端在連線時是否使用 OpenVPN 作為其 DNS:

# dnsmasq --no-daemon -q

在命令列上,從用戶端執行 ping 操作,以驗證用戶端確實透過隧道向 OpenVPN 伺服器發送 DNS 查找請求,而 OpenVPN 伺服器確實正在處理這些請求。

問題是,當我嘗試 pingdb.private.resource我定義的主機時,我得到:

dnsmasq: query[A] db.private.resource from 10.8.0.2
dnsmasq: config db.private.resource is NXDOMAIN

來自 dnsmasq 的輸出。因此,出於某種原因,它似乎沒有傳回我在 /etc/hosts 中定義的值。令我驚訝的是,即使我運行 dnsmasq 並添加了地址參數,我仍然得到上述結果。

# dnsmasq --no-daemon -q --address=/db.private.resource/10.8.0.1/

dnsmasq: query[A] db.private.resource from 10.8.0.2
dnsmasq: config db.private.resource is NXDOMAIN

從這個結果來看,有什麼地方不對嗎?

答案1

首先安裝 dnsmasq: sudo apt-get update; sudo apt-get install dnsmasq

伺服器

在伺服器上,將此行新增至/etc/dnsmasq.conf

...
expand-hosts #Uses /etc/hosts on this machine for resolution
bind-interfaces #will bind on all available interfaces, including the openvpn one
listen-address=10.8.0.1 # i noticed recently that i also need to add this line, because by default it will only listen on 10.9.0.1 which isnt pushed to my clients
...

然後,/etc/hosts使用您的主機名稱編輯該檔案。最後,運行sudo /etc/init.d/dnsmasq restart

如果您出於某種原因不想編輯/etc/hosts,可以在 處創建一個新文件/etc/dnsmasq.conf.d/addresses.conf,並用您的地址填充它:

address=/umomma.com/69.69.69.69
address=/oo.umomma.com/69.69.69.60
address=/ooooo.umomma.com/69.69.69.62
address=/ooooooooo.umomma.com/69.69.69.65

使用第二種方法,您還需要追趕sudo /etc/init.d/dnsmasq restart

客戶

OpenVPN 伺服器通常會自行分配 IP 位址10.8.0.110.9.0.1.因此,在客戶端,我們需要確保首先查詢這些名稱伺服器。

至少現在,我/etc/resolv.conf在客戶端進行編輯,並將其添加nameserver 10.8.0.1到文件的第一行。因此,在客戶端上,我的完整resolve.conf如下所示:

nameserver 10.8.0.1
nameserver 8.8.8.8
nameserver 8.8.8.8
nameserver 127.0.1.1

若要使這些變更在重新啟動時持續,請在 處進行相同的變更/etc/resolvconf/resolv.conf.d/head

sudo /etc/init.d/dnsmasq restart請記住在伺服器上新增任何主機時運行

相關內容