web-dev-qa-db-ja.com

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

そして、以下を実行して接続したときに、クライアントが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

この結果から間違っているように見えるものはありますか?

2

サーバー

サーバーで、この行を/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を実行してください

1
nick carraway