อะไรคือ“ วิธีที่ถูกต้อง” ที่จะทำให้เกิดการเปลี่ยนแปลงใน /etc/resolv.conf ด้วย /etc/resolv.conf.d


11

ฉันสมัยก่อนresolv.confเป็นแบบคงที่และคุณแก้ไขด้วยตัวเอง

หลังจากนั้นไคลเอ็นต์ DHCP จะเขียนใหม่โดยใช้รายการคงที่และสิ่งที่ได้รับจากการเช่า DHCP

ทุกวันนี้การแจกแจงบางอย่าง - เหมือนของฉัน (Linux Mint 18.1) มี/etc/resolv.conf.dกลไกที่มีไดเรกทอรีย่อยหลายสคริปต์และดีฉันไม่สามารถทำหัวและก้อยได้

แล้วทางที่ถูกต้องคืออะไร

  • ระบุว่าฉันต้องการใช้หรือไม่ใช้เซิร์ฟเวอร์ DNS ที่ได้รับจากการเช่า DHCP
  • การเพิ่มรายการคงที่เพื่อ resolv.conf เสมอหรือเป็นทางเลือกเมื่อไม่มีเนมเซิร์ฟเวอร์ที่ได้รับจาก DHCP?
  • การตัดสินใจเกี่ยวกับลำดับญาติในไฟล์?

ฉันไม่รังเกียจที่จะเขียนสคริปต์บางอย่างของตัวเองถ้าฉันมีฉันแค่ไม่ต้องการที่จะ "ทำงานกับ" กลไกที่มีอยู่หรือทำงานซ้ำ


3
ฉันถอนการติดตั้งresolvconfในเซิร์ฟเวอร์ ... unix.stackexchange.com/questions/286195/
Rui F Ribeiro

คุณสามารถกำหนดค่าdhclientให้ละเว้น / แทนที่ข้อมูล DNS DHCP ได้ ฉันไม่แน่ใจว่ามีกลไกใน/etc/resolv.conf.dการทำเช่นนี้ (แต่ฉันไม่ได้ใช้ Mint และไม่มีสคริปต์เหล่านั้น)
dirkt

@dirkt: จริง ๆ แล้วตอนนี้รายการเดียวที่เข้าสู่ฉัน/etc/resolv.confคือ localhost (ซึ่งเรียกใช้ dnsmasq) ดังนั้นจึงไม่ชัดเจนสำหรับฉันว่า dnsmasq, กลไก resolv.conf.d และไคลเอ็นต์ DHCP โต้ตอบอย่างไร
einpoklum

คำตอบ:


1

คำตอบนั้นง่ายมีresolv.conf.dโฟลเดอร์อยู่ใน / etc / resolvconf / และมีไฟล์ head / base / original และ tail แต่ละresolv.confไฟล์หากมีการแก้ไขจะอัปเดตไฟล์ใน / etc /

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

nameserver 1.1.1.1
nameserver 1.0.0.1

หลังจากนั้นรีสตาร์ทเซอร์วิส resolvconf โดยใช้:

sudo service resolvconf restart

ตอนนี้resolv.confอยู่ใน / etc / และคุณจะเห็นการเปลี่ยนแปลงใหม่

สิ่งเดียวกันนี้นำไปใช้ถ้าคุณต้องการใส่สิ่งที่ด้านล่างของไฟล์คุณใช้tailแทนhead/etc/resolvconf/resolvconf.d/

PS: นี่คือการทดสอบ 100% และทำงานกับ Ubuntu และ Debian

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


1
+1 แต่เพียงอธิบายวิธีการเป็นส่วนหนึ่งของสิ่งที่ฉันถาม
einpoklum

0

resol.conf และกลไกบางอย่างเช่นนี้มีอยู่ตั้งแต่ปีที่ผ่านมาจนถึงขณะนี้ มีบรรทัดคำสั่งdhclient, resolvconfซึ่งจัดการไฟล์นี้อย่างไรก็ตามในปีที่ผ่านมาลินุกซ์แนะนำอินเตอร์เฟซใหม่สำหรับการกำหนดค่า NetworkManager โดยชื่อของnmcli นี่เป็นคำสั่งที่สมบูรณ์เพื่อจัดการการกำหนดค่าเครือข่ายแบบถาวรทุกครั้ง (ไม่ใช่เวลาทำงาน) คุณสามารถใช้สิ่งที่ชอบ:

$ nmcli connection modify eth0 ipv4.dns 8.8.8.8

คำสั่งนี้จะถูกเขียนทับresolv.confไฟล์ ใน RHCA จะไม่แนะนำให้แก้ไข resolv.conf ด้วยมือและใช้คำสั่ง เกี่ยวกับไดเรกทอรี resolvconf ที่คุณพูดถึงฉันสามารถพูดได้ว่ามีบริการบางอย่างที่มี conf สำหรับ DNS เพื่อให้พวกเขาใช้ conf เองเช่น OpenVpn คุณสามารถตรวจสอบ/etc/nsswitchไฟล์เพื่อรับข้อมูลเพิ่มเติมเกี่ยวกับการแก้ไข


ฉันไม่เชื่อว่าสิ่งนี้ตอบคำถามของฉันได้จริง
einpoklum

บางทีนี่อาจเป็นคำถามที่ฉันเข้าใจ แต่คำถามก็nsswitchคือคำตอบของคุณ
Ali Ghasempour

ฉันเชื่อว่า @einpoklum ต้องการควบคุมคำสั่งของเซิร์ฟเวอร์ DNS ในresolv.conf(ดูman resolv.conf) ไม่ใช่ลำดับของวิธีที่ใช้สำหรับการแก้ไข ( man nsswitch.conf) แต่คำตอบของคุณนั้นน่าสนใจ
xhienne

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