resolvconf에서 특정 인터페이스(dhclient)를 비활성화하는 방법은 무엇입니까?

resolvconf에서 특정 인터페이스(dhclient)를 비활성화하는 방법은 무엇입니까?

저는 ubuntu/trusty64Vagrant box와 VirtualBox를 사용하고 있습니다. Vagrant의 기본 인터페이스에 따라 set by를 영구적으로 비활성화하고 싶습니다 nameserver 10.0.2.3.resolvconfeth0

내 네트워크는 다음과 같이 정의됩니다 Vagrantfile.

server.vm.network "private_network", type: "dhcp", virtualbox__intnet: true

eth1이렇게 하면 DHCP 풀 설정이 포함된 인터페이스가 생성됩니다. 다음과 같습니다 resolv.conf.

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 10.0.2.3
nameserver 10.20.30.40
search local
  • nameserver 10.0.2.3그리고 search localDHCP 설정에서eth0
  • nameserver 10.20.30.40DHCP 설정에서eth1

에서 비활성화하는 동안 후자(10.20.30.40)를 유지하고 싶습니다 eth0. 을 사용하여 일시적으로 제거할 수 있지만 resolvconf -d eth0.dhclient재부팅 후에 설정이 다시 나타납니다.

설명된 대로 정적 설정을 사용하여 모든 DHCP DNS 설정을 무시할 수 있다는 것을 알고 있습니다.여기eth1하지만 인터페이스의 DHCP 설정을 유지하고 비활성화 하고 싶습니다 eth0.

/etc/resolvconf/interface-order수정 하고 변경해 보았 eth*으나 eth1소용이 없었습니다.

/etc/dhcp/dhclient-enter-hooks.d/resolvconf스크립트를 수정하지 않고는 방법이 없나요 ?

답변1

이는 Vagrant가 기본적으로 DHCP를 통해 eth0 인터페이스에 대한 IP 주소를 제공하기 때문입니다. 따라서 일부 패치를 사용하여 이를 수행하려면 여기에 답이 있습니다. /etc/network/interfaces 파일을 편집하기만 하면 됩니다.

nano /etc/network/interfaces

post-up resolvconf -d eth0.dhclient뒤에 줄을 추가 하십시오iface eth1 inet dhcp

그러면 당신은 /etc/network/interfaces다음과 같이 보일 것입니다

`

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

# The loopback network interface
auto lo
iface lo inet loopback

# Source interfaces
# Please check /etc/network/interfaces.d before changing this file
# as interfaces may have been defined in /etc/network/interfaces.d
# NOTE: the primary ethernet device is defined in
# /etc/network/interfaces.d/eth0
# See LP: #1262951
source /etc/network/interfaces.d/*.cfg

#VAGRANT-BEGIN
# The contents below are automatically generated by Vagrant. Do not modify.
auto eth1
iface eth1 inet dhcp
    post-up resolvconf -d eth0.dhclient
#VAGRANT-END` 

답변2

몇 가지 옵션이 있습니다: resolv.conf 쓰기 보호, dhclient 코드 변경, 네임서버 자동 업데이트 비활성화, eth0에 대한 DNS 비활성화.

옵션 1:/etc/resolv.conf 파일 쓰기 방지:

$ chattr +i /etc/resolv.conf

+i 옵션(속성)은 루트 사용자를 포함하여 누구도 파일을 수정할 수 없도록 Linux에서 /etc/resolv.conf 파일을 쓰기 방지합니다.

옵션 2:dhclient 스크립트 후크

dhclient 폴더에서 "resolvconf" 파일을 엽니다:

$ nano /etc/dhcp/dhclient-enter-hooks.d/resolvconf

코드를 다음과 같이 변경합니다.

make_resolv_conf(){
    :
}

위 스크립트는 make_resolv_conf()를 자체 함수로 대체합니다. 이 함수는 아무 작업도 수행하지 않습니다.

옵션 3:

ifcfg 파일을 엽니다.

$ nano /etc/sysconfig/network-scripts/ifcfg-eth0

PEERDNS 옵션을 No로 변경합니다.

PEERDNS=no

보너스:이렇게 하면 resolv.conf 파일을 덮어쓰거나 DNS 업데이트를 비활성화하지 않지만 라우팅 테이블을 덮어쓰게 됩니다. 일부 DNS 요청을 보내면 resolv.conf 파일의 내용에 관계없이 라우팅 테이블을 확인하고 요청을 특정 주소로 보냅니다.

$ ip route add 8.8.8.8/32 via 192.168.1.1

관련 정보