Ubuntu: วิธีกำหนดค่าเซิร์ฟเวอร์ DNS ใน / etc / network / interfaces อย่างถูกต้องสำหรับ resolvconf?


14

ตัวอย่างทั้งหมดที่ฉันได้เห็นการกำหนดค่า ( /etc/network/interfaces) แสดงให้เห็นว่าคุณกำหนดค่าอินเตอร์เฟซและจากนั้นภายใต้ที่ให้dns-*สายเช่น:

auto eth0
iface eth0 inet static
        ...
        dns-nameservers 127.0.0.2
        dns-search example.com my.example.com

ตอนนี้ฉันทราบแล้วว่าโปรโตคอล DNS นั้นไม่ขึ้นอยู่กับกลไกการขนส่ง ดังนั้นจึงไม่ควรผิดที่จะเพิ่มที่อยู่ IPv6 ในdns-nameserversบรรทัด

อย่างไรก็ตามเนื่องจากฉันกำลังกำหนดค่าอินเทอร์เฟซสำหรับ IPv6 ด้วยเช่นกันมันก็สมเหตุสมผลที่จะเพิ่มdns-nameserversบรรทัดที่นั่น:

iface eth0 inet6 static
        ...
        dns-nameservers ::2
        dns-search example.com my.example.com

... หรือว่ามัน? เพราะเมื่อresolvconfสร้าง/etc/resolv.confมันก็จะไม่สนใจเซิร์ฟเวอร์ IPv6 DNS ทั้งหมด นอกจากนี้ยังดูเหมือนจะไม่สนใจและdns-search dns-domainบรรทัดเพียง แต่มันดูเหมือนว่าจะให้เกียรติเป็นเส้นจากการกำหนดค่าสำหรับdns-nameservers IPv4eth0

วิธีกำหนดค่าเซิร์ฟเวอร์ DNS ที่ถูกต้องเป็นอย่างไร


มีหลักฐานเพิ่มเติมว่าทำไมจึงควรเป็นส่วนหนึ่งของifaceบทแต่ละบท อ้างอิงจากman 8 resolvconf:

โปรแกรมสามารถใช้ในการเชื่อมต่อเครือข่ายการกำหนดค่าตามการตั้งค่าในifup(8) /etc/network/interfaces(5)เพื่อให้ifupข้อมูลการผลักดัน nameserver ไปresolvconfเมื่อมันกำหนดค่าอินเตอร์เฟซให้เพิ่มdns-สายที่จะเกี่ยวข้องฉันท์ในiface /etc/network/interfacesเพิ่มที่อยู่ nameserver dns-nameserversเพิ่มจุดเริ่มต้นสอดคล้องกับ


หากคุณยังคงมีปัญหานี้อยู่โปรดโพสต์ไฟล์ / etc / network / interfaces ทั้งหมดของคุณและส่งออกไฟล์ / usr / share / resolvconf / dump-debug-info ซึ่งรวมอยู่ในแพ็คเกจ resolvconf ใน Ubuntu 15.04
jdthood

คำตอบ:


9

มันถูกต้องที่จะนำตัวเลือก * dns- ทั้งในiface eth0 inet staticบทหรือiface eth0 inet6 staticฉันท์ ตัวเลือกจะใช้งานได้เมื่อนิยามส่วนต่อประสานทางตรรกะที่พวกเขาอยู่กลายเป็นใช้งาน

ฉันเพิ่งทดสอบสิ่งนี้บนเครื่อง Ubuntu 15.04 ของฉันเองซึ่งโดยปกติฉันกำหนดค่าด้วย DHCP ฉันปิดการใช้งาน NetworkManager และแก้ไข / etc / network / interfaces เพื่อให้เป็นดังนี้:

iface eth0 inet static
        address 192.168.178.22
        netmask 255.255.255.0
        dns-nameservers 8.8.8.8
        dns-search foo

iface eth0 inet6 static
        address fe80::390:f5ff:fef7:96b9/64
        dns-nameservers ::2
        dns-search bar

ฉันทำแล้ว

$ sudo ifup eth0

ผลลัพธ์ที่ได้:

$ ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 00:90:f5:f7:96:b9  
      inet addr:192.168.178.22  Bcast:192.168.178.255  Mask:255.255.255.0
      inet6 addr: fe80::390:f5ff:fef7:96b9/64 Scope:Link
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      RX packets:2114609 errors:0 dropped:1 overruns:0 frame:0
      TX packets:1757693 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:1000 
      RX bytes:2033346950 (2.0 GB)  TX bytes:1318685445 (1.3 GB)
      Interrupt:20 Memory:f7e00000-f7e20000 

$ cat /etc/resolv.conf
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver ::2
nameserver 8.8.8.8
search bar foo

โปรดทราบว่าขณะนี้ที่อยู่, dns-nameservers และตัวเลือก dns-search จาก stanzas ทั้งสองทำงานอยู่

[อัปเดต 30 พฤษภาคม 2558]


1

ใน RPi ของฉันที่ใช้ Ubuntu 16.04.2 LTS การค้นพบของฉันมีดังนี้:

หมายเหตุ: ฉันถอนการติดตั้ง NetworkManager และเพิ่งเหลือ resolvconf เพื่อทำสิ่งนั้น (นี่คือเซิร์ฟเวอร์คงที่ดังนั้นสิ่งต่างๆจึงไม่เปลี่ยนแปลงเครือข่ายมากนัก)

ถ้าฉันมีบรรทัด dns-search และ dns-nameserver ในอินเทอร์เฟซเดียวเท่านั้น (สายแรก, สายแรก) แต่ไม่ใช่สายอื่น (wlan0) จากนั้นเมื่อรีบูทประมาณ 95% ของเวลาไฟล์ /etc/resolv.conf ของฉันจะเป็น ว่างเปล่า

เช่นเมื่อไฟล์อินเตอร์เฟสของฉันมีลักษณะเช่นนี้:

# The primary network interface
auto enxb827ebbfedcf
iface enxb827ebbfedcf inet static
    address 192.168.1.16
    netmask 255.255.255.0
    network 192.168.1.0
    broadcast 192.168.1.255
    gateway 192.168.1.1
    dns-search summer.co.uk summer.vpn
    dns-nameserver 192.168.1.16 
    dns-nameserver 192.168.1.1

# end stanza with clear line+

# The loopback network interface
auto lo
iface lo inet loopback

auto wlan0 
iface wlan0 inet static
    address 192.168.1.17
    netmask 255.255.255.0
    network 192.168.1.0
    broadcast 192.168.1.255
    gateway 192.168.1.1 
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

แล้วหลังจากรีบูต resolv.conf ของฉันจะมีลักษณะเช่นนี้

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN

อย่างไรก็ตามในการรีบูตหนึ่งหรือสองครั้งฉันสังเกตเห็นว่ามันมีสิ่งที่ฉันต้องการเช่น

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 192.168.1.16
nameserver 192.168.1.1
search summer.co.uk summer.vpn

วิธีแก้ปัญหา เมื่อฉันให้ทั้งสองอินเตอร์เฟส (สายและ wlan0) บรรทัด dns-search และ dns-nameserver ทุกอย่างทำงานได้ดีในการรีบูตทุกครั้ง (จนถึงตอนนี้)

เช่นไฟล์อินเตอร์เฟสต่อไปนี้ใช้งานได้สำหรับฉัน:

# The primary network interface
auto enxb827ebbfedcf
iface enxb827ebbfedcf inet static
    address 192.168.1.16
    netmask 255.255.255.0
    network 192.168.1.0
    broadcast 192.168.1.255
    gateway 192.168.1.1
    dns-search summer.co.uk summer.vpn
    dns-nameserver 192.168.1.16 
    dns-nameserver 192.168.1.1

# end stanza with clear line+

# The loopback network interface
auto lo
iface lo inet loopback

auto wlan0 
iface wlan0 inet static
    address 192.168.1.17
    netmask 255.255.255.0
    network 192.168.1.0
    broadcast 192.168.1.255
    gateway 192.168.1.1
    dns-search summer.co.uk summer.vpn
    dns-nameserver 192.168.1.16 
    dns-nameserver 192.168.1.1
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

และให้ฉัน resolv.conf ที่ถูกต้องต่อไปนี้หลังจากรีบูตทุกครั้ง (จนถึง)

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 192.168.1.16
nameserver 192.168.1.1
search summer.co.uk summer.vpn

ฉันคิดว่าการตั้งค่าซ้ำกันนี้เป็นเรื่องปกติหากค่อนข้างซ้ำซ้อน

สรุป: หากอินเตอร์เฟส (นอกเหนือจาก lo0) ขาดข้อมูล dns-search และ dns-nameserver ดังนั้น resolvconf จะไม่ใส่ข้อมูลใด ๆ ลงในไฟล์ resolv.conf ของคุณ (เหมือนกับว่า ifup ทำอินเตอร์เฟส wlan0 เป็นวินาทีและ ifup เช็ด resolv.conf หรือเช่นนั้น)

ฉันไม่แน่ใจว่านี่เป็นข้อผิดพลาดหรือไม่รู้สึกผิดกับฉัน


-1

การแก้ไขอินเทอร์เฟซเครือข่ายเพื่อเพิ่มการใช้ DNS ที่กำหนดเองของคุณเป็นวิธี ... แต่สำหรับการแก้ไข resolv.conf ทั่วทั้งระบบอย่างถาวรด้วย dnsnameserver ที่คุณกำหนดเองคุณจะต้องติดตั้งแพคเกจ resolvconf (หากยังไม่ได้ติดตั้งโดยค่าเริ่มต้น) ไฟล์กำหนดค่าที่มีค่าเซิร์ฟเวอร์ชื่อ DNS ที่กำหนดเองของคุณ หวังว่าคู่มือฉบับย่อนี้จะช่วยคุณในการกำหนดค่าเพิ่มเติมเกี่ยวกับรายการ DNS resolv.conf http://www.bytelinux.com/make-permanent-changes-to-resolv-conf-file-on-ubuntu/


2
ยินดีต้อนรับสู่ Unix & Linux! ในขณะที่สิ่งนี้อาจตอบคำถามในทางทฤษฎีมันก็ควรที่จะรวมส่วนที่สำคัญยิ่งกว่าของคำแนะนำที่นี่และให้ลิงค์สำหรับการอ้างอิง
Anthon

@MateiCezar: คุณช่วยอธิบายได้ไหม? ฉันไม่แน่ใจว่าคุณจะอ่านคำถามของฉันจนจบ แพคเกจresolvconf มีการติดตั้ง ฉันต้องการ/etc/network/interfacesกำหนดค่าเซิร์ฟเวอร์ DNS ของฉันสำหรับ IPv4 และ IPv6 ตามลำดับ
0xC0000022L

-1

คุณต้องการใช้เซิร์ฟเวอร์ IPv6 DNS ใน /etc/network/interfaces ... เพียงแค่ใส่ IPv6 DNS เนมเมอร์ของคุณในอินเตอร์เฟสเครือข่ายเฉพาะดังนี้:

dns-nameservers 2001:4860:4860::8844 2001:4860:4860::8888. 

เพื่อเพิ่มถาวร IPv6 dnsnamesers เพื่อ resolv.conf ใช้ลิงค์เดียวกันฉันได้เพิ่มด้านล่างและแก้ไขไฟล์ฐาน resolvconf โดยการเติมด้วยชื่อ DNS6 DNS ของคุณเอง:

nameserver 2001:4860:4860::8844
nameserver 2001:4860:4860::8888 

ในการกำหนดค่า / etc / network / interfaces ด้วย IPv6 ให้ใช้คู่มือนี้http://www.bytelinux.com/configure-permanent-static-ip-address-alias-interfaces-debian-based-systems/และแทนที่ IPv4 ด้วย IPv6 มันเป็นดังนี้: auto eth0

iface eth0 inet6 static
        address 2800:210:0:1::3
        netmask 64
        gateway 2800:210:0:1::1
        dns-nameservers 2001:4860:4860::8844 

แก้ไขการจัดรูปแบบของคุณ อีกครั้งคำถามของฉันอย่างชัดเจนระบุว่านี้ไม่ได้ผลในเซิร์ฟเวอร์ DNS ที่เหล่านั้นสำหรับ IPv6 /etc/resolv.confที่เพิ่มเข้ามา หากวิธีนี้ใช้ได้ผลกับคุณมันจะมีประโยชน์หากรู้รุ่นของระบบที่แน่นอน
0xC0000022L

ให้ฉันได้รับตรงนี้ ... คุณต้องการที่จะใช้ตัวแก้ไข DNS IPv6 จาก / etc / network / interfaces และอย่างใดการเพิ่มพวกเขาในไฟล์ที่ไม่ทำงานสำหรับคุณ?
Matei Cezar

ฉันสามารถเพิ่มพวกเขาให้/etc/network/interfacesดี สิ่งที่ไม่เกิดขึ้นก็คือพวกมันจะถูกถ่ายโอนไป/etc/resolv.confยังที่ควร และฉันพยายามที่จะคิดออกว่าฉันกำลังทำอะไรผิดใช่
0xC0000022L

ยังไม่เข้าใจใช่ไหม รายการ DNS เหล่านั้นจาก / etc / network / interfaces ได้รับการถ่ายโอนไปยัง /etc/resolv.conf หรือไม่? Usullay รายการ namservers เหล่านั้นจากอินเตอร์เฟสไม่เคยถูกถ่ายโอนหรือเขียนไปยัง /etc/resolv.com พวกมันทำงานด้วยตัวเองจาก NIC นั้นและไม่ได้ใช้งานทั้งระบบ เฉพาะไฟล์ /etc/resolv.conf DNS เท่านั้นที่ใช้โดยอินเตอร์เฟสที่ไม่มีรายการ dnsnameservers
Matei Cezar

ขออภัย ... แต่ฉันก็ยังไม่เข้าใจว่าคุณพยายามทำอะไรกับรายการเซิร์ฟเวอร์ชื่อ DNS นี้
Matei Cezar

-1

ทำไมคุณไม่ใช้เซิร์ฟเวอร์ชื่อ IPv6 DNS เหล่านั้นโดยตรงบนไฟล์ /etc/resolv.conf ทั้งระบบโดยการแก้ไขไฟล์พื้นฐาน resolvconf ตามที่แนะนำในคำตอบก่อนหน้าของฉันพร้อมลิงก์และยังคงใช้ไฟล์เครือข่ายต่อไป คุณสามารถเพิ่มเนมเซิร์ฟเวอร์ DNS IPv6 ใน /etc/resolv.conf และถ้าคุณต้องการใช้เนมเซิร์ฟเวอร์ IPv6 อื่น ๆ สำหรับ NIC เฉพาะให้ใช้เฉพาะใน / etc / network / interfaces


สิ่งที่คุณพูดถึงในประโยคสุดท้ายของคุณเป็นสิ่งเหตุผลว่าทำไมฉันไม่ต้องการที่จะใช้การตั้งค่าฐาน resolvconf และมันเป็นสิ่งที่ผมกำลังพยายาม ยิ่งกว่านั้นมันเป็นสิ่งที่ล้มเหลว
0xC0000022L

โอเคเข้าใจแล้ว! แต่ทำไมคุณถึงต้องการใช้สิ่งต่าง ๆ ในลักษณะนี้วิธีที่คุณต้องการให้เซิร์ฟเวอร์ DNS เหล่านั้นสามารถเข้าถึงได้ทั้งระบบมีเหตุผลใดที่จะถ่ายโอนจากเครือข่าย / อินเทอร์เฟซไปยัง resolv.conf เมื่อคุณสามารถเขียนมันทั้ง ไฟล์และคุณทำเสร็จแล้ว!
bytelinux com

ไม่แน่ใจว่าคุณดูแลเครื่องกี่เครื่อง แต่สำหรับฉันมันก็เพียงพอแล้วที่จะพยายามทำให้ชีวิตของฉันง่ายขึ้น เนื่องจาก/etc/network/interfacesควรจะทำงานฉันพยายามคิดว่าฉันทำอะไรผิด
0xC0000022L
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.