dhclient가 종료된 경우 Linux의 동적 IP 주소를 공개하는 프로그램은 무엇입니까?

dhclient가 종료된 경우 Linux의 동적 IP 주소를 공개하는 프로그램은 무엇입니까?

dhclient가 종료된 후 단기적으로 동적 IP 손실이 표시되지 않습니다. 그러다가 주말이 지나자 동적 IP 주소가 사라졌습니다.

어느 프로그램에서 게시했는지 궁금합니다.

답변1

내 Debian 시스템은 NetworkManager + dhclient를 사용하여 dhclient가 할당한 IP에 타이머를 설정합니다(초기 구성은 NetworkManager에 의해 변경됨). 이 타이머는 커널에 의해 직접 관리됩니다. 최근 인터페이스가 등장했을 때 다음과 같았습니다.

# ip addr show dev eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    inet 10.6.0.122/24 brd 10.6.0.255 scope global dynamic noprefixroute eth0
       valid_lft 7150sec preferred_lft 7150sec

새로 고침이 없으면 IP는 7150초 이내에 커널에 의해 직접 삭제됩니다. 임대를 갱신하면 이 값이 새로 고쳐집니다. 이것은 확실히 내 DHCP 서버 구성과 관련이 있습니다 default-lease-time 7200;.

다음은 인터페이스에 10초 IP를 추가하는 간단한 예입니다 lo.

term1# ip -4 -o monitor addr|while read -r l; do printf '%s\n' "$l" | sed "s/^/$(date --iso-8601=s) /"; done
2018-11-19T21:10:18+00:00 1: lo    inet 10.1.1.1/32 scope global dynamic lo\       valid_lft 10sec preferred_lft 5sec
2018-11-19T21:10:23+00:00 1: lo    inet 10.1.1.1/32 scope global deprecated dynamic lo\       valid_lft 5sec preferred_lft 0sec
2018-11-19T21:10:28+00:00 Deleted 1: lo    inet 10.1.1.1/32 scope global deprecated dynamic lo\       valid_lft 0sec preferred_lft 0sec

2학기에 할 때:

term2# ip addr add dev lo 10.1.1.1 preferred_lft 5 valid_lft 10
term2# ip -4 -br a  show dev lo
lo               UNKNOWN        127.0.0.1/8 10.1.1.1/32 
term2# ip -4 -br a  show dev lo
lo               UNKNOWN        127.0.0.1/8 

Debian Stretch의 dhclient는 이를 처리하지 않습니다 valid_lft(그러나 NetworkManager는 이를 추가합니다). CentOS와 같은 다른 시스템에서는 valid_lft다음 줄에 표시된 대로 dhclient에 의해 처리됩니다 /sbin/dhclient-script.

351     # replace = add if it doesn't exist or override (update lifetimes) if it's there
352     ip -4 addr replace ${new_ip_address}/${new_prefix} broadcast ${new_broadcast_address} dev ${interface} \
353        valid_lft ${new_dhcp_lease_time} preferred_lft ${new_dhcp_lease_time} >/dev/null 2>&1

따라서 특정 설정이 valid_lft다른 경우 forever대답은 커널이 수행한다는 것입니다.

답변2

DHCP를 사용하는 경우 IP 주소를 "소유"하는 것이 아니라 "임대"합니다.

비유하자면 자동차를 렌트한다고 상상해 보세요. 임대는 일정 기간(아마도 12개월) 동안입니다. 기간이 끝난 후에도 차량을 계속 운전하려면 돌아가서 새 임대 계약을 위한 몇 가지 서류에 서명해야 합니다. 서류 서명을 건너뛰기로 결정하면 자동차를 계속 운전할 수 없습니다. 임대 계약이 만료되고 갱신하지 않으면 소유자가 자동차를 다시 점유할 수 있습니다. 아무것도 하지 않으면 마술처럼 새 차를 얻을 수 없습니다. 대신 차가 전혀 없습니다.

마찬가지로 이 기능을 끄면 dhclientIP 주소가 유지되지 않습니다. 이는 더 이상 돌아가서 더 많은 서류 작업을 할 필요가 없다는 것을 의미합니다. 따라서 IP 주소가 만료되면(만약!), 새 주소를 얻을 수 없습니다. IP 주소를 전혀 얻지 못합니다.

관련 정보