Netcat nebo nc je síťový nástroj pro ladění a zkoumání sítě.
Tento nástroj lze použít pro vytváření připojení TCP/UDP a jejich zkoumání. Největší využití této utility je ve skriptech, kde se potřebujeme vypořádat s TCP/UDP sockety.
V tomto článku se seznámíme s příkazem netcat na několika praktických příkladech.
1. Netcat v architektuře server-klient
Obslužný program netcat lze spustit v režimu serveru na zadaném portu naslouchajícím příchozím připojením.
$ nc -l 2389
Také jej lze použít v klientském režimu při pokusu o připojení na právě otevřeném portu (2389).
$ nc localhost 2389
Nyní, když napíšeme nějaký text na straně klienta, dostane se na stranu serveru. Tady je důkaz:
$ nc localhost 2389 HI, server
Na terminálu, kde běží server:
$ nc -l 2389 HI, server
Vidíme tedy, že nástroj netcat lze použít v komunikaci soketu klientského serveru.
2. Použijte Netcat k přenosu souborů
K přenosu souborů lze také použít nástroj netcat. Předpokládejme, že na straně klienta máme soubor s názvem „testfile“ obsahující :
$ cat testfile hello test
a na straně serveru máme prázdný soubor „test“
Nyní spustíme server jako :
$ nc -l 2389 > test
a spusťte klienta jako :
cat testfile | nc localhost 2389
Nyní, když vidíme „testovací“ soubor na konci serveru, vidíme :
$ cat test hello test
Vidíme tedy, že data souboru byla přenesena z klienta na server.
3. Netcat podporuje časové limity
Jsou případy, kdy nechceme, aby spojení zůstalo otevřené navždy. V takovém případě můžeme pomocí přepínače „-w“ určit časový limit připojení. Takže po sekundách zadaných spolu s parametrem -w je spojení mezi klientem a serverem ukončeno.
Server :
nc -l 2389
Klient :
$ nc -w 10 localhost 2389
Výše uvedené připojení by bylo ukončeno po 10 sekundách.
POZNÁMKA:Nepoužívejte příznak -w s příznakem -l na straně serveru, protože v takovém případě příznak -w nemá žádný účinek, a proto připojení zůstává navždy otevřené.
4. Netcat podporuje konektivitu IPV6
Parametr -4 nebo -6 určuje, že obslužný program netcat by měl používat který typ adres. -4 nutí nc používat adresu IPV4, zatímco -6 nutí nc používat adresu IPV6.
Server :
$ nc -4 -l 2389
Klient :
$ nc -4 localhost 2389
Nyní, když spustíme příkaz netstat, uvidíme :
$ netstat | grep 2389 tcp 0 0 localhost:2389 localhost:50851 ESTABLISHED tcp 0 0 localhost:50851 localhost:2389 ESTABLISHED
První pole ve výše uvedeném výstupu by obsahovalo příponu „6“ v případě, že se používají adresy IPV6. Protože v tomto případě tomu tak není, je spojení mezi serverem a klientem navázáno pomocí adres IPV4.
Nyní, pokud přinutíme nc používat adresy IPV6
Server :
$ nc -6 -l 2389
Klient :
$ nc -6 localhost 2389
Nyní, když spustíme příkaz netstat, uvidíme :
$ netstat | grep 2389 tcp6 0 0 localhost:2389 localhost:33234 ESTABLISHED tcp6 0 0 localhost:33234 localhost:2389 ESTABLISHED
Takže nyní postfix ‚6‘ s ‚tcp‘ ukazuje, že nc nyní používá adresy IPV6.
5. Zakázat čtení ze STDIN v Netcat
Této funkce lze dosáhnout pomocí parametru -d. V následujícím příkladu jsme použili tento příznak na straně klienta.
Server :
$ nc -l 2389
Klient :
$ nc -d localhost 2389 Hi
Text ‚Ahoj‘ nebude odeslán na konec serveru, protože pomocí volby -d bylo zakázáno čtení z stdin.
6. Vynutit Netcat Server, aby zůstal vzhůru
Pokud je klient netcat připojen k serveru a po nějaké době je klient odpojen, normálně se server netcat také ukončí.
Server :
$ nc -l 2389
Klient :
$ nc localhost 2389 ^C
Server :
$ nc -l 2389 $
Takže ve výše uvedeném příkladu vidíme, že jakmile byl klient odpojen, server byl také ukončen.
Toto chování lze ovládat pomocí parametru -k na straně serveru, který přinutí server zůstat v provozu i po odpojení klienta.
Server :
$ nc -k -l 2389
Klient :
$ nc localhost 2389 ^C
Server :
$ nc -k -l 2389
Vidíme tedy, že při použití volby -k server zůstává aktivní, i když je klient odpojen.
7. Nakonfigurujte klienta Netcat tak, aby zůstal vzhůru po EOF
Klient Netcat může být nakonfigurován tak, aby po přijetí EOF zůstal v provozu. V normálním scénáři, pokud klient nc obdrží znak EOF, pak se okamžitě ukončí, ale toto chování lze také ovládat, pokud je použit parametr -q. Tento příznak očekává číslo, které znázorňuje počet sekund čekání před ukončením klienta (po obdržení EOF)
Klient by měl být spuštěn takto:
nc -q 5 localhost 2389
Nyní, pokud klient někdy obdrží EOF, bude čekat 5 sekund, než se ukončí.
8. Použijte Netcat s protokolem UDP
Ve výchozím nastavení jsou všechny sokety, které utilita nc vytváří, protokoly TCP, ale tato utilita také pracuje s protokolem UDP. K povolení protokolu UDP se používá příznak -u.
Server :
$ nc -4 -u -l 2389
Klient:
$ nc -4 -u localhost 2389
Nyní jsou server i klient nakonfigurovány pro použití protokolu UDP. To lze potvrdit následujícím příkazem netstat. Vidíme tedy, že toto připojení nyní používá protokol UDP.
$ netstat | grep 2389 udp 0 0 localhost:42634 localhost:2389 ESTABLISHED