Upozornění: Tvůrce softwaru Netcat neaktualizoval software od roku 2006. Technologie Rackspace proto nezaručuje, že kvalita Netcatu splní vaše očekávání.
Používání Netcat
Pokud vaše síťová služba nefunguje správně, ale víte, že služba naslouchá síťovému portu, můžete ověřit připojení programu a problém vyřešit.
Použijte příkaz Netcat, nc
pro přístup ke službě. Pokud provozujete distribuci založenou na Red Hat® a nemáte nc
nainstalován, zadejte na příkazový řádek následující příkaz:
$ sudo yum install nc`
Pro distribuci založenou na Debianu zadejte na příkazový řádek následující příkaz:
$ sudo apt-get install Netcat`
Základní test
Spusťte jednoduchý test a ověřte, zda port přijímá připojení.
Zadejte nc
na příkazovém řádku následovaný -vz
možnost s vaší IP adresou a portem:
$ nc -vz IP_address port
IP adresa by měla být ta, na které služba přijímá spojení.
Následující příklady ukazují možné výstupní zprávy:
Připojení bylo úspěšné
$ nc -vz 203.0.113.96 21
Connection to 203.0.113.96 21 port [tcp/ftp] succeeded!
Připojení je odmítnuto
$ nc -vz 203.0.113.96 80
nc: connect to 203.0.113.96 port 80 (tcp) failed: Connection refused
Na žádost o připojení není žádná odpověď
$ nc -vz 203.0.113.96 80
nc: connect to 203.0.113.96 port 80 (tcp) failed: Connection timed out
Připojení odmítnuto
Služba neběží nebo firewall odmítá připojení. Ověřte stav procesu spuštěním ps
na příkazovém řádku. Další možnosti naleznete v části Kontrola spuštěných služeb v systému Linux.
Poznámka: Pokud je vaše služba spuštěna, brána firewall může odmítnout připojení. Přečtěte si vypršel časový limit připojení v části s pokyny k odstraňování problémů s firewallem.
Vypršel časový limit připojení
Vypršel časový limit připojení odpověď znamená, že vaše připojení nefunguje, což může znamenat, že váš firewall blokuje port. Otestujte stav připojení přidáním pravidla, které přijímá připojení na požadovaném portu.
Následující příklad vloží pravidlo na řádek 1 vstupního řetězce, které přijímá všechna připojení TCP na portu 80
(HTTP). Toto pravidlo použijte při testování webového serveru, jako je Apache®.
$ sudo /sbin/iptables -I INPUT 1 -p tcp --dport http -j ACCEPT
Tabulky IP okamžitě odrážejí všechny provedené změny. Opakujte test s nc
abyste zjistili, zda došlo k nějaké změně v odpovědi.
Pokud chcete odstranit pravidlo, které jste přidali, můžete použít -D
možnost kombinovaná s pozicí pravidla v řetězci. Předchozí příklad přidal pravidlo na řádek 1, horní část řetězce. Následující příklad ukazuje, jak jej odstranit.
$ sudo /sbin/iptables -D INPUT 1
Aktuální konfiguraci brány firewall můžete kdykoli zkontrolovat spuštěním následujícího příkazu na příkazovém řádku:
$ sudo /sbin/iptables -L -v
Připojení bylo úspěšné
Pokud je počáteční připojení úspěšné, Netcat se může připojit ke službě. Podívejte se na připojení podrobněji.
Nejprve použijte -vt
možnost zjistit, zda služba může reagovat na základní síťové dotazy:
$ nc -vt IP Address Port
Pokud můžete posílat příkazy démonu služby a přijímat odpovědi, znamená to, že program je přístupný a váš problém může být způsoben konfigurací připojení klienta.
Po připojení otestujte službu a získejte odpověď. Službu můžete otestovat zasláním GET
požadavek na webový server nebo nějaká jiná vhodná data, která server vyzvou k odpovědi.
Uzavření připojení
Spojení můžete ukončit buď stisknutím Ctrl-C nebo zadejte příkaz quit specifický pro službu.
Můžete například ukončit připojení k protokolu přenosu souborů, FTP, serveru pomocí QUIT
příkaz:
$ nc -vt 203.0.113.96 21
Connection to 203.0.113.96 21 port [tcp/ftp] succeeded!
220 (vsFTPd 2.0.5)
$ QUIT
221 Goodbye.
Příkazy odmítnuty
Předpokládejme nc
hlásí úspěch, ale neumožňuje vám odesílat žádné příkazy, nebo dostanete odpověď od démona služby, že služba není dostupná. V takovém případě můžete mít obaly protokolu řízení přenosu, obaly TCP , poskytující řízení přístupu.
Služba FTP, která je blokována moduly TCP wrapper, může vypadat takto:
$ nc -vt 203.0.113.96 21
Connection to 203.0.113.96 21 port [tcp/ftp] succeeded!
421 Service not available.
Programy, které jsou kompatibilní s TCP wrappery, jsou kompilovány pomocí libwrap
. Chcete-li zkontrolovat, zda program může používat TCPwrappers, použijte následující příkaz:
$ ldd /path/to/binary | grep libwrap
Následující příklad kontroluje vsftpd
program pro libwrap
soubor sdílené knihovny.
ldd /usr/sbin/vsftpd | grep libwrap
libwrap.so.0 => /lib64/libwrap.so.0 (0x00007f62c734a000)
Pokud program není kompatibilní s TCP wrappery, předchozí grep
příkaz nic nevrací.
Kontrola protokolů
Blokované připojení vytvoří záznam protokolu. Zkontrolujte protokoly programu pro relevantní zprávy.
V vsftpd
logs, naleznete na /var/log/vsftpd.log , zablokované připojení kvůli tcp wrapperům vypadá jako následující příklad:
Tue Jun 7 16:14:21 2011 [pid 28599] CONNECT: Client "203.0.113.43", "Connection refused: tcp_wrappers denial."
hosts.deny
Soubor /etc/hosts.deny soubor vytvoří definici pro blokovaná připojení. Pokud máte potíže se zobrazením záznamu pro vaši službu v souboru, použijte grep
jej vyhledat.
Vyhledejte v souboru název programu spuštěním následujícího příkazu:
$ sudo grep "vsftpd" /etc/hosts.deny
vsftpd : ALL
Zkuste zakomentovat všechny problematické řádky pomocí křížku (#). Změny v tomto souboru se projeví automaticky – nemusíte restartovat žádné služby.
Všimněte si, že moduly TCP wrapper umožňují připojení ve výchozím nastavení, takže pokud je příčinou problému, musí existovat záznam v /etc/hosts.deny za službu. Soubor můžete přejmenovat /etc/hosts.deny dočasně odstranit všechna vaše pravidla odepření. Například spusťte sudo mv /etc/hosts.deny /etc/hosts.deny.old
. Všimněte si, že tento příkaz ovlivňuje všechny aplikace, které používají moduly TCP wrapper. Po dokončení testů jej v případě potřeby nezapomeňte změnit zpět.
Další vyšetřování
Pokud jste dokončili všechny testy v tomto článku, aniž byste zjistili nějaké problémy, služba pravděpodobně běží normálně. Dalším krokem je otestovat připojení k serveru pomocí ping
a traceroute
nástroje.