ubuntu – OpenVPN:すべてのDNSエントリがサーバーからクライアントにプッシュされるわけではありません。 (dnsmasq)

私はこの問題の解決策を見つけようとしてきましたが、これまでのところ答えが見つからなかったので、皆さんが私を助けてくれることを願っています。

私はUbuntu 10.04を動かしているサーバーを持っています。それは静的IPアドレスとそれを指し示すURLを持っています、server.foo.com

このサーバーで、OpenVPNサーバーを次の設定で実行しました。

port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh1024.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "dhcp-option DNS 10.8.0.1"
;push "dhcp-option DOMAIN foo.com"
keepalive 10 120
tls-auth ta.key 0
comp-lzo
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
log openvpn.log
verb 1
plugin /usr/lib/openvpn/openvpn-auth-pam.so vpnlogin

クライアントは次のように構成されています。

client
dev tun
proto udp
remote server.foo.com 1194
resolv-retry infinite
nobind
persist-key
persist-tun
auth-user-pass
ca ca.crt
cert server.crt
key server.key
ns-cert-type server
tls-auth ta.key 1
comp-lzo
verb 1
auth-nocache

サーバー構成を見るとわかるように、私もDNSサーバーを実行しています。このサーバーはdnsmasqサーバーで、/etc/dnsmasq.confに次の構成があります。

interface=tun0
listen-address=127.0.0.1
dhcp-authoritative
cache-size=0
no-negcache

/etc/dnsmasq.d/には、このサーバーにURLをルーティングするファイルがあります。このファイルは、VPNクライアントにプッシュする必要があります。それらの中で最も重要なものは以下のものを含みます。

address=/server.foo.com/10.8.0.1

このURLは私の公開URLとまったく同じです。私はまたテストするために他のDNSエントリを作成しました、例えば:address = / server2.foo.com / 10.8.0.1

これで、このサーバー上でHTTPサービスが実行されるようになり、LAN内のユーザーとOpenVPNクライアントからのアクセスのみを許可したいようになりました。次の例外を除いて、ufwですべての着信トラフィックをブロックしました。

To         Action       From
1194       ALLOW        Anywhere
53         ALLOW        10.8.0.0/24
80/tcp     ALLOW        10.8.0.0/24
80/tcp     ALLOW        192.168.0.0/24

ようやく私の問題になりました。 OpenVPNクライアントが接続すると、dnsmasqからのDNSエントリがクライアントにプッシュされるはずです。

しかし、おそらくserver.foo.comというエントリは無視され、おそらくパブリックDNSのおかげです。 LANに接続していてVPNに接続しているときにFirefoxまたはChromeでserver.foo.comと入力すると、タイムアウトが発生します。 10.8.0.1、およびserver2.foo.comなどの他のエントリはすべて機能します。

Windows 7 32ビットのtracerouteは、たとえばserver2.foo.comが10.8.0.1へのジャンプで送信されることを示していますが、server.foo.comはパブリックDNSサーバーを経由して私のパブリック静的IPに接続しようとします。ブロックされ、タイムアウトになります。

私はこれまでにいくつかのことを試みましたが、それでもまだうまくいきません。

> DNSサーバーを正式に設定します(上記のdnsmasq.conf:dhcp-authoritativeを参照)。
> OpenVPNのserver.confに “dhcp-option DOMAIN foo.com”を追加してください。

非常に短い質問である可能性があるものについてのこのような長い投稿ですみません。そして、誰かが私を助けてくれることを願っています。

宜しくお願いします、
マイク。

ベストアンサー
私はあなたの設定が壊れるかうまくいかないと思います。

OpenVPNクライアント設定は、server.foo.comのパブリックアドレスを使用してOpenVPNサーバーに接続します。明らかに、このアドレスはVPNトンネルを確立する前に調べられます。

トンネルがdnsmasq設定で確立された後に、OpenVPN IPでserver.foo.comのDNSエントリをプッシュしようとしています。 OpenVPNクライアントはそれを無視するか(トンネルを確立するためにそれを調べなければならなかったのですでにserver.foo.comを知っているので)それを尊重し、そしてOpenVPNクライアント構成が現在を指すのでトンネルを落とすでしょう。存在しないIPアドレス。 server.foo.comのパブリックIP用のDNSサーバーのTTLによっては、OpenVPNセッション中に後者が発生する可能性があります。

TL; DR:あなたは基本的にあなたのクライアントにserver.foo.comについて矛盾する情報を伝えようとしています。私はあなたが念頭に置いていることをする良い方法を考えることはできません。もう1つの方法は、server.foo.comと同じIPを指す2番目のDNSエントリAレコードvpnserver.foo.comを設定し、それを使用するようにOpenVPN設定を変更することです。

転載記事の出典を記入してください: ubuntu – OpenVPN:すべてのDNSエントリがサーバーからクライアントにプッシュされるわけではありません。 (dnsmasq) - コードログ