2016-06-29 3 views
10

서버의 몇 가지 물리적 인터페이스를 분리하기 위해 네임 스페이스를 사용하고 있습니다. 라우팅이 완벽하게 작동합니다. 또한 각 네임 스페이스에 대한 폴더가/etc/netns /에 있습니다. /etc/netns/namespaceA/resolv.conf를 실행하면 DNS가 잘 작동합니다.dhclient를 네임 스페이스를 어떻게 인식시킬 수 있습니까?

dhclient와 함께 DHCP를 사용할 때 문제가 발생합니다. 네임 스페이스 내부에서 dhclient를 실행하고 있는데이 오류가 발생합니다.

(namespaceA)[email protected]:~#dhclient 
RTNETLINK answers: File exists 
mv: cannot move '/etc/resolv.conf.dhclient-new.2740' to '/etc/resolv.conf': Device or resource busy 

나는 /etc/resolvconf/update.d/libc의 MV가 문제를 일으킬 수있는 MV 포함되어 있음을 발견했다.

어떻게 dhclient를 네임 스페이스를 인식 할 수 있습니까?

답변

6

나는이 문제를 직접 들었다.

은 무슨 일 네트워크 네임 스페이스를 만들 때 사용자가 명시 적으로 /etc/netns/<namespace_name>/resolv.conf 생성하지 않는 한, 당신은 네트워크 네임 스페이스 내에서 을 보았을 때 /etc/resolv.conf에 자동으로 마운트를 바인딩하는 호스트 시스템의 /etc/resolv.conf을 볼 수 있다는 것입니다. 따라서 간단히 해당 경로를 생성하면 호스트의 resolv.conf이 네트워크 네임 스페이스에서 더 이상 보이지 않게되며 네트워크 네임 스페이스에는 resolv.conf이 생깁니다.

ip netnsmanual page이 설명 : 네트워크 이름 공간을 인식 응용 프로그램의

이 협약 는/다음에 은/etc/netns/NAME에 최초의 글로벌 네트워크 구성 파일을 찾는 것입니다/기타/. 예를 들어, 버전의 /etc/resolv.conf를 네트워크 네임 스페이스에 사용하여 VPN을 격리하려는 경우 /etc/netns/myvpn/resolv.conf로 지정합니다.

IP를 netns 간부는 마운트 네임 스페이스를 생성하여, 네트워크 공간 인식 애플리케이션을위한 규칙 파일 및/etc에 전통적인 위치에 네트워크 당 네임 스페이스 구성 파일을 모두 설치 바인딩이 구성의 처리를 자동화합니다.

는 는

지금까지 resolv.confdhclient/etc/netns/<namespace_name>/resolv.conf 반면에 (존재하는 상자에서 네트워크 네임 스페이스에서 작동하지 않습니다 업데이트로, 존재하지 않을 때, 그것은 호스트 시스템의 resolv.conf을 덮어 쓰게됩니다 사용 가능한 유일한 것이기 때문에, 그러나 그것은 정말로 바람직하지 않습니다). 위의 질문에서 오류가 나타나면 어떤 일이 발생합니까? dhclient/etc/resolv.conf.dhclient-new.2740에 새 네임 서버 세부 정보로 임시 파일을 준비한 다음 /etc/resolv.conf으로 이름을 변경하려고 시도합니다. /etc/resolv.conf이 이미 바인드 마운트되어 있고 mv이이 트릭을 수행 할 수 없기 때문에 오류가 발생합니다.

dhclient을 네트워크 네임 스페이스에서 작동 시키려면 /sbin/dhclient-script을 수정해야합니다. 나는이 제거 :

mv -f $new_resolv_conf /etc/resolv.conf 

을 그리고 그것을 대체 :

cat $new_resolv_conf > /etc/resolv.conf 
rm -f $new_resolv_conf 

그렇지 않으면, dhcpcd가 제대로이 일을 할 것으로 보인다.

+0

이것은 멋진 해결 방법입니다. mv를 cat으로 변경해야하는 두 개의 섹션이 있습니다. mv가 intervally하고있는 것이 궁금합니다. 먼저 파일을 제거합니까? – 0xAffe

관련 문제