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
そして、以下を実行して接続したときに、クライアントがDNSとしてOpenVPNを使用していることを確認できます。
# dnsmasq --no-daemon -q
コマンドラインで、クライアントからpingを実行して、クライアントが実際にDNSルックアップ要求をトンネル経由でOpenVPNサーバーに送信していること、および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
この結果から間違っているように見えるものはありますか?
サーバー
サーバーで、この行を/etc/dnsmasq.conf
に追加します。
...
expand-hosts #Uses /etc/hosts on this machine for resolution
...
次に、/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
を追加しました。したがって、クライアントでは、完全な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
を実行してください