RTNETLINK 답변: ipv6 주소를 추가한 후에 파일이 존재합니다.

RTNETLINK 답변: ipv6 주소를 추가한 후에 파일이 존재합니다.

한동안 벽에 머리를 부딪혔는데 아무런 진전이 없었습니다.

내 시스템에는 ipv4 및 ipv6 주소가 정적으로 할당되어 있습니다. 시작 후 실행 systemctl status networking결과는 다음과 같습니다.

● networking.service - Raise network interfaces
   Loaded: loaded (/lib/systemd/system/networking.service; enabled; vendor preset: enabled)
  Drop-In: /run/systemd/generator/networking.service.d
       └─50-insserv.conf-$network.conf
   Active: failed (Result: exit-code) since Sat 2016-08-27 14:48:50 MST; 8min ago
     Docs: man:interfaces(5)
  Process: 3301 ExecStart=/sbin/ifup -a --read-environment (code=exited, status=1/FAILURE)
  Process: 3275 ExecStartPre=/bin/sh -c [ "$CONFIGURE_INTERFACES" != "no" ] && [ -n "$(ifquery --read-environment --list --exclude=lo)" ] && udevadm settle (code=exited, status=0/SUCCESS)
 Main PID: 3301 (code=exited, status=1/FAILURE)

Aug 27 14:48:25 phoenix systemd[1]: Starting Raise network interfaces...
Aug 27 14:48:28 phoenix ifup[3301]: /sbin/ifup: waiting for lock on /run/network/ifstate.ens160
Aug 27 14:48:50 phoenix ifup[3301]: RTNETLINK answers: File exists
Aug 27 14:48:50 phoenix ifup[3301]: Failed to bring up ens160.
Aug 27 14:48:50 phoenix systemd[1]: networking.service: Main process exited, code=exited, status=1/FAILURE
Aug 27 14:48:50 phoenix systemd[1]: Failed to start Raise network interfaces.
Aug 27 14:48:50 phoenix systemd[1]: networking.service: Unit entered failed state.
Aug 27 14:48:50 phoenix systemd[1]: networking.service: Failed with result 'exit-code'.

그러나 인터페이스는 실제로 실행 중입니다.

을 실행하면 systemctl restart networking실패합니다. 실행하면 ifdown ens160인터페이스가 구성되지 않았다고 표시됩니다.

인터페이스를 강제로 닫으면 종료된 다음 ifdown --force ens160또는 를 사용하여 다시 시작됩니다.ifup ens160systemctl restart networking

ipv6 부분을 주석 처리하면 시작 후에는 문제가 없습니다.

이것은 내 인터페이스 파일입니다.

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto ens160
iface ens160 inet static
    address XXX.XXX.XXX.3/24
    gateway XXX.XXX.XXX.1
    dns-search example.org
    dns-nameservers ::1 127.0.0.1

# This is an IPv6 interface
iface ens160 inet6 static
    address XXXX:XXXX:XXXX:XXXX::3/64
    gateway XXXX:XXXX:XXXX:XXXX::1

이것은 vmware 클러스터에 설치된 기본 Ubuntu 16.04.1 서버이며, Bind9 및 SSH 서버만 설치되어 있습니다. 구성 변경 사항은 올바르게 구성된 bin9 및 고정 IP 변경뿐이었습니다.

동일한 작업을 수행하는 여러 설치가 있습니다.

나는 많은 검색을 수행했지만 이 시나리오에 맞는 것을 찾지 못했습니다. 내 Google 기술은 일반적으로 강력하지만 이로 인해 실패했습니다.

내가 얻을 수 있는 어떤 도움이라도 대단히 감사하겠습니다.

답변1

게이트웨이 라인이 주석 처리되면 작동하므로 불행한 경쟁 조건이 발생합니다. Linux는 인터페이스에 대한 링크가 설정되자마자 실행을 시작합니다.이웃이 알아냈어요그리고 받아들이다라우터 광고인터페이스가 아직 완전히 구성되지 않은 경우에도 IPv6 경로를 라우팅 테이블에 넣을 수 있습니다. 나중에 스크립트가 기본 경로를 추가하려고 시도하면 다음과 같은 결과가 나타납니다.

RTNETLINK answers: File exists

이 문제를 해결하려면 다음을 수행하십시오.

  • 게이트웨이 라인을 주석 처리합니다(경로가 네트워크에 올바르게 공지된 경우 권장되는 접근 방식입니다).
  • 또는 다음을 통해 RA 수락을 비활성화합니다.
    sysctl -w net.ipv6.conf.device.accept_ra=0
    
    (장치는 실제 장치 default이거나 all).

관련 정보