DHCP(v6)가 완료되기 전에 if-up.d 스크립트가 실행되는 이유는 무엇입니까?

DHCP(v6)가 완료되기 전에 if-up.d 스크립트가 실행되는 이유는 무엇입니까?

저는 DHCP를 사용하고 있으며 IPv4와 IPv6을 모두 가지고 있습니다. 네트워크를 구성할 때 IPv6 DDNS 서비스를 업데이트하는 스크립트를 실행하고 싶습니다.

스크립트를 생성했지만 /etc/network/if-up.d/update_dnsDNS 확인 오류( curl: (6) Could not resolve host: dynv6.com)로 인해 실패했습니다. 로그에는 IPv6 DHCP가 완료되기 전에 실행 중인 것으로 표시됩니다. IPv4가 준비되고 스크립트가 시작되었기 때문인 것 같습니다.

IPv6가 필요한 스크립트를 다른 곳에 배치해야 합니까? 가지다많은 답변이 조언이 if-up.d올바른 곳입니까?

나는 이미 (DHCP를 기다리는 스크립트 Slow Boot) 가 있는 Raspbian Jessie Lite를 사용하고 있습니다./etc/systemd/system/dhcpcd.service.d/wait.conf네트워크가 준비되기 전에 이전에 실행되었던 유사한 문제를 해결합니다..

network/dhcp/eth0을 포함하여 아래의 모든 로그를 포함했습니다.

Apr  6 20:49:58 raspberrypi systemd[1]: Starting LSB: Raise network interfaces....
Apr  6 20:49:58 raspberrypi networking[223]: Configuring network interfaces...* Hostname was NOT found in DNS cache
Apr  6 20:49:58 raspberrypi networking[223]: % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
Apr  6 20:49:58 raspberrypi networking[223]: Dload  Upload   Total   Spent    Left  Speed
Apr  6 20:49:58 raspberrypi networking[223]: 0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0* Could not resolve host: dynv6.com
Apr  6 20:49:58 raspberrypi networking[223]: * Closing connection 0
Apr  6 20:49:58 raspberrypi networking[223]: curl: (6) Could not resolve host: dynv6.com
Apr  6 20:49:58 raspberrypi networking[223]: done.
Apr  6 20:49:58 raspberrypi systemd[1]: Started LSB: Raise network interfaces..
Apr  6 20:49:58 raspberrypi systemd[1]: Starting dhcpcd on all interfaces...
Apr  6 20:49:58 raspberrypi dhcpcd[385]: version 6.7.1 starting
Apr  6 20:49:58 raspberrypi dhcpcd[385]: dev: loaded udev
Apr  6 20:49:58 raspberrypi dhcpcd[385]: eth0: adding address fe80::1073:c87:ef15:c4a3
Apr  6 20:49:58 raspberrypi dhcpcd[385]: eth0: waiting for carrier
Apr  6 20:49:58 raspberrypi dhcpcd[385]: wlan0: waiting for carrier
Apr  6 20:50:00 raspberrypi dhcpcd[385]: eth0: carrier acquired
Apr  6 20:50:00 raspberrypi dhcpcd[385]: DUID 00:01:00:01:1e:7e:75:f4:b8:27:eb:8c:48:b0
Apr  6 20:50:00 raspberrypi dhcpcd[385]: eth0: IAID eb:8c:48:b0
Apr  6 20:50:01 raspberrypi dhcpcd[385]: eth0: rebinding lease of 192.168.0.100
Apr  6 20:50:01 raspberrypi dhcpcd[385]: eth0: soliciting an IPv6 router
Apr  6 20:50:02 raspberrypi dhcpcd[385]: eth0: Router Advertisement from fe80::c23e:fff:fe63:5170
Apr  6 20:50:02 raspberrypi dhcpcd[385]: eth0: adding address fd41:6d80:6364:0:bcdf:ae43:354b:1e46/64
Apr  6 20:50:02 raspberrypi dhcpcd[385]: eth0: adding address 2a02:c7d:2bbb:9f00:76b3:47f9:2c11:fea4/64
Apr  6 20:50:02 raspberrypi dhcpcd[385]: eth0: adding route to fd41:6d80:6364::/64
Apr  6 20:50:02 raspberrypi dhcpcd[385]: eth0: adding route to 2a02:c7d:2bbb:9f00::/64
Apr  6 20:50:02 raspberrypi dhcpcd[385]: eth0: adding default route via fe80::c23e:fff:fe63:5170
Apr  6 20:50:02 raspberrypi dhcpcd[385]: eth0: requesting DHCPv6 information
Apr  6 20:50:06 raspberrypi dhcpcd[385]: eth0: leased 192.168.0.100 for 86400 seconds
Apr  6 20:50:06 raspberrypi dhcpcd[385]: eth0: adding route to 192.168.0.0/24
Apr  6 20:50:06 raspberrypi dhcpcd[385]: eth0: adding default route via 192.168.0.1
Apr  6 20:50:06 raspberrypi dhcpcd[385]: forked to background, child pid 716
Apr  6 20:50:06 raspberrypi systemd[1]: Started dhcpcd on all interfaces.
Apr  6 20:50:06 raspberrypi ntpd[757]: Listen normally on 3 eth0 192.168.0.100 UDP 123
Apr  6 20:50:06 raspberrypi ntpd[757]: Listen normally on 5 eth0 2a02:c7d:2bbb:9f00:76b3:47f9:2c11:fea4 UDP 123
Apr  6 20:50:06 raspberrypi ntpd[757]: Listen normally on 6 eth0 fe80::1073:c87:ef15:c4a3 UDP 123
Apr  6 20:50:06 raspberrypi ntpd[757]: Listen normally on 8 eth0 fd41:6d80:6364:0:bcdf:ae43:354b:1e46 UDP 123

답변1

if-up.d 스크립트는 여러 번 실행됩니다. 변하기 쉬운$ADDRFAM"로 설정됩니다.인트라넷" 그리고"인트라넷 6" IPv4 및 IPv6를 각각 구성할 때. bash를 사용하는 경우 스크립트에서 이 변수를 확인하세요.

[ "$ADDRFAM" == "inet6" ] || exit 0

(참고: 이는 고정 IPv6 주소가 구성된 경우 발생합니다. SLAAC 또는 DHCPv6만 사용하는 경우에는 발생하지 않을 수 있습니다. 테스트하지 않았습니다.)

관련 정보