dhclient 프로세스가 잘못된 인터페이스를 망쳤습니다.

dhclient 프로세스가 잘못된 인터페이스를 망쳤습니다.

저는 Debian Buster를 사용하고 있으며 eth0과 wwan0(광대역 모뎀)이라는 두 개의 인터페이스가 구성되어 있습니다. 내 인터페이스 파일의 관련 부분은 다음과 같습니다.

# 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 서버를 추가하고 싶기 때문에 이 섹션을 내 파일에 포함합니다 . 이 부분을 제거하면 문제가 사라집니다.

관련 정보