ฉันจะกำหนดค่า DNS แบบคงที่ในส่วนต่อประสานได้อย่างไร


60

ฉันใช้ Ubuntu 12.04

/etc/network/interfacesไฟล์ของฉันประกอบด้วย:

# The loopback network interface  
auto lo  
iface lo inet loopback  


# The primary network interface  
auto eth0 
iface eth0 inet static  
address 192.168.1.58  
gateway 192.168.1.1
network 192.168.1.0  
broadcast 192.168.1.255
dns-nameservers 66.212.63.228 66.212.48.10  

ฉันรันคำสั่ง: /etc/init.d/networking restart

ซึ่งตอบกลับด้วย:

*Running /etc/init.d/networking restart is deprecated because it may not enable again some interfaces  
*Reconfiguring network interfaces...  
RTNETLINK answers: File exists  
Failed to bring up eth0  
[ OK ]  

ต่อไปฉันรัน ping google.com และได้รับ:

ping: unknown host google.com

ฉันไม่แน่ใจว่าอินเตอร์เฟสของฉันรีเฟรชแล้วหรือไม่ ฉันจะกำหนดค่าเครือข่ายของฉันอย่างถูกต้องด้วยที่อยู่ DNS คงที่ของฉันได้อย่างไร


1
รีบูทคอมพิวเตอร์ของคุณ ห้ามรัน /etc/init.d/networking restart ข้อผิดพลาดเกิดจากเส้นทางเริ่มต้นที่มีอยู่แล้ว การตั้งค่านี้ดูถูกต้องสำหรับฉัน
Matt H

2
อย่างที่แมตต์เอชบอกว่า/etc/network/interfacesจู้จี้จุกจิกกับสิ่งที่มีอยู่แล้ว คุณสามารถติดตั้งได้อย่างสมบูรณ์แบบ แต่มีบางอย่างที่นั่นและมันจะบ่น หากเป็นเส้นทางเริ่มต้นที่บ่นเกี่ยวกับคุณสามารถลบออกได้โดยใช้ip route del defaultเพื่อทำให้คอมพิวเตอร์เข้าสู่สถานะที่คุณสามารถมอบการจัดการสิ่งนี้ให้/etc/network/interfaces
Azendale

ผู้จัดการเครือข่ายได้อ้างสิทธิ์เหยื่อรายอื่นแล้ว เพียงลบขยะ
Owl

คำตอบ:


24

ในฐานะผู้ถามให้เนื้อหาของ/etc/network/interfacesฉันฉันอนุมานว่าเขาใช้ ifup เพื่อกำหนดค่าอินเทอร์เฟซ แต่เนื่องจากเขาอาจใช้ NetworkManager จริง ๆ ฉันจะหารือเรื่องนั้นเช่นกัน

หากคุณใช้ ifup การตั้งค่า DNS จะเข้า/etc/network/interfacesสู่ สำหรับแต่ละอินเตอร์เฟสคุณเพิ่มdns-*ตัวเลือกที่เหมาะสมสำหรับเนมเซิร์ฟเวอร์ที่มีอยู่ในส่วนต่อประสานนั้น เช่นถ้าเนมเซิร์ฟเวอร์ที่อยู่ 1.2.3.4 มีอยู่บนอินเตอร์เฟส eth0 ให้เพิ่มdns-nameservers 1.2.3.4ไปยังiface eth0stanza

หากคุณใช้ NetworkManager การตั้งค่าจะถูกป้อนในตัวแก้ไขการเชื่อมต่อ (ตัวบ่งชี้เครือข่าย | แก้ไขการเชื่อมต่อ ... ) ในแท็บการตั้งค่า IPv4

ทำ/etc/init.d/networking restartเพื่อกำหนดค่าการเชื่อมต่อจะเลิก หากคุณกำลังใช้ifupแล้วครั้งแรกที่ifdownอินเตอร์เฟซที่ใช้งานแต่ละเครือข่ายแล้วifupอินเตอร์เฟซที่แต่ละ หากคุณใช้ NetworkManager ก่อนอื่นให้ปิดการใช้งานเครือข่ายโดยใช้ตัวบ่งชี้ (ด้านบนของเดสก์ท็อป); จากนั้นเปิดเทอร์มินัลแล้วเรียกใช้

sudo /etc/init.d/network-manager restart

จากนั้นเปิดใช้งานเครือข่ายโดยใช้ตัวบ่งชี้

หรือคุณสามารถรีบูตได้

เกี่ยวกับความจริงที่/etc/init.d/networking restartเกิดขึ้น

RTNETLINK answers: File exists
Failed to bring up eth0  

ซึ่งหมายความว่าหากการอัปโหลดคิดว่าeth0มีอยู่แล้ว ใช้ifdown --force eth0เพื่อifupdownหยุดการเชื่อว่ามีการกำหนดค่าอินเทอร์เฟซไว้แล้ว

เกี่ยวกับข้อความ "เลิกใช้แล้ว" ข้อความนี้จะไม่ถูกพิมพ์ใน Ubuntu 12.10 อีกต่อไป แต่คุณควรทราบว่า initscripts นั้น "กำลังจะออก" เมื่อต้องการเริ่มบริการfooใช้หรือservice foo restart restart fooโปรดทราบด้วยว่าหากคุณต้องการกำหนดค่าอินเทอร์เฟซของคุณใหม่จะเป็นการดีถ้า ifdown พวกเขาทีละคนมากกว่าที่จะพึ่งพาการรีสตาร์ท "เครือข่าย"


17

หากไม่มีการทำงานใด ๆ ข้างต้นโปรดทราบว่า Ubuntu จะผนวกtailไฟล์เข้ากับไฟล์ resolv.conf ที่สร้างขึ้น

ลองสิ่งนี้:

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

ซึ่งจะเปิดไฟล์ resolv.conf.d เปล่าในโปรแกรมแก้ไขข้อความนาโน คุณจะต้องวางที่อยู่เซิร์ฟเวอร์ DNS ของคุณในบรรทัดแรกของไฟล์นี้และอย่าลืมวางบรรทัดด้วยการขึ้นบรรทัดใหม่ (กด Enter) ดังที่แสดงด้านล่าง:

nameserver 10.20.1.2

การแก้ไขไฟล์ tail แทนไฟล์ resolv.conf ที่แท้จริงจะป้องกันไม่ให้การเปลี่ยนแปลงของคุณสูญหายระหว่างการรีบูตระบบ

คุณจะต้องเรียกใช้sudo resolvconf -uเพื่อเปิดใช้งานการเปลี่ยนแปลง คุณควรจะ ping google.com หลังจากนี้ โชคดี!


ฟังดูดี แต่ระบบ Ubuntu 14.04 ของฉันไม่ได้ใช้ไฟล์หางนี้ ดังนั้นนี่ไม่ใช่วิธีแก้ปัญหาในกรณีของฉัน ขอบคุณ
James T Snell

11

เวอร์ชั่นบรรทัดคำสั่ง:

คุณควรเพิ่มเนมเซิร์ฟเวอร์ของคุณเพื่อทำ/etc/resolvconf/resolv.conf.d/baseสิ่งนี้:

nameserver 66.212.63.228 
nameserver 66.212.48.10

ฉันจะต้องลองวิธีนี้ในไม่กี่ชั่วโมงและกลับไปหาคุณ คุณรู้หรือไม่ว่าทำไมฉันถึงได้รับข้อความที่เลิกใช้แล้วและล้มเหลวในการแสดงข้อความ eth0
dottedquad

1
คุณสามารถใช้นี้$ ifdown eth0 && ifup eth0อ่านข้อมูลเพิ่มเติมเกี่ยวกับปัญหานี้ที่นี่
pl1nk

1
@docquad สิ่งที่คุณเปลี่ยนไฟล์ / etc / network / interfaces ไปนี้: auto lo iface lo inet loopback auto eth0 iface eth0 inet static address 192.168.1.58 gateway 192.168.1.1 network 192.168.1.0 broadcast 192.168.1.255ระวังว่านี่: auto eth0 iface eth0 inet staticเป็นสองบรรทัด
pl1nk

1
เป็นการดีกว่าที่จะเพิ่มข้อมูลเนมเซิร์ฟเวอร์ไปยังการเชื่อมต่อ NetworkManager (ถ้าคุณใช้ NetworkManager) ตามที่อธิบายโดย bodhi.zazen หรือเพื่อนิยามส่วนติดต่อใน / etc / network / interfaces (ถ้าคุณใช้ ifup) มากกว่าการเพิ่มข้อมูลแบบคงที่และทั่วโลก ถึง /etc/resolvconf/resolv.conf.d/base
jdthood

1
@ jdthood ดูเหมือนว่าคุณจะได้เห็นความคิดเห็นและคำถามของฉันเช่นเดียวกับคำตอบอื่น ๆ ! มีความคิดเห็นเพิ่มขึ้น [.. ] "คุณสามารถใช้สิ่งนี้: $ ifdown eth0 && ifup eth0" [.. ]
pl1nk

11

คำตอบทั้งหมดที่เกี่ยวข้องกับ / etc / network / interfaces ไม่ถูกต้องdns-nameserversมากกว่าdns-nameserver- ด้านล่างควรทำงาน:

auto wlan0
iface wlan0 inet static
address 192.168.1.28
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameserver 8.8.8.8
dns-nameserver 8.8.4.4
dns-search something.network.com

(ทดสอบบน Ubuntu 15.04)


8
ระมัดระวัง ฉันเพิ่งยืนยันว่าdns-nameserver(เอกพจน์) ไม่ทำงานบน RaspberryPi + Raspian Jesse ฉันพบว่าฉันต้องใช้dns-nameservers(พหูพจน์) YMMV และทุกสิ่งเพียงแค่พยายามช่วยเหลือบุคคลต่อไป ...
หลบเลี่ยง

2
ตรวจสอบหน้า resolvconf (8) man ของคุณเพื่อดูการใช้งานและตัวเลือกต่างๆ บน Ubuntu 16.04.3 LTS มันบอกว่าคุณใช้หนึ่งหรือมากกว่าหนึ่งบรรทัด dns-nameserver กับที่อยู่ IP เดียวต่อบรรทัดหรือคุณสามารถใช้ dns-nameservers และรายการที่อยู่ IP ที่คั่นด้วยช่องว่าง
jla

dns-nameserverหรือdns-nameservers? เพราะwiki.ubuntu.com/KvmWithBridgeพูดว่า "servers" ...
Thufir

ไม่แน่นอนสำหรับฉัน ไม่สามารถลงคะแนนได้คะแนนไม่เพียงพอ
Owl

ใช่นี่เป็นสิ่งที่ดีและสอดคล้องกันแล้ว! ขออภัยในความสับสนให้ตรวจสอบทั้งสองและตรวจสอบความคิดเห็นข้างต้นเนื่องจากดูเหมือนว่าตัวแปร Ubuntu / Debian / Raspian แตกต่างกัน
babelmonk

6

วิธีที่ง่ายที่สุดในการกำหนดค่าเซิร์ฟเวอร์ DNS ของคุณคือการใช้ NetworkManager

ภายใต้ IPv4 กรอกเซิร์ฟเวอร์ dns ของคุณ

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


2
ฉันลืมที่จะพูดถึงว่าฉันไม่ได้มีความเป็นเอกภาพหรือติดตั้ง gnome Gnome installatio เป็นโครงการต่อไปของฉัน
dottedquad

มันจะไม่ให้ฉันช่วยสิ่งนี้ลง ทำไมจึงเป็นเช่นนั้น
Josh

4

ฉันสามารถที่จะหลีกเลี่ยงปัญหานี้ได้บนการติดตั้งเซิร์ฟเวอร์อูบุนตูที่ไม่มีหัวขาดโดยการเพิ่ม

nameserver 8.8.8.8

... หลังจากส่วนต่อประสานที่เกี่ยวข้องใน / etc / network / interfaces:

auto wlan0
iface wlan0 inet static
address 192.168.1.28
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 8.8.8.8
dns-nameservers 8.8.4.4

หวังว่านี่จะช่วยผู้ใช้ในภายหลัง!


สำหรับdns-nameserversคุณสามารถจุลภาคแยก 8.8.8.8, 8.8.4.4?
Thufir


4

หมายเหตุ: ใช้ความระมัดระวังโดยไม่ต้องใช้งานเครื่องโดยตรงสิ่งนี้จะตัดการเชื่อมต่อ ...

ฉันใช้

sudo ifdown eth0

แล้วก็

sudo ifup eth0

มันจะรีเซ็ตและปล่อยทุกอย่าง ...

หากพบข้อผิดพลาดที่เกี่ยวข้องกับการกำหนดค่าคุณสามารถใช้:

sudo ifdown eth0 --force

3

สิ่งนี้ใช้ได้สำหรับฉัน

sudo vi /etc/resolvconf/resolv.conf.d/base

และเพิ่ม:

nameserver <add your router ip>

วิ่ง:

sudo resolvconf -u

ฉันใช้การติดตั้งเซิร์ฟเวอร์หลักของอูบุนตู


2

คุณไม่มีข้อมูลจำเพาะซับเน็ตในไฟล์อินเตอร์เฟส

เพิ่ม netmask 255.255.255.0ให้/etc/network/interfacesต่ำกว่าบรรทัดเครือข่าย


1

ด้วยเหตุผลบางอย่างdns-nameserversคำสั่งไม่ได้ทำอะไรในกรณีของฉัน และคำตอบอื่น ๆ ไม่ได้อยู่ในหนังสือเล่มนี้เพราะพวกเขาเลี่ยงผ่านการdnsmasqใช้งานใน Ubuntu

หากต้องการทำสิ่งนี้ถูกต้องให้แก้ไข /etc/dnsmasq.conf

เพิ่มเนมเซิร์ฟเวอร์ของคุณที่ด้านล่างของไฟล์:

server=8.8.8.8
server=8.8.4.4

รีสตาร์ท dnsmasq เพื่อใช้การตั้งค่าใหม่: sudo service dnsmasq restart

เครดิต: https://unix.stackexchange.com/a/163506/187949


1

ฉันมีปัญหานี้ ฉันคิดว่าฉันกำลังบ้า ทุกครั้งที่ฉันแก้ไข/etc/resolv.confจะลบการกำหนดค่าของฉัน ปรากฎว่าคนบ้าทั้งหมดได้แจกจ่ายเดเบียนกับผู้จัดการเครือข่ายซึ่งเขียนทับการตั้งค่าเครือข่ายทั้งหมดของฉัน

นี่คือวิธีที่ฉันแก้ไข:

1) sudo apt-get purge network-manager

นี่จะเป็นการกำจัดเครื่องมือใหม่ที่น่ากลัวที่จะหยุดการกำหนดค่าทั้งหมดจากการทำงานอย่างถูกต้อง

2) แก้ไข/etc/network/interfacesไฟล์:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

auto enp0s25
iface enp0s25 inet static
        address 192.168.1.2
        netmask 255.255.255.0
        gateway 192.168.1.1

3) แก้ไข /etc/resolv.conf:

nameserver 8.8.8.8
nameserver 8.8.4.4

4) รีบูต

ขอแสดงความยินดีขณะนี้คุณมีการกำหนดค่าที่ใช้งานได้อีกครั้ง


0

คุณอาจกำหนดค่าอินเทอร์เฟซนั้นในไฟล์อื่นด้วยเนื่องจากคุณมีเกตเวย์เพิ่มเติม

โดยมีรายละเอียดที่นี่

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