ฉันจะเพิ่มโดเมนการค้นหาเพิ่มเติมลงใน resolv.conf ที่สร้างโดย dhclient ใน CentOS ได้อย่างไร


35

เมื่อเครื่องเสมือน CentOS ของฉันบูทก็ใช้ DHCP เพื่อรับที่อยู่ IP นอกจากนี้ยังเขียนทับ resolv.conf ด้วยการตั้งค่า DNS ที่เซิร์ฟเวอร์ DHCP จัดหาให้ เซิร์ฟเวอร์ DHCP ไม่ได้จัดหาโดเมนการค้นหาใด ๆ ดังนั้นฉันต้องการให้ dhclient ใส่ในรายการโดเมนการค้นหาเมื่อมันเขียน ฉันจะกำหนดค่า dhclient ให้ทำเช่นนี้ได้อย่างไร

คำตอบ:


32

ไม่มีของที่ทำงาน แต่สุดท้ายคือใกล้ที่สุด สำหรับ Red Hat 6 ให้ใช้DOMAINแทนSEARCHเช่นในตัวอย่างด้านบนและตำแหน่งไฟล์แตกต่างกัน

ฉันแก้ไขไฟล์ /etc/sysconfig/network-scripts/ifcfg-eth0

และเปลี่ยนไป

DOMAIN=domain.com

ไปยัง

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

และมันก็ใช้ได้ผล


3
คุณควรจะสามารถใช้ทั้งสองDOMAINและSEARCH github.com/mcr/isc-dhcp/blob/master/common/resolv.c#L68
Radek Simko

เทคนิคการตั้งค่า DOMAIN ก็ใช้งานได้สำหรับฉันบน CentOS 6.5 แม้ว่าการแก้ไขของฉันจะถูกสร้างโดย NetworkManager แทนที่จะเป็น dhclient ไฟล์ resol.conf ที่สร้างขึ้นรวมรายการของฉันกับรายการจากเซิร์ฟเวอร์ DHCP
PolyTekPatrick

11

นอกจากนี้คุณสามารถเพิ่มสตริงลงใน /etc/dhcp3/dhclient.conf เช่นนี้

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

โปรดทราบว่าวิธีนี้ใช้ได้กับ Debian Lenny และ Squeeze ด้วย



4

นี่คือบันทึกย่อส่วนใหญ่สำหรับ RHEL7 เพื่อลดการลองผิดลองถูก คำตอบของดีนDOMAIN="domain1.exmaple.com domain2.example.com"ในการใช้/etc/sysconfig/network-scripts/ifcfg-device.confงาน บันทึกที่น่าสนใจคือโดเมนของโฮสต์ที่เชื่อมต่อได้รับจากการที่ DHCP ถูกใช้ได้เสมอเพื่อให้เส้นทางการค้นหาแม้ว่าคุณจะปล่อยให้มันออกมาจากหรือวางไว้ต่อไปในรายการสำหรับDOMAIN= DOMAIN=ดูเหมือนว่า/sbin/dhclient-scriptมีตรรกะมากมายที่เกี่ยวข้องกับสิ่งนี้

ในการทดสอบของฉันฉันพบว่าข้อเสนอแนะของฟิลิป/etc/dhcp/dhclient-device.confยังใช้งานได้แม้ว่าจะมีพฤติกรรมแปลก ๆ บางอย่างซึ่งน่าจะเป็นเพราะตรรกะเดียวกันในการ/sbin/dhclient-scriptพยายามเคลื่อนไหวสิ่งต่าง ๆ ตัวอย่างเช่นไม่ใช่ supercede หรือ prepend งานตามที่คาดไว้โดเมนของโฮสต์จะเป็นอันดับแรก เป็นหมายเหตุด้านข้างของวิธีนี้/var/lib/NetworkManager/dhclient-device.confเป็นไฟล์ NetworkManager ที่สร้างขึ้นและถูกใช้โดยไคลเอนต์ หากคุณมีไฟล์/etc/dhcp/ที่อ่านแล้วคุณจะเห็นไฟล์ถูกวางที่ด้านบนของไฟล์และมีตัวเลือกเพิ่มเติมที่ด้านล่าง


AWS Linux (RHEL) DOMAIN="your.domain"ไม่ทำงานสำหรับฉันรีเซ็ตหลังจากรีบูต
radtek

2

/etc/dhclient-eth0.confคำตอบข้างต้นไม่สามารถทำงานสำหรับฉัน ฉันไม่มี/etc/dhcp3ไดเรกทอรีดังนั้นฉันจึงไม่คิดว่ามันน่าจะใช้ได้เช่นกัน

หลังจากตรวจสอบ/sbin/dhclient-scriptไฟล์ (ซึ่งสร้าง/etc/resolv.confในระบบ Centos 5.6 ของฉัน) ฉันเพิ่มบรรทัดค้นหาด้านล่างลงไป/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"

แล้ว:

# 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

2

สำหรับทุกคนที่ต้องผ่านกองสคริปต์ที่ค่อนข้างทึบของ Fedora / Red Hat คำตอบอย่างน้อยที่สุดก็คือ AMI ล่าสุดของ Amazon คือ /etc/dhclient-eth0.conf (ไม่ใช่โฟลเดอร์ decoy ที่ / etc / dhcp /) ไฟล์นี้ไม่ปรากฏและจะต้องมีการสร้าง


2
การเพิ่ม SEARCH ให้กับ ifcfg-eth0 / etc / sysconfig / network-script / ifcfg-eth0 ยังทำงานบน Fedora เวอร์ชัน Amazon ใน Red Hat เวอร์ชันเก่าดูเหมือนว่าเป็น DOMAIN ฉันจะแนะนำสิ่งนี้ให้มากกว่านี้
ดร. David C Crooke

2

บน CentOS 6 ฉันใช้ไฟล์ต่อไปนี้เพื่อเพิ่มโดเมนการค้นหา 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
#

ไฟล์นี้เป็นไฟล์แรกที่มีการตรวจสอบใน/etc/sysconfig/network-scripts/ifup-eth:

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

ดูเพิ่มเติม: redhat - การกำหนดค่า DHCP บน RHEL 6 - ข้อผิดพลาดเซิร์ฟเวอร์


หมายเหตุหนึ่งที่จะเพิ่ม - หากคุณระบุโดเมนการค้นหาหลายโดเมนเป็น dhclient โดยใช้(option|supersede|*) domain-search ...ให้แน่ใจว่าคุณทำตามdhcp-options(5)man page spec สำหรับการอ้างถึงแต่ละโดเมน: option domain-search "example.com", "sales.example.com", "eng.example.com";การแจกจ่ายที่เก่ากว่าของ dhclient อนุญาตรูปแบบ"example.com sales.example.com eng.example.com";แต่ความเข้ากันได้นี้ถูกลบออกในช่วงไม่กี่ปีที่ผ่านมา เนื่องจากการแก้ไขข้อบกพร่องbug.launchpad.net/ubuntu/+source/isc-dhcp/+bug/777785
Patrick

1

ใน Fedora 19 ให้เพิ่มบรรทัดถัดไป /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";
}

ทำงานได้ดีกับ NetworkManager รายละเอียดดู:# man dhclient.conf


ไม่ทำงานสำหรับ aws linux (
rhel

0

เพิ่มไปยังเซิร์ฟเวอร์ dchp conf (isc dhcpd):

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

โดยที่ domain1.com ฯลฯ เป็นส่วนต่อท้ายของโดเมนที่คุณต้องการเพิ่มลงในไฟล์ resolv.conf ในแต่ละไคลเอ็นต์


0

ตั้งแต่ผมไม่เห็นคำตอบนี้และมันทำงานให้ฉัน (ในขณะที่คนอื่น ๆ ไม่ได้), นี่มันคือการแก้ไขในลักษณะเดียวกันตามที่คุณต้องการ/etc/resolvconf/resolv.conf.d/base /etc/resolv.confคุณจะต้องresolvconfติดตั้ง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.