วิธีการแทนที่เนมเซิร์ฟเวอร์ DHCP ที่จัดมาให้?


13

ฉัน (คิด) ว่าฉันได้กำหนดค่าที่อยู่ IP แบบคงที่ใน/etc/network/interfaces:

# The primary network interface 
auto eth0 
iface eth0 inet static
    address 10.1.1.2
    netmask 255.255.255.0
    network 10.1.1.0
    broadcast 10.1.1.255
    gateway 10.1.1.1

และฉันเปลี่ยนไฟล์/etc/resolv.confเพื่อรวมเนมเซิร์ฟเวอร์ที่ต้องการ

จากนั้นฉันรีสตาร์ทเครือข่าย sudo /etc/init.d/networking restart

แต่หลังจากผ่านไปหลายชั่วโมง resolv.conf จะเปลี่ยนกลับไปเป็นเนมเซิร์ฟเวอร์ DHCP


ฉันควรจะบอกว่านี่คือเซิร์ฟเวอร์ Ubuntu ที่มีเฉพาะl0และeth0ส่วนต่อประสาน


เป็นresolvconfแพคเกจติดตั้ง?
— Gilles 'หยุดชั่วร้าย'

คุณกำลังพยายามใช้ dhclient บนอินเทอร์เฟซเครือข่ายอื่น (อาจจะเป็น wifi หรือ dial up interface) หรือ dhclient ทำงานไม่ถูกต้องบน eth0 แม้ว่ามันควรจะเป็นแบบคงที่หรือไม่?
— poolie

มีเฉพาะ eth0 และ lo0, IP ที่ฉันตั้งด้วยตนเองจะเหมือนกับ DHCP IP ที่ฉันจะได้รับ (เซิร์ฟเวอร์ DHCP จะให้บริการ IP แบบคงที่เสมอ) แต่ฉันไม่ต้องการใช้เนมเซิร์ฟเวอร์ที่กำหนดโดยเซิร์ฟเวอร์ DHCP ดังนั้นฉันคิดว่าฉันจะตั้งค่า IP ด้วยตัวเองและจะไม่มี DHCP ใด ๆ แต่ฉันไม่เข้าใจว่าทำไม resolv.conf จึงได้รับการอัปเดต
— David Parks

Gilles - ไม่ฉันวิ่ง: dpkg -L resolvconf และรับ: ไม่ได้ติดตั้งแพ็คเกจ `resolvconf '
— David Parks

คำตอบ:


35

หากคุณต้องการแทนที่หรือผนวกเข้ากับเซิร์ฟเวอร์ชื่อที่เซิร์ฟเวอร์ DHCP แนะนำให้คุณสามารถกำหนดค่านี้ใน/etc/dhcp/dhclient.confเช่น:

interface "eth0" {
    prepend domain-name-servers 10.0.0.2;
}

คุณสามารถทำได้จากการควบคุม "แก้ไขการเชื่อมต่อ" ในตัวบ่งชี้เครือข่ายใน Unity หรือ GNOME


4
นี่เป็นทางออกที่ดีที่สุดฉันโพสต์ตัวเลือกอื่น แต่ตระหนักว่าการตั้งค่า IP แบบคงที่ไม่ใช่ความคิดที่ดีในสภาพแวดล้อม AWS EC2 :)
— David Parks

ถ้าคุณต้องการเพิ่มเซิร์ฟเวอร์ชื่อโดเมนหลายรายการ
— dangonfast

การเตรียมเนมเซิร์ฟเวอร์ชื่อโดเมน127.0.0.1ดูเหมือนว่าจะทิ้งเนมเซิร์ฟเวอร์ที่ให้บริการโดย dhcp (กรณีนี้จะไม่เกิดขึ้นกับการเพิ่มเซิร์ฟเวอร์ชื่ออื่น)
— dangonfast

2
แทนที่prependด้วยsupersedeเพื่อเขียนทับค่า DHCP อย่างสมบูรณ์
— Sqerstet

ขอบคุณ ฉันสามารถพูดเพื่อเพิ่มเซิร์ฟเวอร์ DNS สำหรับอินเทอร์เฟซทั้งหมด (อาจมีข้อยกเว้น) ได้หรือไม่ หรือรายการอินเตอร์เฟส?
— ctrl-alt-delor

1

ความละเอียดที่จะแก้ไขปัญหาของคุณคือการกำหนดค่าresolvconfแพคเกจของคุณ สิ่งนี้จะให้ความสำคัญกับเนมเซิร์ฟเวอร์ที่คุณต้องการเช่นเดียวกับการตั้งค่าอื่น ๆ ที่ต้องการการตั้งค่า resolv.conf เช่นการค้นหาและการตั้งค่าโดเมน

แก้ไขไฟล์: /etc/resolvconf/resolv.conf.d/head

วางเนมเซิร์ฟเวอร์ที่คุณต้องการและการกำหนดค่าอื่น ๆ ที่คุณต้องการใช้เมื่อมีการเปลี่ยนแปลงเครือข่าย เมื่อมีการเปลี่ยนแปลงเครือข่ายเกิดขึ้นการกำหนดค่าจะมีความสำคัญกว่าเสมอ

ตัวอย่างของ/etc/resolvconf/resolv.conf.d/headไฟล์:

# 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 8.8.8.8
search mydomain.com

ดูคำตอบของคำถามที่คล้ายกัน:
แทนที่ dns nameserver

หมายเหตุ:
ต้องแน่ใจว่ามี linefeed หลังจากรายการสุดท้าย ผู้แก้ไขส่วนใหญ่จะจัดเตรียม linefeed ให้โดยอัตโนมัติเมื่อบันทึกไฟล์


-2

ฉันพบการอ้างอิงเพื่อลบไคลเอ็นต์ dhcp ฉันคิดว่านั่นเป็นผู้ร้ายหลัก ฉันทำสิ่งนี้แล้วและยังไม่เห็นปัญหา จะรอ 'จนถึงเช้าเพื่อยืนยัน แต่ปรากฏว่าไคลเอ็นต์ dhcp ยังคงทำงานอยู่และจะต้องหยุดและถอนการติดตั้ง

apt-get remove isc-dhcp-client dhcp3-client dhcpcd

ฉันสับสนเล็กน้อยหากวิธีแก้ปัญหาเป็นคำสั่ง prepend หรือหากเป็นการลบไคลเอ็นต์ DHCP ออก
— Eugene van der Merwe

@EugenevanderMerwe มันเป็นคำสั่งที่เพิ่มเข้ามา ผู้โพสต์กล่าวว่า "นี่เป็นทางออกที่ดีที่สุดฉันโพสต์อีกตัวเลือกหนึ่ง แต่ตระหนักว่าการตั้งค่า IP แบบคงที่ไม่ใช่ความคิดที่ดีในสภาพแวดล้อม AWS EC2 :)"
— Grammargeek

-3

ตามกฎทั่วไปคุณควรถอนการติดตั้งบริการเครือข่ายทั้งหมดที่ใช้apt-get --purge remove <package-name>อยู่เสมอ ด้วยวิธีนี้ไฟล์การกำหนดค่าทั้งหมดจะถูกลบเช่นกัน

ในกรณีนี้คำสั่งจะเป็น:

apt-get --purge remove isc-dhcp-client isc-dhcp-common

isc-dhcp-clientคำสั่งนี้จะเป็นการลบ


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