web-dev-qa-db-ja.com

dnsmasqを追加し、systemdを解決する方法(18.04)

Dnsmasqで高速のDNS解決を取得し、デフォルトのsystemd-resolvedを維持したい。

これを行うエレガントな方法を探しています

9
cmak.fr

私はdnsmasqで高速のDNS解決を取得し、将来の使用のためにデフォルトのsystemd-resolved/NetworkManagerセットアップをそのまま維持したかったのです。はい、dnsmasqの巨大なDNSキャッシュはブラウジング速度を改善できます。はい、目標は18.04のデフォルトのDNS設定を維持することでした

  1. Dnmasqをインストールする
  2. 設定します(アドレスとDNSサーバーをリッスンします)
  3. 手動DNSサーバーアドレス用にNetWorkManagerを構成する
  4. 確認確認

1-須藤と

apt-get -y install dnsmasq

2-須藤と

tee -a /etc/dnsmasq.conf << ENDdm
interface=lo
bind-interfaces
listen-address=127.0.0.1
# DNS server from OpenDns. Use yours...
server=208.67.222.222
server=208.67.220.220
ENDdm

systemctl restart dnsmasq
systemctl enable dnsmasq

3-USERを使用して、NetworkManagerを構成します

# Get NM first active profile name
NetManProfile=$(nmcli -t  connection show --active | cut -f 01 -d ':')
# remove, if exists, current dns servers
nmcli con mod "$NetManProfile" ipv4.dns ""
# set 'manual' dns server
nmcli con mod "$NetManProfile" ipv4.ignore-auto-dns yes
# set dnsmasq as manually set dns server
nmcli con mod "$NetManProfile" ipv4.dns 127.0.0.1
# i also disabled ip6, do what u want
nmcli con mod "$NetManProfile" ipv6.method ignore
# reconnect to take effect
nmcli connection down "$NetManProfile"
nmcli connection up "$NetManProfile"

4-確認の確認

  • systemd-resolvedはデフォルトで127.0.0.53をリッスンします
  • dnsmasqは、/ etc/dnsmasqで設定された127.0.0.1でリッスンします
  • systemd-resolvedはNetworkManagerから127.0.0.1を取得しました
netstat -antup
Proto Recv-Q Send-Q Adresse locale          Adresse distante        Etat       PID/Program name    
tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      1036/dnsmasq        
tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN      766/systemd-resolve
cat /run/systemd/resolve/resolv.conf 
nameserver 127.0.0.1
9
cmak.fr

合理的な解決策を見つけようとしましたが、さまざまなアプローチがあるようです。

すべてのビジネス要件を満たしながら、配布レイアウト内に最大限に留まりたかったのです。これは、クリーンなUbuntu 18.04とKDE Neonのフレーバーで動作するように収集してテストしたものです。

# Install required package and reconfigure service plans (i.e. disablesystemd-resolved, enable dnsmasq
Sudo apt-get install dnsmasq
Sudo systemctl disable systemd-resolved
Sudo systemctl stop systemd-resolved
Sudo systemctl enable dnsmasq

# These two lines should work on most environments, but .. :-) - so I kept them commented out for less experienced users
# Just add or change 'dns=dnsmasq' to your NetworkManager.conf to the section [main]
# and yes, the sed expression can be better :-)

#Sudo cp /etc/NetworkManager/NetworkManager.conf /etc/NetworkManager/NetworkManager.conf.backup
#Sudo bash -c 'cat /etc/NetworkManager/NetworkManager.conf.backup |sed -e "s/^dns=.*//"| sed -e "s/\[main\]/\[main\]\ndns=dnsmasq/" >/etc/NetworkManager/NetworkManager.conf'

# Restart NetworkManager to make the change above applied
Sudo systemctl restart NetworkManager

# This removes the systemd resolv.conf link only if it has NetworkManager replacement :-)
ls /var/run/NetworkManager/resolv.conf && Sudo rm /etc/resolv.conf

# And add NetworkManager's resolv.conf available for the system resolver
Sudo ln -s /var/run/NetworkManager/resolv.conf /etc/resolv.conf

(上記の答えとの唯一の一般的な違いは、NetworkManagerがdnsmasq DNSサーバー割り当てを自動的に処理することです。

1
Venca B Spam

Ubuntu 18.10

私見、dnsmasqを実行する場合は、dhcpから取得するのではなく、静的にIPアドレスを割り当てる必要があります。この方法で、systemd-resolvedをすべて一緒に無効にすることができます。

  1. Sudo apt-get install dnsmasq

  2. Sudo systemctl disable systemd-resolved

  3. Sudo systemctl stop systemd-resolved

  4. IPアドレス、ゲートウェイを手動で割り当て、IPアドレスをDNSとしてマシンに割り当てます。

  5. /etc/dnsmasq.confを設定します(本当に... RTFM-> man dnsmasq.conf)

  6. Sudo systemctl enable dnsmasq

  7. リブート
  8. Sudo systemctl status dnsmasq

  9. dhcpサーバーのdhcpを、光沢のある新しいdnsmasqサーバーにポイントします(..if yumpto)

0
LiverWurst