Jak łatwo sprawdzić otwarty port?

Dzisiejsze aplikacje rozłożone są na wiele serwerów. Front-end na jednym, silnik na innym, baza danych już na kolejnym serwerze – to standardowy scenariusz architektury. Do tego jeszcze dogadują się po przez API z innymi aplikacjami na jeszcze innych serwerach. Cały ten ruch korzysta z protokołów sieciowych, elementy aplikacji komunikują się na konkretnym adresie IP i dedykowanym porcie.

W pewnym momencie zdarzyć się może, że aplikacja przestanie działać lub zacznie sypać błędami, choć jeszcze przed chwilą wszytko działało jak należy. W takiej sytuacji jedną z opcji sprawdzenia przyczyny problemów jest zweryfikowanie czy zachodzi poprawnie komunikacja pomiędzy składnikami aplikacji na różnych serwerach. Musimy, między innymi, sprawdzić czy żądany port sieciowy jest otwarty czy może jednak jakiś firewall go blokuje. Szczególnie to ważne, gdy ostatnio mieliśmy roszady w sieci.  Można do tego użyć specjalnej aplikacji do skanowania portów w sieci. Jednak istnieje też prostszy i szybszy sposób by sprawdź czy port sieciowy jest otwarty – użyć po prostu klienta telnet.

Czym jest Telnet?

Telnet jest prostym protokołem komunikacyjnym, działa na zasadzie klient-serwer. Służy do zdalnego łączenia się z innym komputerem lub urządzeniem i zarządzania nim z poziomu linii poleceń. Telnet nie jest szyfrowany, dlatego obecnie nie powinien być stosowany do przesyłania poufnych danych. Wszelkie hasła przekazywane są zwykłym tekstem w sieci, więc łatwo je podejrzeć Wiresharkiem. Dlatego tu zastąpił go protokół SSH, który już oferuję możliwość szyfrowania tekstu. Telnet działa w TCP, UDP na porcie 23, natomiast SSH na porcie 22. To tak słowem wstępu, czym jest telnet. Jednak w tym przypadku nie będziemy się zbyt szczegółowo zajmować samym protokołem a posłużymy się jedynie jego klientem.

Telnet i Windows

Klient telnetu jest wbudowany w systemie Windows. Uruchom linie poleceń (CMD) i wpisz polecenie dowolne polecenie telnet nazwa_serwera. Jeśli zostanie zwrócony komunikat błędu, że polecenie nie jest rozpoznane, to należy włączyć (zaptaszkować) „Klienta telnet” w Panel Sterowania->Programy i funkcje->Funkcje systemu Windows.

Drugi sposób na włączenie funkcji klienta telnet w Windows to wykonanie polecenia (klawisz Win+R) lub wpisanie w CMD

pkgmgr /iu:”TelnetClient”

Trzeci sposób na użycie klienta telnet w Windows to skorzystanie z programu Putty. Jednak, jeśli chcemy prosto i szybko sprawdzić to uważam, że wywołanie klienta telnet z linii poleceń będzie najszybszym sposobem sprawdzenia otwartego portu aniżeli odpalanie dodatkowej aplikacji w tym celu. Choć oczywiście jeśli masz już Puttiego, to też możesz z niego skorzystać.

Telnet i Linux

W Linuksie klient telnet również łatwo zainstalować. W zależności od systemu, w terminalu wpisz polecenie: sudo apt install telnet dla Debiana, Ubuntu i pokrewnych systemów. A polecenie sudo yum install telnet dla RedHata, Centosa i Fedory.

Sprawdzamy otwarte porty

Jak wspomniałem wcześniej, telnet pracuje na porcie, 22 ale możemy użyć klienta telnetu do sprawdzania działania usługi na dowolnym innym porcie. Aby to zrobić, wystarczy podać w poleceniu numer portu na samym końcu. Na przykład, by przetestować czy możliwe jest połączenie dla usługi zdalnego pulpitu (Remote Desktop Connecion), czyli czy jest otwarty port 3389 (zakładając, że RDP pracuje na domyślnym porcie) wpisz polecenie:

telent nazwa_servera 3389

Nie uzyskamy w ten sposób ani połączenia z terminalem telnet, ani nie uruchomi nam się zdalny pulpit. Jednak magia, która się zadzieje da nam odpowiedzi czy port jest otwarty i czy połączenie jest możliwe.

Jeśli jako odpowiedzi dostawmy komunikat błędu w stylu
„Could not open connection to the host, on port 3389: Connect failed”. Oznacza to, że połączenie nie jest możliwe. Port jest zamknięty, usługa jest wyłączona na danym porcie, blokuje połączenie firewall lub inne powody uniemożliwiają komunikacje.

Nie można nawiązać żadnego połączenia. Port najprawdopodobniej jest zamknięty, zablokowany lub usługa jest wyłączona.

Natomiast, jeśli po wykonaniu polecenia pojawi się migający kursor _ to oznacza ze dany port jest otwarty i komunikacja jest możliwa pomiędzy naszym hostem a wskazanym serwerem na danym porcie.

Sukces! Migający kursor oznacza że komunikacja jest możliwa na z danym serwerem na danym porcie.

Użycie klienta telnetu do sprawdzenia portu jest wyjątkowo przydatne w namierzaniu przyczyn problemów (troubleshootingu) w sieci, komunikacji czy dostępności usług. Jedno krótkie polecenie daje nam już sporo informacji.  

Polecana literatura: