คุณเจอ 'No Route to Host' ในขณะที่พยายามเข้าถึงเซิร์ฟเวอร์บน Linux หรือไม่? ข้อผิดพลาดในการเชื่อมต่อบริการนี้อาจเป็นที่น่ารำคาญ แต่คุณสามารถแก้ไขได้เมื่อคุณระบุสาเหตุ
'No Route to Host' หมายถึงปัญหาเครือข่ายโดยปกติจะเป็นข้อความที่แสดงขึ้นเมื่อเซิร์ฟเวอร์หรือโฮสต์ไม่ตอบสนอง ปัญหานี้อาจเกิดขึ้นเนื่องจากปัญหาเครือข่ายหรือการตั้งค่าที่ไม่เหมาะสม
การตั้งค่าเครือข่ายของคุณถูกต้องหรือไม่?
ก่อนที่เราจะดูสาเหตุที่เฉพาะเจาะจงมากขึ้นสำหรับปัญหานี้โปรดตรวจสอบว่าการตั้งค่าเครือข่ายของคุณถูกต้อง คุณสามารถเชื่อมต่อกับเว็บได้หรือไม่? DNS ของคุณมีการกำหนดค่าอย่างถูกต้องหรือไม่?
เรียกใช้คำสั่งนี้เพื่อค้นหา:
systemd-resolve -status
ถ้าคุณพบปัญหา DNS ใด ๆ ที่นั่นให้กลับไปที่การกำหนดค่าเครือข่ายของคุณและทำซ้ำใหม่หากจำเป็นต้องทำ หากคุณใช้เครือข่ายมาตรฐานที่มี IP แบบไดนามิกหมายเลข DNS ควรอัปเดตโดยอัตโนมัติ
หากต้องการกำหนดค่า DNS ด้วยตนเองให้ไปที่ Network Manager และป้อนที่อยู่ IP ด้วยตนเองในแท็บ IPv4
หากการแจกจ่าย Linux ของคุณไม่มีเดสก์ท็อปแบบกราฟิกให้ไปที่ "/etc/systemd/resolved.conf." และค้นหาบรรทัด DNS
เปลี่ยนหมายเลขด้วยหมายเลขของ DNS ที่คุณต้องการและกำหนดค่าอื่น ๆ หากต้องการ
นอกจากนี้หากคุณได้ตั้งค่า IP แบบคงที่คุณอาจต้องการเปลี่ยนกลับเป็น IP แบบไดนามิกและให้เครือข่ายของคุณได้รับข้อมูลการเชื่อมต่อผ่าน DHCP
อย่าลืมรีสตาร์ทเครื่องคอมพิวเตอร์ก่อนลองเชื่อมต่อกับโฮสต์อีกครั้ง หากคุณยังคงได้รับ 'No Route to Host' ให้อ่านต่อไป
Host Server Online คืออะไร?
ขั้นตอนต่อไปคือการตรวจสอบว่าโฮสต์ที่คุณกำลังพยายามเชื่อมต่ออยู่จริงออนไลน์หรือไม่ เพราะเหตุใดสาเหตุหนึ่งที่เกิดขึ้นบ่อยที่สุดสำหรับข้อผิดพลาดคือบริการไม่ทำงานเนื่องจากการบำรุงรักษาหรือปัญหาอื่น ๆ
ถ้าบริการไม่ได้ออนไลน์ตรวจสอบว่าโฮสต์เป็นหรือไม่ บางครั้งบริการอาจหยุดทำงานหรือไม่ได้เริ่มต้นด้วยแม้ว่าจะมีอะไรผิดพลาดกับเซิร์ฟเวอร์
ใช้ systemd เรียกใช้คำสั่ง ...
ชื่อระบบ sudo systemctl servicename
ถ้าบริการกำลังทำงานอยู่คุณจำเป็นต้องค้นหาสาเหตุอีก
คุณเชื่อมต่อกับพอร์ตที่ถูกต้องหรือไม่?
ตรวจสอบเอกสารที่โฮสต์อาจให้ไว้ เป็นเรื่องปกติสำหรับผู้จัดการเซิร์ฟเวอร์เพื่อล็อคพอร์ตที่ไม่ได้ใช้เพื่อปรับปรุงความปลอดภัยของเซิร์ฟเวอร์ ผู้โจมตีมักใช้พอร์ตทั่วไปในการกำหนดเป้าหมายบริการ Linux
ถ้าคุณกำลังพยายามเชื่อมต่อกับเซิร์ฟเวอร์ของคุณเองคุณสามารถตรวจสอบย้อนกลับไปยังพอร์ตที่ถูกต้องได้ ในการดำเนินการนี้คุณต้องติดตั้งเครื่องมือรักษาความปลอดภัยที่สามารถช่วยให้คุณเห็นพอร์ตที่เปิดอยู่ - NMAP
ต่อไปนี้คือคำสั่งสำหรับการติดตั้ง NMAP ในเวอร์ชันต่างๆ
CentOS: yum install nmap
Debian: apt-get install nmap
Ubuntu: sudo apt-get ติดตั้ง nmap
เมื่อคุณติดตั้ง NMAP แล้วให้ตรวจสอบเพื่อดูพอร์ตที่เปิดโดยใช้คำสั่งต่อไปนี้:
sudo nmap -sS target-server-ip
ถ้าคุณไม่สามารถเข้าถึงเซิร์ฟเวอร์ได้โดยตรงคุณจะต้องติดต่อโฮสต์ แต่ก่อนที่คุณจะทำเช่นนั้นลองดูสาเหตุอื่น ๆ ที่เป็นไปได้สำหรับข้อผิดพลาด "No Route to Host" ใน Linux
Host Name ถูกต้องหรือไม่?
นอกจากนี้คุณอาจได้รับข้อผิดพลาด "No Route to Host" หากคอมพิวเตอร์และเซิร์ฟเวอร์ที่คุณกำลังพยายามเชื่อมต่อเพื่อใช้ชื่อโฮสต์อื่น เครื่องทั้งสองเครื่องควรได้รับการกำหนดค่าให้เชื่อมต่อกัน
นอกเหนือจากการกำหนดค่าโฮสต์ตามปกติแล้วคุณต้องการให้ความสนใจกับไฟล์ hosts.deny และ hosts.allow ใน "/ etc" หากคุณกำลังพยายามเชื่อมต่อกับเซิร์ฟเวอร์ใหม่โปรดตรวจสอบว่าได้ชื่อโฮสต์ของเซิร์ฟเวอร์ถูกต้อง
iptables มีการบล็อกการเชื่อมต่อหรือไม่?
iptables มีประโยชน์อย่างยิ่งเมื่อคุณต้องการกำหนดค่า Linux firewall kernel tables การควบคุมแบบเต็มรูปแบบจะช่วยให้คุณได้รับการเข้าชมที่มาและออกจากคอมพิวเตอร์ได้ดีเยี่ยม
แต่ด้วยข้อผิดพลาดในการกำหนดค่าอย่างง่าย iptables สามารถบล็อกการเชื่อมต่อกับพอร์ตที่คุณต้องการเข้าถึงและก่อให้เกิดข้อผิดพลาด "No Route to Host"
เมื่อต้องการตรวจสอบว่า iptables มีข้อผิดพลาดให้เรียกใช้คำสั่งต่อไปนี้:
sudo iptables -S
ดูว่ากฎของ iptables ที่คุณตั้งไว้ป้องกันการเชื่อมต่อ คุณอาจต้องเพิ่มกฎการยอมรับเข้ากับห่วงโซ่ INPUT เริ่มต้น
หากต้องการล้างกฎไฟร์วอลล์สำหรับไฟร์วอลล์ภายนอกคุณสามารถใช้คำสั่งนี้ได้:
iptables -F
ปิดความคิด
อย่างที่คุณเห็นอาจใช้เวลาสักครู่เพื่อไปที่ด้านล่างของข้อผิดพลาด "No Route to Host" แต่ขั้นตอนข้างต้นจะช่วยคุณได้ แม้ว่าปัญหาอาจมีลักษณะเป็นปัญหาที่ซับซ้อน แต่มักเกิดจากการกำหนดค่าที่ขัดแย้งกันหรือปัญหาเกี่ยวกับเครือข่ายที่เรียบง่าย
คุณเจอสาเหตุอื่น ๆ ที่อาจเกิดขึ้นและแก้ไขข้อผิดพลาดนี้หรือไม่? ฝากความคิดเห็นและบอกเราเกี่ยวกับเรื่องนี้