Jak mogę dodać dodatkowe domeny wyszukiwania do resolv.conf utworzonego przez dhclient w CentOS

35

Podczas uruchamiania mojej maszyny wirtualnej CentOS używa DHCP, aby uzyskać adres IP. Zastępuje również resolv.conf ustawieniami DNS podanymi przez serwer DHCP. Serwer DHCP nie udostępnia żadnych domen wyszukiwania, dlatego chciałbym, aby dhclient umieścił listę domen wyszukiwania podczas ich zapisywania. Jak mogę skonfigurować dhclient, aby to zrobić?

Martin Hilton
źródło

Odpowiedzi:

32

Żaden z nich nie działał, ale ostatni był najbliższy. W przypadku Red Hat 6 użyj opcji DOMAINzamiast SEARCHjak w powyższym przykładzie, a lokalizacja pliku jest inna.

Zmodyfikowałem plik /etc/sysconfig/network-scripts/ifcfg-eth0

i zmienił się

DOMAIN=domain.com

do

DOMAIN="domain.com sub.domain.com"

i wszystko działało.

Dean Hiller
źródło
3
Powinieneś być w stanie korzystać z obu DOMAINi SEARCH github.com/mcr/isc-dhcp/blob/master/common/resolv.c#L68
Radek Simko
Ta technika ustawiania DOMAIN również działała dla mnie na CentOS 6.5, mimo że mój resol.conf jest generowany przez NetworkManager, a nie dhclient. Wygenerowany plik resol.conf połączył moje wpisy z wpisami z serwera DHCP.
PolyTekPatrick
11

Możesz także dodać ciąg do /etc/dhcp3/dhclient.conf w ten sposób

prepend domain-search "domain1.com", "domain2.com";

Zauważ, że ta metoda działa również z Debian Lenny i Squeeze.

Wiaczesław Gusiew
źródło
7

W końcu udało mi się to wypracować. Do linii dodałem następujący wiersz/etc/dhclient-eth0.conf

append domain-name "example.com";
Martin Hilton
źródło
4

Jest to głównie uwaga dla RHEL7 w celu ograniczenia prób i błędów. Odpowiedź Dziekana na wykorzystanie DOMAIN="domain1.exmaple.com domain2.example.com"w /etc/sysconfig/network-scripts/ifcfg-device.confpracach. Ciekawą uwagą jest to, że domena hosta, którą połączenie otrzymuje z DHCP, jest zawsze dodawana do ścieżki wyszukiwania, nawet jeśli zostawisz ją poza DOMAIN=lub umieścisz później na liście DOMAIN=. Wygląda na to, że /sbin/dhclient-scriptma z tym trochę logiki.

Podczas moich testów odkryłem, że sugestia Philipa dotycząca używania /etc/dhcp/dhclient-device.confrównież działa, chociaż jest z tym jakieś dziwne zachowanie, najprawdopodobniej z powodu tej samej logiki, /sbin/dhclient-scriptktóra próbuje poruszać. Na przykład, ani nie zastępuj ani nie przygotowuj pracy zgodnie z oczekiwaniami, domena hosta będzie pierwsza. Na marginesie tej metody /var/lib/NetworkManager/dhclient-device.confjest wygenerowany plik NetworkManager i jest on używany przez klienta. Jeśli masz plik, /etc/dhcp/który zostanie wczytany, zobaczysz go wklejony na górze pliku i kilka dodatkowych opcji dodanych poniżej.

Matt Pie
źródło
AWS Linux (RHEL), DOMAIN="your.domain"nie działał dla mnie, zresetuj po ponownym uruchomieniu
radtek
2

Powyższa /etc/dhclient-eth0.confodpowiedź nie działała dla mnie. Nie mam /etc/dhcp3katalogu, więc nie sądziłem, że to też zadziała.

Po sprawdzeniu /sbin/dhclient-scriptpliku (który tworzy się /etc/resolv.confw moim systemie Centos 5.6), dodałem poniżej linię SZUKAJ/etc/sysconfig/networking/devices/ifcfg-eth0:

DEVICE=eth0 
BOOTPROTO=dhcp
HWADDR=08:00:24:61:17:AC 
ONBOOT=yes
TYPE=Ethernet
SEARCH="example.com sub1.example.com sub2.example.com"

Następnie:

# ifdown eth0
# ifup eth0
#  cat /etc/resolv.conf
; generated by /sbin/dhclient-script
search example.com sub1.example.com sub2.example.com
nameserver 10.1.0.11
BabarOnWheels
źródło
2

Dla każdego, kto przegląda dość nieprzejrzysty stos skryptów Fedory / Red Hat, odpowiedzią, przynajmniej na najnowszym AMI Amazona, jest /etc/dhclient-eth0.conf (a nie wabiący pusty folder w / etc / dhcp /). Plik nie jest obecny i trzeba go utworzyć

Dr David C. Crooke
źródło
2
Dodanie SZUKAJ do ifcfg-eth0 / etc / sysconfig / network-scripts / ifcfg-eth0 działa również w wersji Amazon Fedory. W starszych wersjach Red Hat najwyraźniej była to DOMAIN. Chciałbym polecić to powyżej.
Dr David C Crooke,
2

W CentOS 6 używam następującego pliku, aby dodać preferowaną domenę wyszukiwania DNS:

# cat /etc/dhcp/dhclient-eth0.conf 
interface "eth0" {
    supersede domain-search "dns1.example.com";
}
# getenforce 
Enforcing
# ls -lZ /etc/dhcp/dhclient-eth0.conf 
-rw-r--r--. root root system_u:object_r:bin_t:s0   /etc/dhcp/dhclient-eth0.conf
#

Ten plik jest pierwszym sprawdzonym w /etc/sysconfig/network-scripts/ifup-eth:

if [ -s /etc/dhcp/dhclient-${DEVICE}.conf ]; then
   DHCLIENTCONF="-cf /etc/dhcp/dhclient-${DEVICE}.conf";

Zobacz też: redhat - Konfigurowanie DHCP na RHEL 6 - Błąd serwera

Philip Durbin
źródło
Jedna uwaga do dodania - jeśli określasz wiele domen wyszukiwania dla dhclient za pomocą (option|supersede|*) domain-search ..., upewnij się, że postępujesz zgodnie ze dhcp-options(5)specyfikacją strony podręcznika dla cytowania poszczególnych domen: option domain-search "example.com", "sales.example.com", "eng.example.com";Wiele starszych dystrybucji dhclient zezwala na ten format, "example.com sales.example.com eng.example.com";ale ta kompatybilność została usunięta w ciągu ostatnich kilku lat z powodu naprawionych błędów bugs.launchpad.net/ubuntu/+source/isc-dhcp/+bug/777785
Patrick
1

W Fedorze 19 dodaj kolejne wiersze /etc/dhcp/dhclient.conf

# /etc/dhcp/dhclient.conf

interface "p2p1"
{
    supersede domain-name-servers 8.8.8.8, 8.8.4.4;
    append domain-name " mydomain.net example.com";
}

Działa dobrze z NetworkManager. Szczegóły patrz:# man dhclient.conf

Ruslan K
źródło
nie działa dla aws linux (rhel)
radtek
0

Dodaj do conf serwera dchp (isc dhcpd):

option domain-name "domain1.com domain2.net domain3.org";

Gdzie domena1.com itp. To sufiksy domeny, które chcesz dodać do pliku resolv.conf na każdym kliencie.

LinuxUser
źródło
0

Ponieważ nie widzę tej odpowiedzi i zadziałała dla mnie (podczas gdy inni jej nie widzieli), oto ona: edytuj w /etc/resolvconf/resolv.conf.d/basetaki sam sposób, jak ty /etc/resolv.conf. Będziesz musiał resolvconfzainstalować.

appas
źródło