วิธีทำให้ที่อยู่เซิร์ฟเวอร์ชื่อเป็นแบบถาวรใน /etc/resolv.conf


14

/etc/resolv.confฉันไม่สามารถเก็บที่อยู่ชื่อเซิร์ฟเวอร์ฉันตั้งค่าผ่านทาง ทุกครั้งที่ฉันตั้งค่าตัวจัดการเครือข่ายจะแทนที่ด้วยเกตเวย์เริ่มต้นเมื่อรีบูต

วิธีการตั้งค่ามันถูกต้อง?

ฉันต้องการวิธีอื่นนอกเหนือจากการเปลี่ยนเนมเซิร์ฟเวอร์ในเราเตอร์


คุณต้องเปลี่ยนมันด้วยNetworkManager(เช่นที่ระบุไว้ในบรรทัดแรก) NetworkManagerไฟล์นี้เป็นอีกครั้งที่สร้างขึ้นในการบูตโดยทุก มันขึ้นอยู่กับคุณลินุกซ์ distro (ซึ่งคุณไม่ได้พูดถึง) NetworkManagerวิธีการเข้าถึงนี้
ริค

คำตอบ:


13

มันขึ้นอยู่กับ. โปรดอ่านให้จบ

หากคุณไม่ได้ติดตั้งแพคเกจ resolvconfมันเป็นเรื่องง่าย: หลังจากเปลี่ยนวิธีที่คุณต้องการออกคำสั่ง

 sudo chattr +i /etc/resolv.conf

คำสั่งจะเปลี่ยนคุณสมบัติของไฟล์ทำให้immutable(+ + ตัวเลือก)

อย่างไรก็ตามหากคุณติดตั้งแพคเกจ resolvconf ไว้ไฟล์ /etc/resolv.conf อาจถูกแปลงเป็นลิงก์สัญลักษณ์

 # file /etc/resolv.conf
 /etc/resolv.conf: symbolic link to `../run/resolvconf/resolv.conf'

ซึ่งเป็นไฟล์บนระบบไฟล์เสมือนสิ่งที่ดีเลิศของรุ่นที่ไม่ถาวร สิ่งที่ตลกคือคุณอาจไม่รู้ว่าคุณได้ติดตั้ง resolvconf ไว้แล้วเพราะระบบปฏิบัติการที่คล้าย Debian เวอร์ชันล่าสุดติดตั้งมาให้ล่วงหน้า คุณสามารถกำหนดได้ว่า distro ของคุณได้ติดตั้งไว้ให้คุณหรือไม่โดยใช้คำสั่ง:

 #whereis resolvconf
 resolvconf: /sbin/resolvconf /etc/resolvconf /lib/resolvconf /usr/share/man/man8/resolvconf.8.gz

ที่สำคัญที่สุดคือคุณสามารถระบุได้ว่าคุณ/etc/resolv.confถูกแปลงเป็นลิงก์โดยใช้คำสั่ง (ไฟล์ /etc/resolv.conf) ด้านบน ถ้าคำตอบคือASCII textใช้chattrมิฉะนั้น ...

หากคุณใช้ IP แบบคงที่สิ่งที่ง่ายที่สุดคือการเพิ่มบรรทัดต่อไปนี้ (หรือบางสิ่ง)

 dns-nameservers 8.8.4.4 8.8.8.8

ไปยัง stanza ที่กำหนดคุณสมบัติของอินเตอร์เฟสแบบสแตติกของคุณใน / etc / network / interfaces

หากคุณอยู่บนแล็ปท็อปที่เชื่อมต่อตลอดเวลากับเครือข่ายที่แตกต่างกันคุณอาจปฏิบัติตามLawrenceCคำแนะนำที่ยอดเยี่ยม แต่ถ้าคุณมีresolvconfในระบบของคุณที่ถูกต้อง (และง่าย) วิธีที่จะให้สำหรับการตั้งค่าคงที่ของ DNSs คือการใช้ไฟล์ใน/etc/resolvconf/resolv.conf.d โดยเฉพาะอย่างยิ่งไฟล์ต่อไปนี้จะถูกใช้ (ดูหน้าStephane Graber's ):

base : ใช้เมื่อไม่พบข้อมูลอื่น

ส่วนหัว : ใช้สำหรับส่วนหัวของ resolv.conf สามารถใช้เพื่อให้แน่ใจว่าเซิร์ฟเวอร์ DNS เป็นรายการแรกเสมอในรายการ

tail : รายการใด ๆ ในส่วนท้ายจะถูกต่อท้ายท้าย resolv.conf ผลลัพธ์

ดังนั้นให้คุณตั้งชื่อเซิร์ฟเวอร์ที่คุณชื่นชอบไว้ในหัวดังนี้

  nameserver 8.8.8.8

และคุณทำเสร็จแล้ว


2
@dhiller Ultrasawblade เปลี่ยนชื่อของเขาเป็นชื่อLawrenceCด้านล่าง
MariusMatutiae

โพสต์ที่ดีและน่าสนใจฉันต้องการให้คุณเพิ่มลิงค์เอกสารบางอย่างเกี่ยวกับหัวข้อนี้สำหรับผู้ใช้ที่ต้องการทราบข้อมูลเพิ่มเติมเกี่ยวกับหัวข้อ, ขอบคุณ
Philippe Gachoud

/etc/resolvconf/ไม่มีอยู่ตามค่าเริ่มต้นบน Ubuntu 18.04
Dan Dascalescu

9

เพิ่มบรรทัดที่คล้ายกันเพื่อ/etc/dhcp/dhclient.confใช้รูทเทอร์มินัล:

supersede domain-name-servers 74.122.198.48, 50.116.23.211;

นี่เป็นสาเหตุdhclientโปรแกรมที่ออกคำร้องขอ DHCP และทำการเปลี่ยนแปลงตามสิ่งที่การตอบสนองบอกเพื่อแทนที่ข้อมูลที่ได้รับจากเซิร์ฟเวอร์ DHCP ด้วยข้อมูลข้างต้นก่อนทำการเปลี่ยนแปลง

ด้านบนเป็นเซิร์ฟเวอร์ OpenNIC DNS สองตัว แทนที่ตามที่จำเป็นสำหรับเซิร์ฟเวอร์ที่คุณต้องการใช้

เนื่องจากสิ่งนี้เกิดขึ้นเมื่อใดก็ตามที่คุณได้รับข้อมูลการกำหนดค่าจาก DHCP ดังนั้นให้ใช้dhclient -v eth0หรืออินเทอร์เฟซอะไรก็ตามเพื่อรีเฟรชและดูการเปลี่ยนแปลง


1
แทนที่จะเป็นเพียงการเอาชนะ DNS (โดยทั่วไปคือเราเตอร์) เราสามารถเพิ่มบรรทัดprepend domain-name-servers 8.8.8.8ได้ สิ่งนี้จะใช้ DNS ของ ISP เมื่อพร้อมใช้งาน
Axel Latvala

3

ปรากฏตามที่ระบุไว้โดย @Rik ว่าสาเหตุของการเปลี่ยน DNS ในการรีบูตนั้นเกิดจากผู้จัดการเครือข่าย / ยูทิลิตี้ที่ตั้งค่าไว้ ใน Linux Mint ตามภาพหน้าจอฉันได้ตั้งค่าวิธี IPv4 เป็นที่อยู่ Automatic (DHCP) เท่านั้น จากนั้นคุณสามารถป้อนการตั้งค่าที่ถูกต้องใน /etc/resolv.conf หรือที่ส่วนเซิร์ฟเวอร์ DNS ฉันจำได้ใน Ubuntu 13.04 เซิร์ฟเวอร์ชื่อของฉันเปลี่ยนไปสองสามครั้งในช่วงระยะเวลานาน แต่หลังจากที่ฉันไปและแก้ไขพวกเขาใน GUI จริง ๆ แล้วทุกคนดูเหมือนจะมีเสถียรภาพจากที่นั่นไปข้างหน้า

ป้อนคำอธิบายรูปภาพที่นี่

ป้อนคำอธิบายรูปภาพที่นี่


3

มีปัญหาเดียวกัน แต่ฉันใช้ที่อยู่ IP แบบคงที่ การแก้ไขเป็นเพียงการเพิ่ม dns ใน / etc / network / interfaces

iface eth0 inet static
    address [your ip>
    netmask [your netmask]
    network [your network]
    broadcast [your broadcast]
    gateway [your gateway]
    # dns-* options are implemented by the resolvconf package, if installed
    dns-nameservers [dns server1] [dns server2]
    dns-search [your domain]

ใช่ว่าการแก้ไขเพราะ NetworkManager /etc/network/interfacesละเว้นอินเตอร์เฟซที่ระบุไว้ใน จับดี!
อิซซี่

1

หากคุณใช้ wicd ให้คลิกขวาที่ไอคอนและคลิกข้อมูลการเชื่อมต่อ เมื่อหน้าต่างเปิดขึ้นให้คลิกคุณสมบัติของหน้าต่างที่คุณเชื่อมต่ออยู่

ตรวจสอบการใช้ DNS แบบคงที่และในบรรทัดที่ระบุว่าเซิร์ฟเวอร์ DNS 1 พิมพ์ใน IP สำหรับ Google DNS 8.8.8.8และในบรรทัดสำหรับเซิร์ฟเวอร์ DNS 2 ประเภท8.8.4.4จากนั้นคลิก "ตกลง"

หากคุณได้รับข้อผิดพลาดจากค่าเริ่มต้นคุณสามารถติดต่อ ISP ของคุณและแจ้งให้พวกเขาทราบ พวกเขามักจะกำหนดเซิร์ฟเวอร์ DNS ให้กับโมเด็มของคุณเมื่อคุณเชื่อมต่อกับพวกเขา


0

การแฮ็กในแบบที่คุณคุ้นเคยchattr +iหรือใกล้เคียงนั้นเป็นวิธีการทำงานที่รวดเร็วและควรหลีกเลี่ยงเมื่อเป็นไปได้ (อย่างน้อยก็ในระยะยาว - อย่างที่กล่าวมามันเป็นงานระยะสั้นจนกว่าจะหาเวลาแก้ปัญหาจริง) . ตามที่ระบุไว้แล้วนี่เป็นงานสำหรับ NetworkManager ซึ่งเสนอ CLI ที่เราสามารถใช้สำหรับ:

# ค้นหาอินเทอร์เฟซที่จะปรับ
อุปกรณ์ nmcli
# เอาต์พุตดูเหมือนว่า:
# การเชื่อมต่ออุปกรณ์ประเภทสถานะ
# enp0s3 ethernet เชื่อมต่อสำนักงานของฉัน
# lo loopback ไม่มีการจัดการ -
# จากนั้นเราต้องการการเชื่อมต่อ

# ตอนนี้เพิ่ม "โดเมนการค้นหา" ของเรา:
การเชื่อมต่อ nmcli แก้ไข my-office ipv4.dns-search example1.com
nmcli แก้ไข mod my-office + ipv4.dns-search example2.com

# และเซิร์ฟเวอร์ชื่อของเรา:
nmcli แก้ไข my-office ipv4.dns 213.73.91.35
nmcli มีการแก้ไข my-office + ipv4.dns 87.118.100.175
# note "+" ในบรรทัดที่สอง: เพิ่มอันใหม่
# ในขณะที่บรรทัดแรกเขียนทับรายการที่มีอยู่
# เราสามารถทำได้ด้วยการโทรเพียงครั้งเดียว:
nmcli แก้ไข my-office ipv4.dns "213.73.91.35 87.118.100.175"

# ตกลงดังนั้นตอนนี้เราจะบอกให้ละเว้นการอัปเดตจากเซิร์ฟเวอร์ DHCP:
nmcli แก้ไข my-office ipv4.ignore-auto-dns ใช่

# และใช้การปรับเปลี่ยนกับการกำหนดค่าการทำงานของเรา
nmcli ร่วมสำนักงานของฉัน

หากคุณใช้ที่อยู่ IP แบบคงที่คุณยังสามารถใช้วิธีการแก้ปัญหาจากคำตอบ kanelbolle's


0

ที่น่าตื่นตาตื่นใจวิธีกำจัดปัญหาเล็ก ๆ น้อย ๆ นี้จะได้รับเมื่อการแก้ปัญหาที่ได้รับสำหรับการทำงานไม่ได้อยู่บน Ubunutu 18.04

สิ่งที่ใช้ได้ผลสำหรับฉันคือการเขียนทับnameserverค่าใน/etc/resolv.confทุก ๆ การบู๊ต sudoแก้ไข/etc/rc.localและเพิ่มบรรทัดนี้:

 sed -i "s/nameserver 127.0.0.53/nameserver 8.8.8.8/" /etc/resolv.confsudo /etc/rc.local
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.