Ubuntu 18でopenvpnクライアントをセットアップしようとしています。次の魔法の手順を実行します。
$ Sudo apt-get install openvpn
$ Sudo apt-get install openvpn-systemd-resolved
$ Sudo openvpn --client --config ./client.ovpn
Wed Jan 2 16:24:14 2019 OpenVPN 2.4.4 x86_64-pc-linux-gnu [SSL (OpenSSL)] [LZO] [LZ4] [EPOLL] [PKCS11] [MH/PKTINFO] [AEAD] built on Sep 5 2018
Wed Jan 2 16:24:14 2019 library versions: OpenSSL 1.1.0g 2 Nov 2017, LZO 2.08
...
<14>Jan 2 15:58:07 update-systemd-resolved: Link 'tun0' coming up
<14>Jan 2 15:58:07 update-systemd-resolved: Adding IPv4 DNS Server 172.17.0.1
<14>Jan 2 15:58:07 update-systemd-resolved: Setting DNS Domain mycompany.com
<14>Jan 2 15:58:07 update-systemd-resolved: Adding IPv4 DNS Server 172.17.0.1
<14>Jan 2 15:58:07 update-systemd-resolved: Adding IPv4 DNS Server 8.8.8.8
<14>Jan 2 15:58:07 update-systemd-resolved: Setting DNS Domain mycompany.com
<14>Jan 2 15:58:07 update-systemd-resolved: Setting DNS Domain mycompany.com
<14>Jan 2 15:58:07 update-systemd-resolved: SetLinkDNS(4 3 2 4 172 17 0 1 2 4 172 17 0 1 2 4 8 8 8 8)
<14>Jan 2 15:58:07 update-systemd-resolved: SetLinkDomains(4 1 mycompany.com false)
Wed Jan 2 15:58:12 2019 ROUTE remote_Host is NOT LOCAL
Wed Jan 2 15:58:12 2019 /sbin/ip route add 96.78.182.190/32 via 172.20.10.1
Wed Jan 2 15:58:12 2019 /sbin/ip route add 8.8.8.8/32 metric 101 via 172.27.232.1
Wed Jan 2 15:58:12 2019 /sbin/ip route add 172.27.224.0/20 metric 101 via 172.27.232.1
Wed Jan 2 15:58:12 2019 /sbin/ip route add 172.17.0.0/16 metric 101 via 172.27.232.1
Wed Jan 2 15:58:12 2019 Initialization Sequence Completed
どこ:
$ tail ./client.ovpn # Recently downloaded from the openvpn server
... # Appended this magic
.... # from here: https://askubuntu.com/questions/1032476/ubuntu-18-04-no-dns-resolution-when-connected-to-openvpn
script-security 2
dhcp-option DNS 172.17.0.1
dhcp-option DOMAIN mycompany.com
up /etc/openvpn/update-systemd-resolved
down /etc/openvpn/update-systemd-resolved
down-pre
そして私が見れば:
$ ls -la /etc/resolv.conf
lrwxrwxrwx 1 root root 39 Nov 21 16:53 /etc/resolv.conf -> ../run/systemd/resolve/stub-resolv.conf
$ cat /etc/resolv.conf
nameserver 127.0.0.53 <<< SHOULD BE 172.17.0.1
search mycompany.com
したがって、Ubuntu 14で発生したように、openvpnクライアントは/etc/resolv.conf
を構成しなかったようです。これがないと、「ping git」または「ping git.mycompany.com」で内部gitサービス(またはすべての内部gitサービス)を検索するとサービス)、すべてのping要求に対してケーブルモデムのIPアドレスをgitします。
/etc/resolv.confを編集し、client.ovpnで要求されたように127.0.0.53を172.17.0.1に置き換えれば、すべて正常に動作します。
このclient.ovpnがUbuntu 18で/etc/resolv.confを更新しないのはなぜですか?
不思議なことに、systemd-resolve
は/etc/resolv.conf
に同意しません。どうしたの?
$ systemd-resolve --status
Global
DNSSEC NTA: 10.in-addr.arpa
16.172.in-addr.arpa
...
home
internal
intranet
lan
local
private
test
Link 4 (tun0)
Current Scopes: DNS
LLMNR setting: yes
MulticastDNS setting: no
DNSSEC setting: no
DNSSEC supported: no
DNS Servers: 172.17.0.1
8.8.8.8
DNS Domain: mycompany.com
Link 2 (wlp2s0)
Current Scopes: DNS
LLMNR setting: yes
MulticastDNS setting: no
DNSSEC setting: no
DNSSEC supported: no
DNS Servers: 172.20.10.1
fe80::1c71:e8cb:d5ec:89ef
Digの場合、少なくとも、systemd-resolve --status
が報告するものはすべて無視されます。
$ Dig git
; <<>> Dig 9.11.3-1ubuntu1.3-Ubuntu <<>> git
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 55917
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;git. IN A
;; Query time: 0 msec
;; SERVER: 127.0.0.53#53(127.0.0.53) <<< Not the DNS I want
;; WHEN: Wed Jan 02 15:41:39 PST 2019
;; MSG SIZE rcvd: 32
役に立たなかった関連質問:
以下: DNSをsystemdの127.0.0.53に設定-恒久的に変更するには?
Resolvconfをインストールした場合:
$ Sudo apt install resolvconf
$ cat /etc/resolv.conf
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
# 127.0.0.53 is the systemd-resolved stub resolver.
# run "systemd-resolve --status" to see details about the actual nameservers.
nameserver 127.0.0.53
...だから127.0.0.53
== systemd-resolve --status
が言うことは何でもそうです。
変更する必要はありません/etc/resolvconf/resolv.conf.d/tail
これは質問への直接の答えではありません(/etc/resolv.confが正しく更新されない理由はわかりません-しかし、理由に関係なく、実際の問題は更新されていないことです)。根本的な問題。私がここや他の場所で読んだたくさんのことを試した後、これは私にとって最終的にうまくいった唯一のものです:
/etc/systemd/resolved.confで、この行の「yes」を「no」に変更し(必要に応じてコメントを外し)、次のようになります。
DNSStubListener = no
これは/etc/resolv.confを見ないようにシステムに指示することだと私は信じています(私の場合はそれを127.0.0.53にのみ向けていました-元の質問が述べているように、OpenVPNが提供していたネームサーバーがありませんでした)DNSの場合。私の推測では、/ etc/resolv.confに依存することは許可されていないため、OpenVPNが提供している他の(正しい)DNS設定にフォールバックすることになります。
これは、dnsmasqの実行中は機能しません(少なくとも私にとっては機能しませんでした)。そのため、インストールされている場合は、サービスを停止し、実行しないように設定してください。
これはUbuntu 18.04を想定しており、openvpn-systemd-resolved
とresolvconf
のインストール、.ovpn
ファイルへの必要な行の追加など、ここや他の場所で言及されている他のソリューションがすでに実装されていることに注意してください。
script security 2
up /etc/openvpn/update-systemd-resolved
up-restart
down /etc/openvpn/update-systemd-resolved
down-pre
/etc/resolv.conf以外の場所からDNSを取得しているため、この修正によりすべてが無関係になると思いますが、これはupdate-systemd-resolvedスクリプトが修正すると想定されているものです(ただし、一部の人はそうではありません)。 。