web-dev-qa-db-ja.com

DNSプロキシとしてconnmanの代わりにsystemd-resolveを使用する方法は?

コンピュータを起動するたびに、DNSが機能しません。 /etc/resolv.confでは

# Generated by Connection Manager
nameserver ::1
nameserver 127.0.0.1

/etc/resolv.conf/run/connman/resolv.confへのソフトリンクです

この構成では、DNSが機能しません(例:Chrome/FirefoxでWebを閲覧できず、Dig google.comからIPが提供されず、pingによって「名前またはサービスが不明」と表示されます)。したがって、ネームサーバー::1を有効なIP(1.1.1.1や8.8.8.8など)で手動で変更します。コンピュータの電源を入れるたびにこれを行う必要があります。

Ubuntu 17.10にconnman(Intel Connection Managerデーモン)がプリインストールされているのか、VPNクライアントをインストールしようとしたときにインストールされているのかわかりません。 Webで検索すると、標準的な設定がないようです。そのため、サービスを停止しようとしましたが、接続が失われ、(NetworkManager?)アプレットに使用可能なネットワークが表示されません。

Connmandがポート53でリッスンしている(しかし、うまく解決されない)ことがわかります。systemd-resolveもポート53でリッスンしています(ただし、127.0.0.53に接続されています)。

Sudo netstat -tulpn | grep ":53 "
tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      21159/connmand      
tcp6       0      0 ::1:53                  :::*                    LISTEN      21159/connmand      
udp        0      0 127.0.0.1:53            0.0.0.0:*                           21159/connmand      
udp        0      0 127.0.0.53:53           0.0.0.0:*                           1451/systemd-resolv 
udp6       0      0 ::1:53                  :::*                                21159/connmand

systemd-resolve --statusを実行すると、正しいDNSが得られます。

/etc/resolv.conf/run/systemd/resolve/resolv.confに再リンクすると、問題が解決します。

では、どうすればconnmanを無効にして(少なくともDNSプロキシとして)、systemd-resolveを再度有効にできますか? Ubuntu 17.10にconnmanはデフォルトでインストールされますか?

2
Luis Cardozo

すみません、次のように簡単でした。

  1. connmanの削除:

    Sudo apt remove connman
    
  2. resolv.confの削除:

    Sudo rm /etc/resolv.conf
    
  3. /run/systemd/resolve/resolv.confへの再リンク

    Sudo ln -s /run/systemd/resolve/resolv.conf /etc/resol.conf
    

最後の2つの手順が必要だったのは、connmanが管理する/etc/resolv.confがないため、NetworkManagerがそれを管理し、「127.0.1.1」をDNSサーバーとして配置したためです(そして、そこにリッスンしているサーバーがありませんでした)。

NetworkManagerのmanページには、systemd-resolveresolve.confを管理できるようにするために必要なのは、systemdディレクトリのいずれかの下にあるresolv.confファイルへのソフトリンクを作成することだけです。

1
Luis Cardozo