ที่อยู่เซิร์ฟเวอร์ DNS ไม่ได้เก็บไว้ใน resolv.conf อีกต่อไป ตอนนี้อยู่ที่ไหน


14

บางครั้งฉันสลับเซิร์ฟเวอร์ DNS โดยใช้ตัวบ่งชี้ NetworkManager ในแถบงาน หรูแห่งนี้ทำงานร่วมกับรุ่นก่อนหน้านี้และจริงทำงานได้ดีกับ 12.04 เกินไปยกเว้นสิ่งหนึ่งที่: ผมใช้ Conky ที่จะแสดงข้อมูลบางระบบรวมถึงที่อยู่ DNS 127.0.0.1และผมสังเกตเห็นว่ามันคือตอนนี้มักจะแสดง

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

nameserver 127.0.0.1

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

คำตอบ:


17

ข้อมูลถูกจัดการภายในโดย Network Manager คุณสามารถรับข้อมูลนี้ในบรรทัดคำสั่งโดยใช้nmcliเครื่องมือที่รวมอยู่

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

nmcli dev list iface eth0

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

GENERAL.DEVICE:                         eth0
GENERAL.TYPE:                           802-3-ethernet
...
IP4.DNS[1]:                             192.168.0.1
...

ไม่ควรยากเกินกว่าที่จะดึงข้อมูลที่คุณได้รับจากผลลัพธ์นี้

หากคุณต้องการวิธีการทางโปรแกรมในการเข้าถึงข้อมูลนี้ซึ่งไม่ได้ขึ้นอยู่กับผลลัพธ์ของnmcliข้อมูลนี้ก็ควรพร้อมใช้งานจากอินเทอร์เฟซ D-Bus ของ Network Manager


ขอบคุณมากนั่นเป็นข้อมูลที่ยอดเยี่ยม มันค่อนข้างง่ายที่จะสร้างเชลล์สคริปต์อย่างง่ายโดยใช้nmcliคำสั่งนั้นเพื่อแสดงรายการพารามิเตอร์ที่น่าสนใจต่างๆ บางทีฉันสามารถชักสิ่งที่มีประโยชน์และแบ่งปันบางแห่งได้ ฉันไม่ได้คิดว่าจำเป็นต้องใช้ตัวจัดการเครือข่ายและฉันคิดว่าอาจมีวิธีอื่นสำหรับบางคนที่จะทำสิ่งนี้ แต่สิ่งนี้ได้ผลสำหรับฉัน
Marty Fried

คุณจะเห็นได้ว่าการฟังเซิร์ฟเวอร์127.0.0.1เป็นตัวอย่างของการdnsmasqเริ่มต้นโดย Network Manager (ดูผลลัพธ์ของsudo netstat -tlnp) แต่ที่ดีที่สุดคือคิดว่าเป็นรายละเอียดการใช้งานและขอให้ผู้จัดการเครือข่ายสำหรับข้อมูลที่คุณต้องการเพราะมันเป็นหนึ่งในการตัดสินใจที่นี่
James Henstridge

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

4
nmcli dev list ifaceใช้งานไม่ได้สำหรับฉัน แต่nmcli dev showใช้งานได้ [อูบุนตู 15.04]
Beni Cherniavsky-Paskin

10

นักพัฒนา Ubuntu ควรทำเอกสารการเปลี่ยนแปลงเหล่านี้/etc/resolv.confแต่ยังไม่มี

นี่คือรายการคำสั่งด่วนเพื่อให้คุณไป

  1. แสดงเซิร์ฟเวอร์ DNS ปัจจุบัน

    nm-tool | grep DNS
    
  2. กำหนดเซิร์ฟเวอร์ DNS /etc/dhcp/dhclient.confในแบบคงที่ เพิ่มบรรทัดต่อไปนี้และรีสตาร์ทตัวแก้ไขโลคัล:

    supersede domain-search "sub.mydomain.com", "domain.com";
    prepend domain-name-servers 192.168.0.1;
    

    จากพรอมต์คำสั่ง:

    invoke-rc.d network-manager restart
    

เอกสารเพิ่มเติมบางส่วน: resolvconf (8), /usr/share/doc/resolvconf/README.gz
jdthood

4

โปรดทราบว่าการใช้ nmcli อาจไม่ได้ให้คำตอบเต็มเสมอ เช่นหากคุณใช้ openconnect (หรือ vpnc, น่าจะเป็น) เพื่อเริ่ม VPN และหากคุณมีแพ็คเกจ resolvconf ติดตั้งไว้ (เพื่อดูแลการจัดการ /etc/resolv.conf โดยอัตโนมัติ) คุณจะพบว่ามันยังสามารถแทรกโดยอัตโนมัติ การตั้งค่า DNS ของ VPN เป็น /etc/resolv.conf ล่วงหน้า 127.0.0.1 ในกรณีนี้เพียงแค่ตรวจสอบ (เช่น) "รายการ nmcli -f IP4 dev" จะไม่ให้รายการ DNS ปัจจุบันที่แท้จริงแก่คุณ ไม่แน่ใจว่าสถานการณ์นี้ส่งผลกระทบกับคุณหรือไม่ แต่คิดว่าคุ้มค่าที่จะกล่าวถึง


ขอบคุณสำหรับข้อมูลพิเศษ; มันดีเสมอที่จะเรียนรู้เพิ่มเติม สำหรับกรณีการใช้งานของฉันฉันไม่ต้องกังวลเพราะฉันต้องการรู้ว่า DNS แอดเดรสใดที่เป็นไปได้สองแห่งที่เปิดใช้งานอยู่
Marty Fried

หากคุณใช้ networkmanager เพื่อเชื่อมต่อกับ VPN คำสั่งอะไรควรให้ dns คุณ DNS ทำงานได้ แต่ฉันหามันไม่เจอ
Jorge Suárez de Lis
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.