Когато се опитвате да се свържете с услуга в Linux, "Няма маршрут за хост" е едно от последните неща, които искате да чуете. Това е широко съобщение, което означава, че компютърът ви не може да достигне до целевия сървър.

Поради широкия характер на посланието има няколко възможности, които биха могли да го причинят.

Гостът е офлайн / услугата не се изпълнява

Може да изглежда болезнено очевидно, но първо трябва да проверите дали сървърът, до който се опитвате да се свържете, е дори онлайн. Може да е бил свален за поддръжка или да има проблеми.

Самата услуга може да не е започнала. Ако това е вашият сървър, можете да проверите дали услугата е стартирана и работи правилно. За да направите това с Systemd, изпълнете следната команда.

 sudo systemctl статус на услугата 

Грешен порт

Може да се опитвате да се свържете с неправилния порт. Много системни администратори избират да пускат често определени услуги като SSH на различни пристанища, за да попречат на бъдещите нападатели.

Ако сървърът не е ваш, проверете наличната документация или се свържете с услугите за поддръжка.

За собствения си сървър можете да опитате да използвате NMAP, за да разберете къде сте започнали услугата си.

 sudo nmap -sS your.server.ip 

Ако смятате, че сте използвали наистина неясен порт, можете да използвате -p- да ги сканирате всички. Това ще отнеме известно време.

Iptables блокира връзката

Възможно е случайно да сте конфигурирали iptables, за да блокирате връзките на това пристанище. Ще получите едно и също съобщение, независимо дали сте конфигурирали iptables на сървъра или работния плот, така че си заслужава да проверите и двете. За да видите правилата на iptables, изпълнете следната команда.

 sudo iptables -S 

Вашият DNS е неправилно конфигуриран

Ако всичко останало е неуспешно, трябва да опитате да пишете IP адреса, към който искате да се свържете. Възможно е компютърът ви да не се свързва правилно с DNS сървър.

 ping -c3 your.server.ip 

Ако пинг работи, но свързва име на домейн, не гледате проблем с DNS.

Системните потребители могат да изпълняват systemd-resolve --status да проверят DNS сървърите, които използва вашата система. Той се разбива по интерфейс, така че не забравяйте да проверите този, към който се опитвате да се свържете.

В повечето случаи компютърът ви ще открие съответната информация за DNS през DHCP. Ако използвате статична IP или нещо в мрежата ви е конфигурирано по различен начин, може да се наложи да зададете DNS ръчно.

Отворете "/etc/systemd/resolved.conf". В този файл отключете DNS реда и добавете IP адреса на вашия маршрутизатор или друг известен DNS сървър. Основният резервен DNS за Systemd е DNS сървърите на Google, изброени под FallbackDNS .

 DNS = 192.168.1.1 

Ако използвате OpenRC или друга алтернатива на Systemd, можете да намерите информацията за DNS в "/etc/resolv.conf".

 nameserver 192.168.1.1 

Ако няма нищо там, въведете IP адреса на вашия маршрутизатор или друг известен DNS сървър, който предпочитате да използвате.

След това, рестартирайте мрежата или целия си компютър.

Пътят на графичния интерфейс

Ако използвате графичен работен плот с мрежовия мениджър, можете да редактирате информацията за връзката по този начин. Отворете аплет или преминете през системните настройки. Изберете връзката си и намерете раздела "IPv4". Превключете връзката към "Ръчно" и ръчно въведете IP адреса на компютъра си и IP адреса на маршрутизатора като шлюз. След това в полето DNS по-долу въведете IP адреса на рутера или IP адреса на друг DNS сървър.

Неправилна конфигурация на мрежа или домакин

Има няколко други опции за конфигуриране, които може да са неправилни. Всеки от тях би направил невъзможно компютърът ви да се свърже със сървъра.

Първо се уверете, че мрежовата конфигурация на вашия компютър е правилна. Проверете отново самите конфигурационни файлове и, разбира се, вижте дали можете да се свържете с интернет по друг начин.

Ако използвате конкретно име на хост, за да се свържете или сте настроили определени хостове на сървъра или клиента, трябва да се уверите, че и двете устройства могат да се свързват помежду си. Проверете конфигурациите на "/ etc / hosts", "/etc/hosts.allow" "/etc/hosts.deny."

Накрая проверете конфигурацията на сървъра си. Нещо може да бъде неправилно конфигурирано на сървъра, което не позволява на клиентите да се свързват правилно.

Докато се забивате точно причината за "Няма маршрут за хост" не е толкова лесно, можете да следвате тези стъпки, за да изключите най-честите причини за грешката и да я отстраните.