การแก้ไขปัญหา Debian Linux DNS Resolution
สถานการณ์
คุณลงชื่อเข้าใช้ระบบ Linux เปิดเทอร์มินัล เรียกใช้sudo apt update และ BOOOM!
Could not resolve hostname: ...
อย่าตื่นตกใจ! นี่เป็นเรื่องง่าย เผชิญกับปัญหานี้โดยให้หน้าอกของคุณออกมาเหมือนผู้ชายและแก้ไขมัน!
แล้วเราจะทำอย่างไรและอะไรเป็นสาเหตุของปัญหานี้ในตอนแรก ?
ไม่ใช่เรื่องง่ายที่จะทำให้สาเหตุของปัญหานี้เป็นสากล เนื่องจากแต่ละกรณีเป็นรายบุคคล แต่สำหรับการสาธิตในบทความนี้ ฉันจะใช้กรณีส่วนตัวของฉันและอธิบายวิธีการแก้ไขปัญหาและแก้ไขปัญหาในภายหลัง
ดังนั้นในกรณีของฉันหลังจากอัปเดตและอัปเกรดฉันsystemd-resolved.serviceก็หยุดทำงาน นี่คือเหตุผลที่คุณควรสำรองข้อมูลไว้เสมอ เพราะการอัปเดตอาจทำให้สิ่งต่างๆ เสียหายได้ ไม่มีอะไรสมบูรณ์แบบ แม้แต่ Linux
ฉันจะไม่ลงรายละเอียดมากเกินไปว่าคือsystemdอะไร ในระดับที่สูงมากsystemdเป็น daemon แรกที่เริ่มต้นเมื่อเคอร์เนล Linux บูทและสุดท้ายจะสิ้นสุดเมื่อระบบปิด
สิ่งที่อาจเกิดขึ้นในกรณีของฉันคือsystemdไม่ได้เริ่มต้นตัวแก้ไข DNS อย่างถูกsystemd-resolvedต้อง
อาจมีหลายวิธีในการแก้ปัญหานี้และฉันจะแสดงให้คุณเห็นสองวิธี
รีสตาร์ทตัวแก้ไข DNS
- อันดับแรก สิ่งที่คุณสามารถทำได้คือการตรวจสอบว่า
systemd-resolvedบริการเริ่มต้นอย่างถูกต้องเมื่อบู๊ตเครื่องหรือไม่ คุณสามารถผ่านบันทึกของระบบสำหรับสิ่งนั้น:
journalctl | grep resol
systemctl status systemd-resolved | grep running
Active: active (running) since DATE & TIME
3. เพื่อให้แน่ใจว่าทุกอย่างทำงานได้อย่างถูกต้อง คุณควรตรวจสอบว่า DNS cacher กำลังฟังพอร์ต 53 ของ localhost ดังนี้:
sudo netstat -tulpn | grep LISTEN
tcp 0 0 127.0.0.54:53 0.0.0.0:* LISTEN PID/systemd-resol
tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN PID/systemd-resol
tcp6 0 0 :::5355 :::* LISTEN PID/systemd-resol
หากคุณไม่เห็นสิ่งเหล่านี้ทั้งหมด คุณควรเริ่มบริการตัวแก้ไข DNS ใหม่ด้วยคำสั่งนี้:
sudo systemctl stop systemd-resolved && sudo systemctl start systemd-resolved
ตอนนี้เข้าสู่ตัวเลือกที่สอง
หยุดและปิดใช้งาน systemd-resolved และใช้เราเตอร์/ISP ของคุณเป็นตัวแก้ไข DNS
หากวิธีแก้ปัญหาก่อนหน้านี้ไม่ได้ผลและคุณไม่อยากเจาะลึกลงไปในปัญหาและกำลังมองหาวิธีบายพาสแบบง่ายๆ สิ่งที่คุณสามารถทำได้คือปิดใช้งานและแก้ไขไฟล์การกำหนดค่า DNS systemd-resolvedใน/etcโฟลเดอร์เพื่อเปลี่ยนเส้นทางการสืบค้น DNS ใดๆ โดยตรงไปยัง เราเตอร์ / เกตเวย์ที่บ้านของคุณซึ่งจะจัดการส่วนที่เหลือ
Please make sure that your router is pointing to a valid DNS server in it's settings. Otherwise this solution will not work.
ตอนนี้คุณจะหยุดและปิดใช้งานได้systemd-resolvedอย่างไร และทำไมไม่เพียงแค่หยุด แต่ปิดการใช้งานด้วย
ฉันไม่รู้ว่าคุณจำตอนที่ฉันอธิบายสั้น ๆ ว่าsystemdทำอะไรได้บ้างในบทความนี้ แต่ถ้าคุณคุ้นเคยกับ Windows คุณก็น่าจะรู้ว่ามันStartup Programsคือ อะไร
มีsystemdความคล้ายคลึงกันในจุดประสงค์ เป็นโปรแกรมแรกในแผนผังกระบวนการของระบบลีนุกซ์ นอกจากนี้ยังรับผิดชอบในการเริ่มต้นบริการที่จำเป็นทั้งหมดของระบบปฏิบัติการเพื่อให้ทำงานได้อย่างถูกต้อง
และเช่นเดียวกับใน Windows คุณสามารถเปิดใช้งานและปิดใช้งานบริการตั้งแต่เริ่มระบบเมื่อบูตเครื่อง
เพื่อหลีกเลี่ยงการจัดการอย่างสมบูรณ์systemd-resolvedเราจะหยุดและป้องกันไม่ให้รีสตาร์ทหลังจากรีบูตด้วย
นี่คือวิธีการ:
sudo systemctl stop systemd-resolved && sudo systemctl disable systemd-resolved
sudo systemctl enable systemd-resolved
- เปิดไฟล์ด้วยโปรแกรมแก้ไขข้อความที่เรียกว่า
nano
sudo nano /etc/resolv.conf
เพียงทำตามไวยากรณ์เดียวกัน: nameserver DNS_SERVER_IPv4.
การเปลี่ยนแปลงจะมีผลทันทีหลังจากที่คุณบันทึกไฟล์ และคุณพร้อมที่จะท่องอินเทอร์เน็ตอีกครั้ง
ขอบคุณที่อ่านบทความทั้งหมด ฉันขอบคุณมาก หากคุณมีข้อเสนอแนะใด ๆ โปรดอย่าลังเลที่จะติดต่อฉัน





































![รายการที่เชื่อมโยงคืออะไร? [ส่วนที่ 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)