“ sudo echo nameserver 8.8.8.8> /etc/resolv.conf” ทำอะไร


13

มีใครช่วยเล่าให้ฉันฟังหน่อยได้sudo echo nameserver 8.8.8.8 > /etc/resolv.confไหม

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


3
ฉันประหลาดใจที่ใช้งานได้จริง - sudo ควรใช้กับเสียงสะท้อนที่นี่เท่านั้นไม่ใช่การเปลี่ยนเส้นทางและผู้ใช้ที่ไม่ใช่รูทไม่ควรเข้าถึง /etc/resolv.conf
สูงสุด

@ Max คุณพูดถูก ฉันพลาดส่วนนั้น - อัปเดตคำตอบของฉัน
gertvdijk

คำตอบ:


27

มันแทนที่ nameserver (DNS) ที่ใช้ในเครื่องของคุณโดยบริการ Google มหาชน DNS หากการเรียกใช้คำสั่งนั้นช่วยคุณได้แสดงว่าคุณมีปัญหา DNS ในการตั้งค่าเริ่มต้นที่เครือข่ายของคุณอาจกำหนด (DHCP) แม้ว่าจะเป็นการดีกว่าที่จะแก้ไขสาเหตุของปัญหา แต่นี่เป็นคำตอบทั่วไปสำหรับคำถามของคุณ


คำอธิบายของคำสั่ง

sudo echo nameserver 8.8.8.8 > /etc/resolv.conf
  • sudo ยกระดับสิทธิ์การใช้งานให้เป็นรูทในกรณีนี้
  • echoเพียงแค่ส่งออกข้อโต้แย้งต่อไปนี้กับเอาท์พุทมาตรฐาน (ในกรณีนี้มันเอาท์พุทnameserver 8.8.8.8)
  • > เปลี่ยนทิศทางเอาต์พุตมาตรฐานไปยังไฟล์ (เขียนทับมัน) ใน Unix shell ปกติ
  • /etc/resolv.conf เป็นไฟล์ที่เขียนเอาต์พุตไป
  • การมีบรรทัดnameserver 8.8.8.8ใน/etc/resolv.confทำให้ระบบใช้เนมเซิร์ฟเวอร์ที่มีที่อยู่ IP 8.8.8.8สำหรับการแก้ไขชื่อโดเมนเป็นที่อยู่ IP (เวอร์ชั่นสั้นมากของสิ่งที่เกิดขึ้นจริง)
  • 8.8.8.8เป็นหนึ่งในที่อยู่ที่เผยแพร่โดย Googleว่าเป็นที่ซึ่งบริการ DNS สาธารณะกำลังฟังอยู่

sudo ผิดพลาด

ในขณะที่คำอธิบายนี้ฟังดูเป็นไปได้ แต่สิ่งนี้จะไม่ทำงานเนื่องจากคุณจะได้รับข้อผิดพลาด :

bash: /etc/resolv.conf: Permission denied

ทำไม? เปลี่ยนเส้นทางการส่งออกจะถูกจัดการโดยเปลือกของคุณ (ที่นี่: ทุบตี) sudoและไม่ได้นำเข้าบัญชีสำหรับคำสั่งที่ใช้สำหรับ คล้ายกับวิธีการคูณในคณิตศาสตร์มีความสำคัญมากกว่าการเพิ่ม ดังนั้นมันเป็นเพียงแค่echoนั้นที่ได้รับสิทธิ์ยกระดับ แต่เชลล์ของคุณไม่ได้! เพื่อแก้ปัญหานี้หนึ่งควรใช้คำสั่งนี้เช่น

sudo sh -c "echo nameserver 8.8.8.8 > /etc/resolv.conf"

หรือโดยใช้ไพพ์และteeส่งออกไปยังไฟล์:

echo nameserver 8.8.8.8 | sudo tee /etc/resolv.conf  #prints to screen as well

Ubuntu และผู้จัดการเครือข่าย

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


การกำหนดค่าโดยใช้ Network Manager

ฉันจะแนะนำการกำหนดค่าพีซีของคุณอย่างถูกต้องโดยใช้ Network Manager ฉันสมมติว่าคุณกำลังใช้ DHCP ในเครือข่ายของคุณที่นี่ (พบมากที่สุด) จากนั้นทำเช่นนี้เพื่อดำเนินการเช่นเดียวกับคำสั่งที่คุณใช้:

  1. เปิดแก้ไขการเชื่อมต่อ :

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

  2. แก้ไขโปรไฟล์การเชื่อมต่อที่คุณใช้

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

  3. บนแท็บการตั้งค่า IPv4 :

    • วิธีการ: ที่อยู่อัตโนมัติ (DHCP) เท่านั้น

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

    • เซิร์ฟเวอร์ DNS: 8.8.8.8
    • กดบันทึก

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

เสร็จสิ้น


บันทึกย่อที่สำคัญ

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

ดังนั้นโปรดแก้ไขเซิร์ฟเวอร์ DNS ในพื้นที่ของคุณแทน หากเป็นเพียงผู้ส่งต่อไปยังเซิร์ฟเวอร์ DNS ที่เสียของ ISP ของคุณและคุณไม่สามารถเปลี่ยนแปลงได้ (ตัวอย่างเช่นเราเตอร์ที่จัดการโดย ISP แบบ all-in-one-router) ดังนั้น8.8.8.8โซลูชันนี้อาจเป็นตัวเลือกเดียวของคุณ


1
หมายเหตุสำคัญอื่น ๆ : google น่าจะรวบรวมผู้ที่กำลังค้นหาสิ่งที่อยู่ใน DNS ดังนั้นให้คิดว่าคุณพอใจกับสิ่งนั้นหรือไม่ มีเซิร์ฟเวอร์ DNS สาธารณะอื่น ๆ อีกมากมายที่คุณสามารถใช้ได้และโดยทั่วไปมีความน่าเชื่อถือ ดูเหมือนว่า OP จะใช้เซิร์ฟเวอร์ DNS ที่ไม่ดีซึ่งอาจจะใช่หรือไม่ใช่ในท้องที่ก็ได้ (ฉันมีเราเตอร์ ADSL ชุดสินค้าที่ทำงานได้ไม่ดีกับ DNS)
mc0e
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.