Úvod
Jednou z největších výhod používání Linux je nepřeberné množství užitečných nástrojů, které poskytuje. Funkce vestavěné v programech obvykle většině programátorů k práci stačí. To znamená, že po většinu času nebudete muset stahovat externí programy a software. Vestavěné nástroje vám poskytnou dostatečnou užitečnost. Mezi tyto užitečné funkce patří nástroj netcat.
Pokud jde o svět síťových nástrojů, netcat je tak trochu naddimenzovaná zbraň. Je to neuvěřitelně všestranný příkaz, který můžete použít k mnoha účelům. Tento jediný nástroj můžete použít například k monitorování, testování i přenosu všech druhů souborů a dat přes připojení vašeho systému. V této příručce prozkoumáme, jak všechny tyto akce provést na VPS pomocí netcat.
Hledání Netcatu
Netcat je obvykle dostupný ve všech moderních distribucích Linuxu. To znamená, že ho s největší pravděpodobností již máte a nemusíte ho složitě instalovat. V našem návodu budeme používat Ubuntu 12.04 VPS. Můžete nainstalovat svůj vlastní server Ubuntu podle našeho návodu. Ubuntu se obvykle dodává s BSD variantou nástroje netcat. Mějte na paměti, že pokud máte jinou verzi, může fungovat trochu jinak.
Projdeme si základní syntaxi
Začneme tím, že se seznámíme s obecnou syntaxí, která v nástroji netcat funguje. Netcat můžete ovládat spuštěním TCP připojení. Připojení musí být navázáno se vzdáleným hostitelem. Zde je základní syntaxe pro netcat:
|
1 |
netcat [volby] hostitel port |
Tento příkaz se pokusí navázat TCP připojení ke vzdálenému hostiteli. Ke kterému hostiteli se připojí, závisí na čísle portu, které v příkazu zadáte. Připojení bude nešifrované. Jak vidíte, tento příkaz funguje podobně jako příkaz telnet.
Na druhou stranu můžete také iniciovat UDP připojení. Chcete-li místo TCP odeslat UDP paket, musíte použít volbu -u. Vypadalo by to takto:
|
1 |
netcat -u hostitel port |
Pokud si přejete, můžete také zadat rozsah portů. Chcete-li to provést, musíte mezi první a poslední port vložit pomlčku. Zde je příklad:
|
1 |
netcat hostitel počáteční_port-koncový_port |
K tomu můžete přidat i další příznaky. Další věc, kterou je třeba poznamenat, je, že můžete zaměnitelně používat netcat a nc. Spustí stejný příkaz, což znamená, že jsou svými vzájemnými aliasy.
Použití Netcatu pro skenování portů
Na začátek prozkoumejme jedno z nejčastějších použití netcatu. Ukážeme si, jak jej použít jako skener portů. Ve většině situací je lepší použít nástroj jako nmap. Pokud však potřebujete provést pouze jednoduché skenování portů, pak je netcat užitečný. Pomůže vám snadno identifikovat otevřené porty.
Chcete-li použít netcat jako skener portů, musíte uvést rozsah portů. Provedete to pomocí volby -z. Systém tak prohledá rozsah portů, místo aby se pokoušel o připojení. Řekněme, že chceme skenovat port 1 až port 1000:
|
1 |
netcat -z -v doména.com 1-1000 |
Kromě příkazu -z jsme použili také volbu -v. Ta nám umožňuje poskytnout příkazu více informací. Umožňuje nám to být více „upovídaní“ (verbose).
Na oplátku získáte výstup jako tento:

Výstup zobrazuje spoustu informací pro každý jednotlivý port. Znáte stav připojení každého portu. Na druhou stranu můžete místo názvu domény použít IP adresu, pokud ji znáte. To celý proces výrazně urychlí. Zde je příklad:
|
1 |
netcat -z -n -v 198.51.100.0 1-1000 |
Použili jsme příznak -n, abychom naznačili, že systém potřebuje k překladu IP adresy použít DNS.
Návratové zprávy se obvykle posílají na standardní chybový výstup. Chcete-li výsledky odfiltrovat rychleji, můžete je přesměrovat na standardní výstup. K tomu použijeme bash syntaxi 2>&1. Následně výsledky odfiltrujeme pomocí grep. Pojďme to aplikovat na náš příklad:
|
1 |
netcat -z -n -v 198.51.100.0 1-1000 2>&1 | grep uspělo |
Výstup bude vypadat podobně jako tento:
![]()
Výstup ukazuje, že v daném rozsahu je pro připojení otevřen pouze port 22. Port 22 je shodou okolností tradiční port SSH.
Komunikace přes Netcat: Jak to funguje?
Dále se podíváme na to, jak můžete netcat použít k odesílání paketů TCP a UDP. Nejen to, ale dokáže také přijímat pakety na různých portech. Díky této schopnosti můžete použít dvě instance netcatu k vytvoření vztahu klient-server. Na začátku určíte klienta a server. Po počáteční konfiguraci mohou oba klienti odesílat a přijímat pakety v obou směrech.
Samozřejmě budete muset nakonfigurovat netcat na jednom systému tak, aby naslouchal připojení na jednom portu. K tomu musíte použít parametr -l. Pomocí něj si můžete vybrat požadovaný port takto:
|
1 |
netcat -l 4444 |
Nyní bude TCP na tomto stroji naslouchat připojením na portu 4444. Je třeba poznamenat, že pokud nejste uživatel root nebo jste běžný uživatel, nebudete mít přístup k portům pod 1000.
Dále musíte nakonfigurovat druhý stroj pro navázání připojení. Použijete stejné číslo portu a zadáte konkrétní doménové jméno takto:
|
1 |
netcat domain.com 4444 |
Spuštění tohoto příkazu vám neposkytne žádný výstup. Naváže však připojení. To znamená, že můžete začít posílat zprávy z jednoho serveru na druhý. Chcete-li to provést, stačí napsat zprávu a stisknout klávesu ENTER. Zpráva se zobrazí na obou obrazovkách.
Jakmile budete hotovi, můžete připojení TCP ukončit stisknutím kláves CTRL+D.
Můžete posílat soubory pomocí Netcatu?
Dále vám ukážeme, jak můžete posílat soubory přes netcat. Pomocí připojení TCP můžete posílat zprávy i jiné druhy dat. Pro začátek musíte vybrat jeden stroj, který bude naslouchat připojení. Místo vypisování informací v příkazu je však umístíme do souboru takto:
|
1 |
netcat -l 4444 > received_file |
Na druhém stroji budete muset vytvořit nový textový soubor. Zde je příkaz, který použijete:
|
1 |
echo "Ahoj, toto je soubor" > original_file |
Chcete-li soubor přenést, použijete jej jako vstup pro připojení na počítači, který naslouchá:
|
1 |
netcat domain.com 4444 < original_file |
Na druhém počítači se zobrazí nový soubor s názvem „received_file“. Bude obsahovat všechny informace, které jsme napsali:
|
1 |
cat received_file |
Tento nástroj můžete použít a proměnit jej v program pro přenos souborů. Řekněme, že chcete přenést obsah adresáře. Provedeme to vytvořením nepojmenovaného tarballu, který přeneseme do systému a rozbalíme do vzdáleného adresáře. Na druhém stroji se musíme připravit na příjem souboru. Víme, že jej budeme muset rozbalit a extrahovat. Chcete-li to provést, zadejte tento příkaz:
|
1 |
netcat -l 4444 | tar xzvf - |
Pomlčka značí, že tar bude pracovat se standardním vstupem. Ten pochází z netcatu na výchozím serveru, když jsme navázali počáteční připojení.
Nakonec můžeme obsah celého adresáře vložit do tarballu a poslat jej přes netcat takto:
|
1 |
tar -czf - * | netcat domain.com 4444 |
Pomlčka v příkazu tar ukazuje, že systému říkáme, aby zabalil a zkomprimoval obsah adresáře. Také mu dává pokyn k zápisu výsledku na standardní výstup. Soubor projde přes TCP připojení na druhý konec. Přijímající server jej dekomprimuje a uloží do aktuálního vzdáleného adresáře.
Stejně tak můžete přes netcat přenášet i jiné druhy dat. Mnoho lidí používá příkaz dd k vytváření obrazů disků a jejich přenosu. Další způsob přenosu dat a souborů naleznete v našem návodu, který ukazuje, jak zajistit bezpečnost při přenosu souborů pomocí SFTP.
Použití Netcatu jako webového serveru
Další užitečnou funkcí netcatu je, že jej můžete použít k testování svých stránek. Řekněme, že používáme server k vytvoření HTML souboru, jako je tento:
|
1 |
nano index.html |
Toto je HTML kód, který soubor obsahuje:
|
1 2 3 4 5 6 7 8 9 10 |
<html> <head> <title>Testovací stránka</title> </head> <body> <h1>Nadpis úrovně 1</h1> <h2>Podnadpis</h2> <p>Zde je běžný text</p> </body> </html> |
Vložte toto do souboru, poté jej uložte a zavřete. Port 80 je obvykle výchozím webovým portem. Jako běžný uživatel bez oprávnění root zvolíme port 8888. Za předpokladu, že chcete stránku poskytnout a zkontrolovat pouze jednou, použijte tento příkaz:
|
1 |
printf 'HTTP/1.1 200 OK\n\n%s' "$(cat index.html)" | netcat -l 8888 |
Chcete-li zobrazit obsah souboru, přejděte do svého prohlížeče. Navštivte následující:
|
1 |
http://server_IP:8888 |
Uvidíte stránku, kterou jste vytvořili pomocí HTML souboru:

Jakmile stránku načtete, připojení netcat se ukončí. To znamená, že obnovení stránky vám místo obsahu zobrazí chybu. Je to proto, že jsme jej nakonfigurovali tak, aby stránku poskytl pouze jednou. Pokud chcete nadále přijímat připojení a zobrazovat stránku neomezeně, použijte jiný kód:
|
1 |
while true; do printf 'HTTP/1.1 200 OK\n\n%s' "$(cat index.html)" | netcat -l 8888; done |
Zde jsme poslední příkaz zabalili do nekonečné smyčky. Pokud chcete smyčku zastavit, stačí stisknout CTRL-C. Nyní můžete pokračovat v prohlížení své stránky a jejího vykreslení i po ukončení prvního připojení. Toto je však maximální funkčnost, kterou můžete z nástroje netcat jako webového serveru získat. Nepokoušejte se jej používat k provozování skutečných webových stránek, protože neposkytuje žádné zabezpečení. Místo toho se můžete podívat na naše návody na jak nainstalovat software webového serveru, jako je Nginx nebo Apache.
Závěr
V tomto návodu jsme se věnovali nástroji netcat a prozkoumali jeho všestrannost jako nástroje v systému Ubuntu. Jak jsme si ukázali v předchozích částech, můžete jej použít pro účely komunikace, přenosu dat a poskytování stránek. Funguje skvěle pro rychlou interakci mezi servery prostřednictvím TCP/UDP připojení. Je to velmi užitečná funkce pro spoustu základních funkcí a diagnostiku.
Příjemnou práci s počítačem!
Komentáře
Zatím žádné komentáře. Buďte první.