วิธีที่เหมาะสมในการเปลี่ยน DNS IP คืออะไร


56

ฉันสงสัยว่าเซิร์ฟเวอร์ชื่อที่โมเด็ม ADSL / เราเตอร์จัดหานั้นเป็นรถบั๊กกี้ เมื่อใดก็ตามที่ฉันเรียกดูเว็บไซต์เป็นครั้งแรกใน ubuntu การแก้ไขชื่อโดเมนจะใช้เวลาอย่างน้อย 15 วินาที

เพื่อแก้ไขปัญหานั้นฉันเปลี่ยนการกำหนดค่าเนมเซิร์ฟเวอร์/etc/resolv.confจาก 192.168.1.1 (โมเด็ม ADSL ของฉัน) เป็น 8.8.8.8 (DNS หลักของ google) ดูเหมือนว่าจะแก้ไขปัญหาได้ แต่น่าเสียดายที่การเปลี่ยนแปลงของฉัน/etc/resolv.confถูกเขียนทับโดย "NetworkManager" ทุกครั้งที่เริ่มต้น

เป็นวิธีที่เหมาะสมในการกำหนดค่า IP เซิร์ฟเวอร์ชื่อใน Ubuntu 10.4 คืออะไร?

คำตอบ:


51

หากคุณมีการตั้งค่าการเชื่อมต่อทั่วไปกับตัวจัดการเครือข่ายและ DHCP ให้ลองทำดังนี้:

  1. คลิกขวาที่ไอคอนผู้จัดการเครือข่ายในแผงควบคุมและเลือก "แก้ไขการเชื่อมต่อ ... "
  2. เลือกการเชื่อมต่อของคุณจากแท็บต่อสายหรือไร้สายเลือก "แก้ไข"
  3. (ป้อนรหัสผ่านของคุณหากการเชื่อมต่อถูกตั้งค่าเป็น "ระบบทั่วทั้งระบบ")
  4. เลือกแท็บการตั้งค่า IPv4
  5. เปลี่ยนวิธีการเป็น "ที่อยู่อัตโนมัติ (DHCP) เท่านั้น"
  6. ป้อนเซิร์ฟเวอร์ชื่อที่คุณต้องการในกล่อง "เซิร์ฟเวอร์ DNS เพิ่มเติม" และกด "ใช้"

นั่นควรทำเคล็ดลับ


1
สิ่งนี้ยังคงทำงานใน Ubuntu 12.04 และใหม่กว่าแม้ว่า NetworkManager จะใช้ resolvconf เพื่อจัดการ resolv.conf
jdthood

4
หากคุณสงสัยว่าการกำหนดค่านั้นสิ้นสุดที่ใดลองดูที่/etc/NetworkManager/system-connections/(คุณจะต้องมีสิทธิ์ระดับผู้ดูแลระบบในการเข้าถึงไฟล์การกำหนดค่าเหล่านั้น)
Lekensteyn

2
สิ่งนี้จะเปลี่ยน dns สำหรับการเชื่อมต่อปัจจุบันเท่านั้น แต่ยังมีวิธีสำหรับ การเปลี่ยน DNS ทั่วโลกด้วยหรือไม่
rubo77

รายการว่างเปล่าสำหรับฉัน โดยค่าเริ่มต้นมันใช้อะไร
เจ. เทย์เลอร์

1
ทำงานเหมือนกันทุกnmtuiประการบนหน้าจอเทอร์มินัลbtw!
Granitosaurus

30

คุณสามารถเปลี่ยนพวกเขาเช่นนี้

ก่อนอื่นให้คลิกไอคอนผู้จัดการเครือข่ายในแถบเมนูของคุณแล้วคลิกที่Edit Connections...รายการ

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

ตอนนี้สลับไปที่แท็บ "สาย" หรือ "ไร้สาย" ขึ้นอยู่กับสิ่งที่คุณใช้ - ฉันใช้ WiFi ดังนั้นฉันจะใช้มัน

เลือกชื่อเครือข่ายของคุณแล้วคลิก Edit...

สลับไปที่แท็บ IPv4 จากนั้นเปลี่ยนจากที่อยู่ DHCP อัตโนมัติเป็นที่อยู่อัตโนมัติ (DHCP) เท่านั้น

ป้อนที่อยู่ IP เซิร์ฟเวอร์ DNS ของคุณ

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

คลิกบันทึกแล้วเสร็จ!


ในขณะที่คุณสามารถเปลี่ยนเซิร์ฟเวอร์ DNS ในการตั้งค่าเครือข่ายบนพีซีเครื่องใดก็ได้วิธีที่ดีที่สุดคือเปลี่ยนในเราเตอร์จริงที่เชื่อมต่อกับอินเทอร์เน็ตเพื่อให้อุปกรณ์ที่เชื่อมต่อทั้งหมดได้รับประโยชน์จากมัน
Mark Rooney

3
ถ้าเขาไม่มีเราเตอร์ล่ะ? หรือเขาแค่ต้องการเปลี่ยน DNS สำหรับคอมพิวเตอร์ / ผู้ใช้นี้ เกิดอะไรขึ้นถ้ามันแค่ครั้งเดียว? บางทีเขาอาจไม่มีการเข้าถึงเราเตอร์และต้องการใช้เซิร์ฟเวอร์ DNS อื่น ... ฉันสามารถเพิ่มเหตุผลในรายการนี้ได้ตลอดทั้งคืน คำแนะนำที่ดีและคำตอบ @jrg
Bruno Pereira

6
มันเป็นวิธีการกราฟิกที่ดีสำหรับการตั้งค่า DNS บนเครื่องเดียวกับผู้จัดการเครือข่าย ฉันจะชี้ให้เห็นว่าคุณสามารถตั้งค่าได้มากกว่าหนึ่งรายการคั่นด้วยเครื่องหมายจุลภาค 8.8.8.8,8.8.4.4. การตั้งค่า DNS สำหรับ LAN ก็มีประโยชน์เช่นกันถ้า LAN มีขนาดใหญ่พอที่ฉันใช้เราเตอร์หรือ dnsmask เป็นการส่วนตัว บน LAN มันมักจะง่ายกว่าที่จะรักษาบัญชีดำหรือพร็อกซีในสถานที่เดียว (เราเตอร์ / dnsmask / squid) แทนที่จะเป็นลูกค้าแต่ละคนหรือผู้ใช้แต่ละคนในไคลเอนต์ แต่นั่นก็เป็นคำถามที่ถาม
Panther

29

วิธีที่ดีที่สุดในการตั้งค่าเนมเซิร์ฟเวอร์ผ่าน CLI โดยไม่มี NetworkManger พร้อมที่อยู่คงที่หรือเป็นอิสระจากการเชื่อมต่อคือ:

ติดตั้งแพคเกจresolvconf

วิ่ง

sudo nano /etc/resolvconf/resolv.conf.d/head

(เพิกเฉยต่อคำเตือนที่น่ากลัว /etc/resolv.conf ถูกสร้างขึ้นโดยอัตโนมัติดังนั้นคำเตือนจะอยู่ที่นั่นดังนั้นจึงจะใส่ /etc/resolv.conf เมื่อสร้าง /etc/resolv.conf ขึ้นที่ท้ายไฟล์ เพิ่ม

 nameserver <ip_of_nameserver>

กดCtrl xและตอบตกลงเพื่อบันทึกไฟล์ หากต้องการทำให้เสร็จให้สร้าง /etc/resolv.conf ใหม่เพื่อให้การเปลี่ยนแปลงมีผลทันที:

 sudo resolvconf -u

1
ด้วยเหตุผลบางอย่างเมื่อประมาณหนึ่งเดือนที่แล้ว Xubuntu build ทุกคืนของฉันหยุดการแก้ไขชื่อโฮสต์ LAN เซิร์ฟเวอร์ DHCP ของฉันควรจะออกตัวเอง (192.168.68.1) เป็นเซิร์ฟเวอร์ DNS ฉันยังฮาร์ดโค้ดไว้ในตัวจัดการเครือข่ายและทุกที่ (ดังที่ได้กล่าวไว้ข้างต้นคำตอบนี้) ด้วยวิธีที่ Xubuntu / NetworkMan / อะไรก็ตามที่ใช้ 127.0.xx IP วันนี้มันยากที่จะวินิจฉัยปัญหา ฉันสามารถแก้ไข IP ภายนอกได้ดังนั้นจึงได้รับ SOMETHING สำหรับ DNS อย่างไรก็ตามนี่เป็นคำตอบเดียวที่แก้ไขปัญหาของฉัน ขอบคุณ
Adam Plocher

18

อีกวิธีในการทำเช่นนี้คือการแก้ไข/etc/dhcp3/dhclient.confคุณสามารถทำได้โดยพิมพ์สิ่งนี้ลงในกล่องโต้ตอบเรียกใช้ (ปรากฏขึ้นโดยกดAlt+ F2)

gksudo gedit /etc/dhcp3/dhclient.conf

จากนั้นหาบรรทัดต่อไปนี้

#prepend domain-name-servers 127.0.0.1;

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

prepend domain-name-servers 8.8.8.8;

สิ่งนี้จะทำให้ dhclient (ไคลเอนต์ DHCP ที่ NetworkManager ใช้) เสริมสิ่งนี้กับเซิร์ฟเวอร์ dns ของคุณดังนั้น resol.conf จะสิ้นสุดเช่นนี้

nameserver 8.8.8.8
nameserver 192.168.1.1

โซลูชันนี้จะทำงานได้ทุกที่และคุณจะได้รับ DNS ที่คุณเลือกไว้เป็นหลักเสมอ


4
สำหรับฉันดูเหมือนว่าผู้จัดการเครือข่ายจะเขียน resolv.conf โดยไม่ปรึกษา dhclient.conf
daithib8

2
บน Ubuntu 11.10 คุณต้องแก้ไข /etc/dhcp/dhclient.conf แทน
/etc/dhcp3/dhclient.conf

1
สามารถใส่หลาย ๆ อันได้ไหม
PyRulez

1
@PyRulez ใช่คั่นด้วยเครื่องหมายอัฒภาคในตอนท้าย
Sergiy Kolodyazhnyy

2
ฉันลองสิ่งนี้ใน 14.10 แต่ไม่มีผลกระทบ
rubo77

7

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


+1 ตกลงถ้านี่เป็นปัญหาที่ไม่น่าจะได้รับการแก้ไขเร็ว ๆ นี้ดีที่สุดในการแก้ไขปัญหาในเราเตอร์จากนั้นจะได้รับการแก้ไขสำหรับทุกเครื่องในเครือข่าย ฉันพบว่าการใช้ Google DNS หรือ OpenDNS ดีที่สุด
Mark Davidson

1
ฉันได้ทำไปแล้ว แต่เราเตอร์ยังคงทำหน้าที่เป็นเซิร์ฟเวอร์ชื่อกลางระหว่างไคลเอนต์และเซิร์ฟเวอร์ชื่อที่กำหนดค่าและมันยังช้ามาก
Wim Coenen

1
ISP จำนวนมากล็อคเราเตอร์ของพวกเขาเพื่อให้คุณไม่สามารถเปลี่ยนการตั้งค่าเหล่านี้หรือต้องจ่ายเงินเพื่อทำเช่นนั้น
LassePoulsen

@Wim หากเราเตอร์ของคุณไม่สามารถให้การแก้ปัญหา DNS ภายในระยะเวลาที่เหมาะสมให้พูด 50ms ในการเชื่อมต่อที่ดีมีบางอย่างผิดปกติกับมัน ผิดมันอาจจะจัดการปริมาณการใช้งานอื่นไม่ได้ผล อาจเป็นเวลาสำหรับการอัพเกรด $ 30 / £ 20
Oli

1
@Oli: ปัญหา DNS แสดงขึ้นเมื่อใช้เราเตอร์จากกล่อง linux: ฉันมีปัญหาเดียวกันกับ debian แต่ไม่มีปัญหากับ windows ฉันแน่ใจว่ามันเป็นเพียงปัญหาความเข้ากันได้ที่ลึกซึ้ง เราเตอร์ทำงานได้ดีเป็นอย่างอื่น
Wim Coenen

6

Edit Connections...คลิกที่บ่งชี้เครือข่ายที่มุมขวาบนของหน้าจอและเลือก เลือกการเชื่อมต่อที่คุณต้องการแก้ไข (อาจมาจากWiredหรือWirelessแท็บแล้วคลิกEdit...ปุ่ม

สลับไปยังIPv4 Settingsแท็บของหน้าต่างการเชื่อมต่อและเปลี่ยนวิธีการจากไปAutomatic (DHCP) Automatic (DHCP) addresses onlyตอนนี้คุณควรจะสามารถระบุที่อยู่ IP ของเซิร์ฟเวอร์ DNS ได้แล้ว

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


1

ฉันเชื่อว่าถ้าคุณเปลี่ยนมันภายใต้การจัดการเครือข่ายของตนเองการเปลี่ยนแปลงอย่างต่อเนื่อง

หากต้องการใช้ eth0 เช่น

Network Manager -> Wired -> Auto eth0 -> การตั้งค่า ipv4

ตั้งค่าเซิร์ฟเวอร์ DNS ของคุณเป็น 8.8.8.8 และนำไปใช้


ฉันมีปัญหาในการค้นหาสิ่งที่เรียกว่า "ผู้จัดการเครือข่าย" มี "ระบบ - การบริหาร - เครื่องมือเครือข่าย" แต่นั่นไม่ได้ช่วย ในที่สุดฉันก็พบว่าฉันต้องการ "ระบบ - การตั้งค่า - การเชื่อมต่อเครือข่าย"
Wim Coenen

1
มีไอคอนผู้จัดการเครือข่ายในแผงควบคุม (ไอคอนแสดงสถานะเครือข่ายของคุณ) ที่คุณสามารถคลิกขวาเพื่อแก้ไขการเชื่อมต่อได้
Marcel Stimberg

สิ่งนี้ใช้ไม่ได้
user568021

0

การใช้ Terminal

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

พิมพ์ครั้งแรก

sudoedit /etc/resolv.conf

ผนวกที่อยู่ IP เซิร์ฟเวอร์ DNS ที่คุณต้องการดังนี้:

nameserver <preferred-ip1>
nameserver <preferred-ip2>
nameserver <preferred-ip3>

นำมาจาก: http://www.cyberciti.biz/faq/ubuntu-linux-configure-dns-nameserver-ip-address/


6
โปรดทราบว่าหากเซิร์ฟเวอร์ชื่อถูกตั้งค่าผ่าน DHCP /etc/resolv.confจะถูกเขียนทับ ดังนั้นวิธีนี้จึงเหมาะสมสำหรับเครื่องที่มีการกำหนดค่าเครือข่ายด้วยตนเอง เทคนิคคุณสามารถทำchattr +i /etc/resolv.confเพื่อป้องกันไฟล์จากการถูกปรับเปลี่ยน (ฉันไม่ได้ปีที่ผ่านมา) แต่วิธีที่ดีที่สุดสำหรับเครื่องส่วนใหญ่จะได้รับการ JRG ของวิธีการในคำตอบของเขาaskubuntu.com/a/90263/13398
Scott Severance

@ScottSeverance สิ่งที่ระบบไม่มี X
Amith KK

ในกรณีนี้อาจเป็นเซิร์ฟเวอร์ที่มีเครือข่ายที่กำหนดค่าด้วยตนเองซึ่งในกรณีนี้คำตอบของคุณเหมาะสมอย่างยิ่ง แต่เครื่อง Ubuntu ส่วนใหญ่รัน X และสามารถจัดการกับวิธีอื่นได้อย่างง่ายดาย ถ้าเครื่องไม่ได้ทำงาน X แต่มี GUI ที่เหมาะกับการติดตั้งคุณยังสามารถเรียกใช้เครื่องมือแบบกราฟิกผ่าน SSH ForwardX11=yesใช้
Scott Severance

6
หากคุณกำลังพยายามแก้ไขไฟล์ /etc/resolv.conf ด้วยตนเองวิธีที่เหมาะสมในการทำ (ดังนั้นจึงไม่ถูกเขียนทับ) คือการติดตั้งแพคเกจ "resolvconf" แล้วแก้ไข / etc / resolvconf / resolv conf.d / head หรือ /etc/resolvconf/resolv.conf.d/tail
Azendale

0

สำหรับเซิร์ฟเวอร์ที่ไม่มีส่วนหัวที่ไม่มี X และการจัดการผ่าน ssh หรืออะไรก็ตามจำเป็นต้องใช้โซลูชันบรรทัดคำสั่ง หาก resolv.conf ไม่ถูกเขียนทับแสดงว่าเป็นสถานที่ที่ถูกต้องในการเปลี่ยนเนมเซิร์ฟเวอร์

หาก resolv.conf ไม่ถูกเขียนทับจากนั้นใน 14.04LTS อย่างน้อยไฟล์ที่จะแก้ไขคือ:

  • /etc/resolvconf/resolv.conf.d/head
  • /etc/resolvconf/resolv.conf.d/tail

ฉันขอแนะนำอย่างยิ่งให้ใส่สตริงความคิดเห็นลงในไฟล์เช่นนี้เพื่อให้ปรากฏในไฟล์ที่สร้างขึ้น (/etc/resolve.conf) และคุณสามารถค้นหามันได้ในอนาคต ฉันเริ่มต้นและจบแต่ละไฟล์ด้วยความคิดเห็นหนึ่งบรรทัดของแบบฟอร์ม:

  • # ====== เริ่ม /etc/resolveconf/resolv.d/tail ======
  • # ====== end /etc/resolveconf/resolv.d/tail ======

และวางคำสั่งที่เกี่ยวข้องระหว่างพวกเขา


0

ฉันพบว่าการเพิ่มบรรทัดdns-nameserver ipลงในไฟล์อินเตอร์เฟสการตั้งค่าการเชื่อมต่อแบบมีสายการตั้งค่า ipv4 เป็นการตั้งค่าอัตโนมัติ (DHCP) เท่านั้นและป้อน DNS เซิร์ฟเวอร์ IP และชื่อโดเมน การเพิ่ม IP DNS ภายในเครื่องไปยังส่วน DNS คงที่ของเราเตอร์ DSL ทำให้ NetworkManager รวมที่อยู่ในเครื่องนี้ในresolv.confไฟล์ที่มันเขียนทับพร้อมกับข้อมูลอื่นที่ดึงมาจากเราเตอร์ สิ่งเหล่านี้เข้าด้วยกันดูเหมือนจะทำให้การแก้ปัญหาชื่อ DNS ในเครื่องยังคงอยู่ซึ่งเป็นงานที่ยากอย่างน่าประหลาดใจ ความต้องการ DNS ท้องถิ่นของฉันสำหรับติดตั้งไคลเอนต์ Linux ไปยัง Samba ที่ใช้ร่วมกันmount.cifsบนเครือข่ายที่ให้บริการ DHCP


0

หากNetwork-Managerหยุดและ/etc/resolvconf/resolv.conf.d/baseได้รับการกำหนดค่า

อาจresolvconf --enable-updatesจะมีประโยชน์


0

คุณสามารถเปลี่ยนการตั้งค่า IPv4 DNS ในรูปแบบกราฟิกตามที่ตอบไว้ที่นี่

แต่ถ้าคุณสงสัยว่าจะทำสิ่งเดียวกันได้อย่างไรโดยใช้บรรทัดคำสั่งคุณต้องแสดงรายการไฟล์ใน/etc/NetworkManager/system-connectionsไดเรกทอรีด้วยlsคำสั่ง:

ls /etc/NetworkManager/system-connections

จะต้องมีไฟล์ที่มีชื่อของการเชื่อมต่อของคุณเรียกว่าWired Connection 1ฉัน

ดังนั้นเราจำเป็นต้องแก้ไขไฟล์และเพิ่มเซิร์ฟเวอร์ DNS ในนั้น:

Sudo nano "/etc/NetworkManager/system-connections/Wired connection 1"

เพิ่มเซิร์ฟเวอร์ DNS ให้มากที่สุดเท่าที่คุณต้องการใน[ipv4]ส่วนและแยกพวกเขาด้วยเครื่องหมายอัฒภาค;และวาง;ที่ท้ายเซิร์ฟเวอร์ DNS ตัวสุดท้ายเช่นนี้:

[ipv4]
dns=1.1.1.1;8.8.8.8;9.9.9.9;

คุณสามารถลบบรรทัดนี้ได้หากคุณไม่ต้องการกำหนด DNS ใด ๆ

นอกจากนี้คุณต้องเพิ่มบรรทัดนี้ignore-auto-dns=trueเพื่อเพิกเฉย DHCP ที่ให้เซิร์ฟเวอร์ DNS (เช่นเซิร์ฟเวอร์ DNS ตั้งค่าในการกำหนดค่าของเราเตอร์):

[ipv4]
dns=1.1.1.1;8.8.8.8;9.9.9.9;
ignore-auto-dns=true

บริบทเล็ก ๆ น้อย ๆ สำหรับคำตอบนี้: ฉันพยายามคิดว่าไฟล์ใดที่ได้รับการแก้ไขเมื่อฉันเพิ่มเซิร์ฟเวอร์ DNS ในการตั้งค่า DNS ของ GUI ดังนั้นฉันจึงใช้คำสั่งนี้เป็นเวลา 16+ ชั่วโมง: sudo grep -rs "1.1.1.1" /ซึ่งสแกนไฟล์ทั้งหมดบนเครื่องเสมือน Ubuntu ของฉัน แต่มันยังไม่จบแม้หลังจากที่ทำงานมานานแล้วว่า แต่ฉันรู้ว่ามันเป็นไปได้ว่าไฟล์จะอยู่ใน/etc/NetworkManagerดังนั้นฉันวิ่งgrepอีกครั้งชี้ไปที่ไดเรกทอรีที่และพบนี้/etc/NetworkManager/system-connections/Wired connection 1:dns=1.1.1.1;ดังนั้นผมจึงกลับมาที่นี่เพื่อเขียนคำตอบเดียวที่จะพบLekensteynที่มีอยู่แล้ว ชี้นี้ออกมาในการแสดงความคิดเห็นเกี่ยวกับคำตอบที่ได้รับการยอมรับ

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