OpenVPN サーバー上でカスタム ホスト名を作成できるように、dnsmasq を設定しようとしています。マシンが接続すると、ホスト名は 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 サーバーが実際に要求を処理していることを確認します。
問題は、db.private.resource
定義したホストに ping を実行しようとすると、次のエラーが発生することです。
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
この 2 番目の方法では、次のことも実行する必要がありますsudo /etc/init.d/dnsmasq restart
。
クライアント
OpenVPN サーバーは通常、IP アドレス10.8.0.1
または を自ら割り当てます10.9.0.1
。そのため、クライアントでは、まずそれらのネームサーバーを照会する必要があります。
少なくとも今のところは、/etc/resolv.conf
クライアント上で編集し、nameserver 10.8.0.1
ファイルの最初の行の先頭に追加しました。そのため、クライアント上では、完全なresolv.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
サーバーにホストを追加するときは必ず実行してください