dhclientプロセスが間違ったインターフェイスを台無しにしました。

dhclientプロセスが間違ったインターフェイスを台無しにしました。

私はDebian Busterを使用しており、eth0とwwan0(ブロードバンドモデム)という2つのインターフェースが構成されています。私のインターフェースファイルの関連部分は次のとおりです。

# The primary network interface
auto eth0
iface eth0 inet dhcp

# Do not bring up wwan0 automatically
allow-hotplug wwan0
iface wwan0 inet dhcp
        pre-up until [ -h /dev/ublox00 ]; do sleep 1; done && echo $'AT+UCEDATA=1,0\r\n' > /dev/ublox00 && sleep 2
        post-down echo $'AT+CGACT=0\r\n' > /dev/ublox00

wwan0を終了しようとしたときにeth0のIPアドレスも公開されたことを確認しました。

$ sudo ifdown -v wwan0
ifdown: configuring interface wwan0=wwan0 (inet)
/bin/run-parts --verbose /etc/network/if-down.d
run-parts: executing /etc/network/if-down.d/wpasupplicant
/sbin/dhclient -4 -v -i -r -pf /run/dhclient.wwan0.pid -lf /var/lib/dhcp/dhclient.wwan0.leases -I -df /var/lib/dhcp/dhclient6.wwan0.leases wwan0
Killed old client process
Internet Systems Consortium DHCP Client 4.4.1
Copyright 2004-2018 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/

Listening on LPF/eth0/98:f0:7b:98:7a:89
Sending on   LPF/eth0/98:f0:7b:98:7a:89
Listening on LPF/wwan0/ee:bc:6c:be:6d:7c
Sending on   LPF/wwan0/ee:bc:6c:be:6d:7c
Sending on   Socket/fallback
DHCPRELEASE of 192.168.1.101 on eth0 to 192.168.1.1 port 67
DHCPRELEASE of 100.68.214.247 on wwan0 to 100.68.214.248 port 67
/sbin/ip link set dev wwan0 down
/bin/run-parts --verbose /etc/network/if-post-down.d
run-parts: executing /etc/network/if-post-down.d/hostapd
run-parts: executing /etc/network/if-post-down.d/wireless-tools
run-parts: executing /etc/network/if-post-down.d/wpasupplicant
echo $'AT+CGACT=0\r\n' > /dev/ublox00

インターフェイスを呼び出してもう一度リクエストしてください。

$ sudo ifup -v wwan0
ifup: configuring interface wwan0=wwan0 (inet)
until [ -h /dev/ublox00 ]; do sleep 1; done && echo $'AT+UCEDATA=1,0\r\n' > /dev/ublox00 && sleep 2
/bin/run-parts --exit-on-error --verbose /etc/network/if-pre-up.d
run-parts: executing /etc/network/if-pre-up.d/hostapd
run-parts: executing /etc/network/if-pre-up.d/wireless-tools
run-parts: executing /etc/network/if-pre-up.d/wpasupplicant

/sbin/dhclient -4 -v -i -pf /run/dhclient.wwan0.pid -lf /var/lib/dhcp/dhclient.wwan0.leases -I -df /var/lib/dhcp/dhclient6.wwan0.leases wwan0
Internet Systems Consortium DHCP Client 4.4.1
Copyright 2004-2018 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/

Listening on LPF/eth0/98:f0:7b:98:7a:89
Sending on   LPF/eth0/98:f0:7b:98:7a:89
Listening on LPF/wwan0/ee:bc:6c:be:6d:7c
Sending on   LPF/wwan0/ee:bc:6c:be:6d:7c
Sending on   Socket/fallback
DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 3
DHCPDISCOVER on wwan0 to 255.255.255.255 port 67 interval 6
DHCPOFFER of 192.168.1.101 from 192.168.1.1
DHCPREQUEST for 192.168.1.101 on eth0 to 255.255.255.255 port 67
DHCPOFFER of 100.68.214.247 from 100.68.214.248
DHCPREQUEST for 100.68.214.247 on wwan0 to 255.255.255.255 port 67
DHCPACK of 100.68.214.247 from 100.68.214.248
bound to 100.68.214.247 -- renewal in 74796 seconds.
/bin/run-parts --exit-on-error --verbose /etc/network/if-up.d
run-parts: executing /etc/network/if-up.d/wpasupplicant

コマンドsudo ifdown eth0sudo ifup eth0操作はeth0でのみ期待どおりに機能します。問題を見つけるのを手伝ってください。

私のifupdownバージョンは0.8.35です。

答え1

この問題の原因を見つけたようです。

interface "name" { declarations ... }検索https://linux.die.net/man/5/dhclient.conf:

複数のネットワークインターフェイスを持つクライアントは、設定しているインターフェイスによって異なる動作が必要になる場合があります。リース宣言とエイリアス宣言を除くすべてのタイミングパラメーターと宣言は、インターフェース宣言に含めることができ、これらのパラメーターは、指定された名前と一致するインターフェースにのみ使用されます。インタフェース宣言のないインタフェースは、インタフェース宣言の外部で宣言されたパラメータまたはデフォルト設定を使用します。

注意してください:ISC dhclientは、起動時にコマンドライン引数によって決定または自動的に検出されるインターフェイスのリストのみを維持します。コマンドラインにインターフェイスのリストを提供する場合、この設定セクションは指定されたインターフェイスをリストに追加してDHCPによって設定されます。望ましい結果ではないかもしれません。これは望ましくない副作用であり、今後のリリースで解決される予定です。

dhclient.confeth0に特定のDNSサーバーを追加したいので、このセクションを私のファイルに含めます。この部分を取り除くと問題がなくなります。

関連情報