หากคุณใช้โปรแกรมแก้ไขของคุณเองหรือต้องการใช้งานจากผู้ให้บริการบุคคลที่สามคุณอาจพบว่า/etc/resolv.conf
DHCP ถูกเขียนทับไฟล์ของคุณ มีหลายวิธีในการแก้ไขปัญหานี้ เนื่องจากคุณอาจต้องการที่จะรีบูตเพื่อให้แน่ใจว่าการเปลี่ยนแปลงของคุณจะเริ่มต้นและเนื่องจากคุณกำลังจะเริ่มต้นด้วยการตั้งค่าเครือข่ายในตอนแรกฉันขอแนะนำให้ทำเช่นนี้ในตัวอย่างทดสอบและ / หรือนอกขอบเขต ชั่วโมง
ตอนนี้ต่อไปนี้เป็นสามวิธีจากที่แย่ที่สุดไปหาดีที่สุด โปรดทราบว่าวิธีการทั้งหมดในคู่มือนี้เขียนขึ้นสำหรับ FreeBSD 10 ผู้ใช้ Linux สามารถอ้างอิงคู่มือนี้ได้
วิธีที่ 1: ใช้การตั้งค่าอินเทอร์เฟซแบบคงที่
ในการทดสอบที่ จำกัด ของฉันผลลัพธ์นี้ทำให้เวลาบูตเร็วขึ้นเล็กน้อยเนื่องจากคุณไม่ต้องรอ DHCP เพื่อกำหนดการตั้งค่าเครือข่ายของคุณ อย่างไรก็ตามฉันได้เห็นการกล่าวถึงในเอกสาร Vultr หลายตัวที่ใช้การตั้งค่าส่วนต่อประสานแบบคงที่และเมื่อคุณควรติดกับ DHCP ฉันคิดว่าพวกเขามีเหตุผลที่ดีสำหรับสิ่งนี้และทำให้ฉันยังคงใช้ DHCP ต่อไป อย่างไรก็ตามหากคุณตัดสินใจที่จะไปเส้นทางนี้ให้ทำตามขั้นตอนด้านล่าง
- กำหนด IP, เน็ตเวิร์กมาสก์และ IP เกตเวย์ของเซิร์ฟเวอร์ของคุณ
- แก้ไข
/etc/rc.conf
เพื่อใช้ค่าเหล่านี้แทน DHCP
- รีบูตเครื่องเพื่อทดสอบการตั้งค่า
กำหนด IP / netmask / เกตเวย์
สมมติว่าอินเตอร์เฟสของคุณคือ vtnet0 ให้ทำดังต่อไปนี้:
ifconfig vtnet0 | grep inet
สิ่งนี้จะทำให้คุณได้รับที่อยู่ IP และ netmask สำหรับเซิร์ฟเวอร์ของคุณ:
inet 10.10.10.10 netmask 0xffffff00 broadcast 10.10.10.255
FreeBSD ชอบใช้ hex สำหรับ netmask การแปลงข้างต้นเป็น255.255.255.0
หากคุณสงสัย คุณสามารถหาตารางที่มีประโยชน์ได้ที่นี่แต่อย่ากลัว: คุณสามารถคัดลอกที่อยู่ฐานสิบหกไปยังไฟล์ปรับแต่งของคุณ (หรือแปลงเป็นทศนิยมหากคุณต้องการ)
คุณสามารถค้นหาเกตเวย์ได้หลายวิธี นี่คือหนึ่ง:
route get default | grep gateway
จะส่งคืนบางสิ่งตามบรรทัด:
gateway: 10.10.10.1
แก้ไข/etc/rc.conf
ด้วยค่าใหม่
อาวุธที่มี IP, netmask และเกตเวย์ตอนนี้ถึงเวลาที่จะเพิ่มลงในการกำหนดค่าระบบ ฉันขอแนะนำให้สำรองไฟล์นี้ก่อนทำการเปลี่ยนแปลงใด ๆ เนื่องจากจะทำให้การเลิกทำได้ง่ายขึ้นถ้าคุณทำเลอะ จากนั้นเปิดตัว/etc/rc.conf
แก้ไขที่คุณเลือกและทำการเปลี่ยนแปลงต่อไปนี้:
# Comment out this line:
# ifconfig_vtnet0="dhcp"
# Add these lines:
defaultrouter="10.10.10.1"
ifconfig_vtnet0="inet 10.10.10.10 netmask 0xffffff00"
เห็นได้ชัดว่าคุณควรเปลี่ยน IP, netmask และเกตเวย์จริง ๆสำหรับการปลอมของฉันอย่างชัดเจน
รีบูตและทดสอบ
รีบูตเซิร์ฟเวอร์ของคุณโดยใช้shutdown -r now
และตรวจสอบให้แน่ใจว่ามันกลับมาอย่างถูกต้อง ทำการทดสอบอะไรก็ตามที่คุณเห็นว่าจำเป็นเพื่อให้แน่ใจว่าทุกอย่างทำงานได้อย่างถูกต้อง หากไม่สามารถเข้าถึงเครือข่ายได้ให้ลงชื่อเข้าใช้ผ่านคอนโซลและยกเลิกการเปลี่ยนแปลงของคุณ ถ้าทุกอย่างเรียบร้อยดี ณ จุดนี้คุณสามารถใส่อะไรก็ได้ที่คุณต้องการresolv.conf
โดยไม่ต้องกลัวว่ามันจะหายไป
ถ้าด้วยเหตุผลใดก็ตามที่คุณไม่สามารถรีบูทได้ควรทำงานได้ แต่ฉันจะทำการรีบูตที่เหมาะสมถ้าฉันเป็นคุณ:
service netif restart && service routing restart
วิธีที่ 2: ทำให้resolv.conf
ไม่เปลี่ยนรูป
นี่เป็นบิตของการแฮ็ก แต่มันเป็นทางออกที่รวดเร็วที่สุด ฉันไม่แนะนำเพราะฉันไม่สามารถรับประกันได้ว่าสิ่งนี้จะไม่ทำให้เกิดความแปลกประหลาดในอนาคตเมื่อคุณอัปเกรดเป็นรุ่นใหม่ของระบบปฏิบัติการและ dhclient น่าจะบ่นเป็นกลุ่ม ที่กล่าวว่าเรียบง่ายchflags schg /etc/resolv.conf
เป็นสิ่งที่จำเป็น ตอนนี้ไฟล์ได้รับการป้องกันการเขียนอย่างสมบูรณ์แม้จากรูท คุณสามารถตรวจสอบเช่น:
vultr [~]# chflags schg /etc/resolv.conf
vultr [~]# ls -ol /etc/resolv.conf
-rw-r--r-- 1 root wheel schg 50 Nov 29 06:28 /etc/resolv.conf
vultr [~]# echo "so very untouchable" >> /etc/resolv.conf
/etc/resolv.conf: Operation not permitted.
เลิกทำด้วย: chflags noschg /etc/resolv.conf
วิธีที่ 3: บอก FreeBSD อย่างสุภาพเพื่อออกจากการตั้งค่าของคุณ
นี่คือวิธีที่สะอาดและเหมาะสมที่สุดในการทำสิ่งนี้ให้สำเร็จ มีสองวิธีที่คุณสามารถทำได้:
กำหนดค่า dhclient
ลองยกตัวอย่างจากด้านบนและบอกว่าสิ่งที่คุณต้องทำคือใส่เนมเซิร์ฟเวอร์ที่กำหนดเองของคุณresolv.conf
และไม่ต้องการเสียทุกครั้งที่ DHCP ทำสิ่งนั้น ในกรณีของฉันฉันต้องการใช้ตัวแก้ไขแคชที่ติดตั้งที่ฟังบน localhost ดังนั้นฉันจึงแก้ไข/etc/dhclient.conf
(ซึ่งอาจจะว่างเปล่าจากความคิดเห็น) และเพิ่มรายการต่อไปนี้:
interface "vtnet0" {
supersede domain-name-servers 127.0.0.1;
}
สิ่งนี้จะช่วยให้ dhclient ทำทุกอย่างที่คุณต้องการ แต่เมื่อเซิร์ฟเวอร์ DHCP ส่งรายชื่อเซิร์ฟเวอร์ที่จะใช้มันคุณจะเข้ามาแทนที่ (เหมือนเข้าแทนที่) อย่างสมบูรณ์ หากคุณต้องการเสริม (แทนที่จะแทนที่) สิ่งที่เสนอคุณสามารถ "ผนวก" หรือ "เพิ่ม" แทน "แทนที่" ตามความเหมาะสม
ในกรณีที่คุณต้องการเซิร์ฟเวอร์ที่กำหนดเองมากกว่าหนึ่งตัวให้ระบุดังนี้:
supersede domain-name-servers 127.0.0.1, 127.0.0.2;
หลังจากทำการเปลี่ยนแปลงให้รีสตาร์ทdhclient
เพื่อให้การเปลี่ยนแปลงมีผลทันที:
service dhclient restart vtnet0
ตรวจสอบของคุณ/etc/resolv.conf
และคุณควรพบว่าตอนนี้มีเนมเซิร์ฟเวอร์ที่คุณกำหนดเองอยู่
จากการเขียนนี้เนมเซิร์ฟเวอร์เป็นสิ่งเดียวที่เซิร์ฟเวอร์ DHCP ของ Vultr ได้ใส่เข้าไปในตัวฉันresolv.conf
และสิ่งเดียวที่ฉันใส่ใจในการปรับแต่ง อย่างไรก็ตามหากคุณต้องการแทนที่การตั้งค่าอื่น ๆ ให้ศึกษาคู่มือที่ยอดเยี่ยมสำหรับรายการที่ครอบคลุม:
man 5 dhclient.conf
มีตัวอย่างที่ดีที่ด้านล่างที่ควรให้คุณมีความคิดในสิ่งที่คุณสามารถทำได้ ปิดด้านบนของหัวของฉันฉันสามารถจินตนาการที่คุณอาจต้องการที่จะเพิ่มบางอย่างเช่นถ้าปกติคุณจะมีสายเช่นนั้นในของคุณsupersede domain-name "example.com";
resolv.conf
โปรดอ่านเอกสารอีกครั้ง
กำหนดค่า resolvconf
นี่เป็นทางออกที่ง่ายที่สุดถ้าคุณแค่อยากresolv.conf
อยู่คนเดียว ตามคู่มือ:
resolvconf manages resolv.conf(5) files from multiple sources, such as DHCP and VPN clients
การกำหนดค่าของมันอยู่ใน/etc/resolvconf.conf
ซึ่งอาจไม่มีอยู่ในระบบของคุณดังนั้นอย่าลังเลที่จะสร้างมันขึ้นมา เพื่อทำให้resolv.conf
ไม่เปลี่ยนรูปของคุณเพิ่ม:
# prevent all updates to resolv.conf:
resolv_conf="/dev/null"
หากคุณใช้unbound
เป็นตัวแก้ไขแคชในท้องถิ่นของคุณนั่นคือบรรทัดที่เพิ่มเข้ามา (พร้อมด้วยตัวของมันเอง) ที่พื้นหลอกresolvconf
เข้าไปในความคิดของคุณตั้งอยู่ที่/etc/resolv.conf
/dev/null
สิ่งที่มีความหมายน้อยกว่าเล็กน้อย แต่มีประสิทธิภาพเท่ากันคือ:
# disable resolvconf from running any subscribers:
resolvconf="NO"
หากคุณต้องการทำสิ่งที่ซับซ้อนกว่าเพียงแค่ปิดมันหน้าคนสำหรับresolvconf
และresolvconf.conf
มีข้อมูลมากมาย