데비안을 사용하여 dhcp를 통해 ipv4 및 ipv6 인터페이스를 자동 구성하는 올바른 방법은 무엇입니까?

데비안을 사용하여 dhcp를 통해 ipv4 및 ipv6 인터페이스를 자동 구성하는 올바른 방법은 무엇입니까?

저는 debian 9stretch(현재 안정 버전)를 실행하는 홈브루 PC 같은 라우터를 가지고 있습니다.

몇 달 동안 나는 다음과 같이 WAN ipv4 및 WAN ipv6을 자동으로 구성하도록 관리했습니다.

# WAN vlan 832 internet
auto enp1s0.832
iface enp1s0.832 inet dhcp
iface enp1s0.832 inet6 manual

inet6 부분은 두 개의 스크립트를 사용합니다.

  • IPV6 접두사 위임 모드에서 ISC dhcp 클라이언트를 시작하기 위한 첫 번째 /etc/network/if-up.d/99-ipv6 스크립트
  • 두 번째 /etc/dhcp/dhclient-exit-hooks.d/dhclient-ipv6 스크립트는 IPV6 "/64" 서브넷을 LAN 인터페이스에 할당하는 데 사용됩니다.

이것은 몇 달 동안 잘 작동했습니다. 재부팅 후 시스템이 빠르게 시작되어 실행되었으며 IPV4와 IPV6 모두 제대로 작동했습니다.

패키지를 정기적으로 업데이트한 후, 라우터 WAN 인터페이스를 구성할 때 debian systemd "networking.service"가 시작 시 중단되기 시작했습니다. 5분 동안 멈추고 기본 "network.service" 시간 초과로 인해 종료됩니다. 결과적으로 WAN 인터페이스는 UP 상태이지만 IPV4 및 IPV6-PD에 대한 dhclient 인스턴스도 종료됩니다. DHCP 클라이언트가 실행되고 있지 않으면 라우터가 DCHP 임대를 새로 고치지 않기 때문에 이는 매우 나쁩니다.

debiannetworking.service는 IPV6 부분을 구성했습니다. IPV6 부분에 대해 다음과 같이 설명하려고 하면 다음과 같습니다.

# WAN vlan 832 internet
auto enp1s0.832
iface enp1s0.832 inet dhcp

시스템이 정상적으로 다시 시작되지만 IPV6은 사용되지 않습니다.

또한 다음과 같이 "캐시" 방식을 사용해 보았습니다.

auto enp1s0.832
iface enp1s0.832 inet dhcp
iface enp1s0.832 inet6 dhcp
  request_prefix 1
  accept_ra 2

위 내용으로 Debian "networking.service"는 IPV4 및 IPV6용 ISC DHCP 클라이언트 인스턴스를 시작합니다. https://wiki.debian.org/IPv6PrefixDelegation

그러나 이 설정을 사용하면 debian systemdnetworking.service가 여전히 5분 동안 정지됩니다.

그래서 저는 매우 더러운 최후의 수단을 사용해야 했습니다.

auto enp1s0.832
iface enp1s0.832 inet dhcp
  up /sbin/dhclient -6 -P -pf /run/dhclient6.enp1s0.832.pid -lf /var/lib/dhcp/dhclient6.enp1s0.832.leases -df /var/lib/dhcp/dhclient.enp1s0.832.leases enp1s0.832&

이렇게 하면 debiannetworking.service가 시간 초과되지 않고 IPV4 및 IPV6 dhclient 인스턴스가 모두 올바르게 실행됩니다.

부팅 시 중단하지 않고 데비안이 IPV4 및 IPV6을 자동으로 구성하도록 하는 깔끔한 방법은 무엇입니까?

답변1

올바른 방법은 /etc/network/interfaces 파일 "네이티브 ipv6 기능"을 사용하는 것입니다. IPV6 관리를 위한 Ifupdown의 DHCP는 수년에 걸쳐 개선되었습니다. 비록 널리 알려지지는 않았지만..

세부 사항은 ISP가 IPV6 주소를 제공하기로 결정한 방법에 따라 달라질 수 있습니다.

대부분의 경우 ISP는 DHCPV6-PD(접두사 위임)를 사용합니다. 이 경우 /etc/network/interfaces는 다음과 같아야 합니다(debianstretch에서):

auto wanif
iface wanif inet dhcp
iface wanif inet6 dhcp
  request_prefix 1
  accept_ra 2

DHCPV6-PD에는 request_prefix가 필요합니다. 그렇지 않으면 ifupdown에 의해 시작된 DHCP 클라이언트가 단일 주소를 요청합니다. ISP에서는 제대로 작동하지 않을 수 있습니다. 내 경우 프랑스의 Orange는 잘못된 DCHP v6 요청을 완전히 무시했으며 ISP DHCP 서버는 거부 메시지로 응답하지도 않았습니다. 메스꺼움...

데비안이 관리하지 않는 부분은 LAN에서 IPV6 주소 할당입니다. 이렇게 하려면 여기에 설명된 대로 사용자 정의 스크립트를 사용해야 합니다.https://wiki.debian.org/IPv6PrefixDelegation

그러나주의 사항이 있습니다. 내 DHCPv6 후크 스크립트로 인해 systemd 서비스가 연동되었습니다. LAN 인터페이스에 IPV6 주소를 노출하기 위해 radvd(라우터 광고)를 사용하므로 WAN IPV6 접두사가 변경되면 radvd 서비스를 다시 시작해야 합니다. 이를 달성하기 위한 일반적인 명령은 다음과 같습니다.

systemctl restart radvd

그러나 이로 인해 시작 시 시스템이 연동되었습니다. 인터페이스의 초기 설정은 "networking.services"라는 시스템 서비스에 의해 수행됩니다(이 서비스는 주로 ifup --all을 호출합니다).

"networking.service"와의 연동을 피하려면 다음을 사용해야 합니다.

systemctl --no-block restart radvd

바라보다https://www.freedesktop.org/software/systemd/man/systemctl.html더 알아보기.

관련 정보