これは私のワイヤレスネットワークです。interfaces
#auto wlp1s0
allow-hotplug wlp1s0
iface wlp1s0 inet manual
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
# up /usr/sbin/wondershaper -a wlan0 -d 9500 -u 15000
# down /usr/sbin/wondershaper -a wlan0 -c
allow-hotplug RWB
iface RWB inet dhcp
ここで、RWB
AP は次のように定義されます。/etc/wpa_supplicant/wpa_supplicant.conf
dhclient
このファイルはAPに接続するたびに更新されます/etc/resolv.conf
。つまり、片足でRWB
別のデバイス(有線イーサネットを含む)に接続すると、IPアドレスがresolv.conf
ルーティングできなくなり、DNSが失敗します。
dhcp
素朴な回避策はクライアントの更新を防ぐことですが、resolv.conf
確かにこの状況に関する問題を解決するための一般的な構成があります。何ですか?
答え1
まだコメントできないので、答えは次のようになります。このYouTubeでは、resolv.confを使用してUbuntu / Debianで永続DNSネームサーバーを設定する方法を紹介します。
https://www.youtube.com/watch?v=NEyXDdBrw2c
@Hack Sawが述べたように、systemdは解決.confからDNSネームサーバーを永久に変更する際に問題を引き起こす可能性がある解決.confを管理できます。
答え2
man
ページからdhclient
-
BUGS
If more than one interface is being used, there's no obvious way to avoid
clashes between server-supplied configuration parameters - for example, the stock
dhclient-script rewrites /etc/resolv.conf ...
dhclient
DHCP イベントが発生したときにシェルスクリプトを使用してシステムを設定します。dhclient
上書きを防ぐには、resolv.conf
このスクリプトのデフォルトの動作を変更する必要があります。ただし、まず、複数のネットワークインターフェイスのDNS情報を管理できる同様のものをインストールして実行する必要がありますsystemd-resolved
。
dhclient
以下は、上書きするのではなくDNS情報を更新するように変更する方法の例です。systemd-resolved
/etc/resolv.conf
/etc/dhcp/dhclient-enter-hooks.d/dns-update
#!/bin/sh
make_resolv_conf(){
# DHCPv4
if [ -x /usr/bin/systemd-resolve ]; then
if [ -n "$new_domain_name" ]; then
systemd-resolve --interface="$interface" --set-domain="${new_domain_name%% *}"
fi
if [ -n "$new_domain_name_servers" ]; then
for nameserver in $new_domain_name_servers; do
systemd-resolve --interface="$interface" --set-dns="$nameserver"
done
fi
fi
}
dhclient
このスクリプトは、DHCPから受信したシステム構成を適用し、ストックを上書きする前に呼び出されますmake_resolv_conf()
。
/etc/dhcp/dhclient-enter-hooks.d
オペレーティングシステムによっては、ディレクトリがない場合があります。この場合、スクリプトを/etc/dhclient-enter-hooks
。