Úvod
Jednou z najväčších výhod používania Linux je množstvo užitočných nástrojov, ktoré poskytuje. Funkcie zabudované v programoch zvyčajne väčšine programátorov stačia na vykonanie ich práce. To znamená, že vo väčšine prípadov nebudete musieť sťahovať externé programy a softvér. Vstavané nástroje vám poskytnú dostatočnú funkčnosť. Medzi tieto užitočné funkcie patrí aj nástroj netcat.
Pokiaľ ide o svet sieťových nástrojov, netcat je niečo ako mimoriadne silná zbraň. Je to neuveriteľne všestranný príkaz, ktorý môžete použiť na viacero účelov. Tento jediný nástroj môžete použiť napríklad na monitorovanie, testovanie, ako aj prenos všetkých druhov súborov a dát cez pripojenia vášho systému. V tejto príručke preskúmame, ako vykonať všetky tieto akcie na VPS pomocou netcat.
Hľadanie Netcatu
Netcat je zvyčajne dostupný vo všetkých moderných distribúciách Linuxu. To znamená, že ho s najväčšou pravdepodobnosťou už máte a nemusíte ho zložito inštalovať. V našom návode budeme používať Ubuntu 12.04 VPS. Môžete nainštalovať svoj vlastný server Ubuntu podľa nášho návodu. Ubuntu sa zvyčajne dodáva s BSD variantom nástroja netcat. Majte na pamäti, že ak máte inú verziu, môže fungovať trochu inak.
Prehľad základnej syntaxe
Začneme tým, že sa oboznámime so všeobecnou syntaxou, ktorá funguje v nástroji netcat. Netcat môžete spustiť nadviazaním TCP pripojenia. Pripojenie musí byť iniciované na vzdialeného hostiteľa. Tu je základná syntax pre netcat:
|
1 |
netcat [možnosti] hostiteľ port |
Tento príkaz sa pokúsi nadviazať TCP pripojenie k vzdialenému hostiteľovi. To, ku ktorému hostiteľovi sa pripojí, závisí od čísla portu, ktoré zadáte v príkaze. Pripojenie bude nešifrované. Ako môžete vidieť, tento príkaz funguje podobne ako príkaz telnet.
Na druhej strane môžete tiež iniciovať UDP pripojenie. Ak chcete namiesto TCP odoslať UDP paket, musíte použiť voľbu -u. Vyzeralo by to takto:
|
1 |
netcat -u hostiteľ port |
Ak si želáte, môžete tiež špecifikovať rozsah portov. Ak to chcete urobiť, musíte medzi prvý a posledný port vložiť pomlčku. Tu je príklad:
|
1 |
netcat hostiteľ startport-endport |
K tomu môžete pridať aj ďalšie príznaky. Ďalšia vec, ktorú treba poznamenať, je, že netcat a nc môžete používať zameniteľne. Spustia rovnaký príkaz, čo znamená, že sú to vzájomné aliasy.
Použitie Netcatu na skenovanie portov
Na začiatok preskúmajme jedno z najbežnejších použití nástroja netcat. Ukážeme si, ako ho použiť ako skener portov. Vo väčšine situácií je lepšie použiť nástroj ako nmap. Ak však potrebujete vykonať len jednoduché skenovanie portov, netcat je užitočný. Pomôže vám ľahko identifikovať otvorené porty.
Ak chcete použiť netcat ako skener portov, musíte uviesť rozsah portov. Urobíte to pomocou voľby -z. Systém tak namiesto pokusu o pripojenie naskenuje rozsah portov. Povedzme, že chceme skenovať porty od 1 do 1000:
|
1 |
netcat -z -v domain.com 1-1000 |
Okrem príkazu -z sme použili aj voľbu -v. Tá nám umožňuje poskytnúť príkazu viac informácií. Umožňuje nám to byť viac „ukecanými“ (verbose).
Ako výsledok dostanete takýto výstup:

Výstup zobrazuje množstvo informácií pre každý jednotlivý port. Dozviete sa stav pripojenia každého portu. Na druhej strane, ak poznáte IP adresu, môžete ju použiť namiesto názvu domény. To celý proces výrazne urýchli. Tu je príklad:
|
1 |
netcat -z -n -v 198.51.100.0 1-1000 |
Použili sme príznak -n na označenie toho, že systém potrebuje použiť DNS na preklad IP adresy.
Návratové správy sa zvyčajne odosielajú na štandardný chybový výstup. Ak chcete výsledky vyfiltrovať rýchlejšie, môžete ich presmerovať na štandardný výstup. Na tento účel použijeme bash syntax 2>&1. Následne výsledky vyfiltrujeme pomocou grep. Aplikujme to na náš príklad:
|
1 |
netcat -z -n -v 198.51.100.0 1-1000 2>&1 | grep uspelo |
Výstup bude vyzerať podobne ako tento:
![]()
Výstup ukazuje, že v danom rozsahu je pre pripojenie otvorený iba port 22. Port 22 je zhodou okolností tradičný port SSH.
Komunikácia cez Netcat: Ako to funguje?
Ďalej uvidíme, ako môžete použiť netcat na odosielanie TCP a UDP paketov. Nielen to, ale dokáže tiež prijímať pakety na rôznych portoch. Vďaka tejto schopnosti môžete použiť dve inštancie netcatu na vytvorenie vzťahu klient-server. Na začiatku určíte klienta a server. Po počiatočnej konfigurácii môžu obaja klienti odosielať a prijímať pakety v oboch smeroch.
Prirodzene, budete musieť nakonfigurovať netcat na jednom systéme tak, aby počúval pripojenia na jednom porte. Na tento účel musíte použiť parameter -l. Pomocou neho si môžete vybrať požadovaný port takto:
|
1 |
netcat -l 4444 |
Teraz bude TCP na tomto stroji počúvať pripojenia na porte 4444. Je potrebné poznamenať, že ak ste bežný používateľ (nie root), nebudete mať prístup k portom nižším ako 1000.
Ďalej musíte nakonfigurovať druhý stroj na nadviazanie pripojenia. Použijete rovnaké číslo portu a zadáte konkrétny názov domény takto:
|
1 |
netcat domain.com 4444 |
Spustenie tohto príkazu vám neposkytne žiadny výstup. Nadviaže však pripojenie. To znamená, že môžete začať posielať správy z jedného servera na druhý. Ak to chcete urobiť, stačí napísať správu a stlačiť kláves ENTER. Správa sa zobrazí na oboch obrazovkách.
Po dokončení môžete ukončiť TCP pripojenie stlačením CTRL+D.
Môžete posielať súbory pomocou Netcatu?
Ďalej vám ukážeme, ako môžete posielať súbory cez netcat. Pomocou TCP pripojenia môžete posielať správy, ako aj iné druhy dát. Na začiatok musíte vybrať jeden stroj, ktorý bude počúvať pripojenia. Namiesto ručného zadávania informácií do príkazu ich však umiestnime do súboru takto:
|
1 |
netcat -l 4444 > received_file |
Na druhom stroji budete musieť vytvoriť nový textový súbor. Tu je príkaz, ktorý treba použiť:
|
1 |
echo "Ahoj, toto je súbor" > original_file |
Ak chcete súbor preniesť, použijete ho ako vstup pre pripojenie na počítači, ktorý počúva:
|
1 |
netcat domain.com 4444 < original_file |
Na druhom počítači sa zobrazí nový súbor s názvom „received_file“. Bude obsahovať všetky informácie, ktoré sme napísali:
|
1 |
cat received_file |
Tento nástroj môžete použiť a premeniť ho na program na prenos súborov. Povedzme, že chcete preniesť obsah adresára. Urobíme to tak, že vytvoríme nepomenovaný archív tar, ktorý prenesieme do systému a rozbalíme do vzdialeného adresára. Na druhom stroji sa musíme pripraviť na príjem súboru. Vieme, že ho budeme musieť rozbaliť a extrahovať. Ak to chcete urobiť, zadajte tento príkaz:
|
1 |
netcat -l 4444 | tar xzvf - |
Pomlčka označuje, že príkaz tar bude pracovať so štandardným vstupom. Ten pochádza z netcatu na pôvodnom serveri, keď sme nadviazali počiatočné pripojenie.
Nakoniec môžeme dať obsah celého adresára do archívu tar a poslať ho cez netcat takto:
|
1 |
tar -czf - * | netcat domain.com 4444 |
Pomlčka v príkaze tar ukazuje, že hovoríme systému, aby zabalil a skomprimoval obsah adresára. Tiež mu prikazuje zapísať výsledok na štandardný výstup. Súbor prejde cez TCP pripojenie na druhý koniec. Prijímajúci server ho dekomprimuje a uloží do aktuálneho vzdialeného adresára.
Presne takto môžete cez netcat prenášať aj iné druhy dát. Mnoho ľudí používa príkaz dd na vytváranie obrazov diskov a ich prenos. Ďalší spôsob prenosu dát a súborov nájdete v našom návode, ktorý ukazuje, ako zaistiť bezpečnosť pri prenose súborov pomocou SFTP.
Použitie Netcatu ako webového servera
Ďalšou užitočnou funkciou nástroja netcat je, že ho môžete použiť na testovanie svojich stránok. Povedzme, že používame server na vytvorenie HTML súboru, ako je tento:
|
1 |
nano index.html |
Toto je HTML kód, ktorý súbor obsahuje:
|
1 2 3 4 5 6 7 8 9 10 |
<html> <head> <title>Testovacia stránka</title> </head> <body> <h1>Nadpis úrovne 1</h1> <h2>Podnadpis</h2> <p>Bežný text tu</p> </body> </html> |
Vložte to do súboru, potom ho uložte a zatvorte. Port 80 je zvyčajne predvolený webový port. Ako bežný používateľ bez oprávnení root vyberieme port 8888. Za predpokladu, že chcete stránku poskytnúť a skontrolovať iba raz, použite tento príkaz:
|
1 |
printf 'HTTP/1.1 200 OK\n\n%s' "$(cat index.html)" | netcat -l 8888 |
Ak chcete zobraziť obsah súboru, prejdite do svojho prehliadača. Navštívte nasledujúcu adresu:
|
1 |
http://server_IP:8888 |
Uvidíte stránku, ktorú ste nakódovali pomocou HTML súboru:

Po načítaní stránky sa pripojenie netcat zatvorí. To znamená, že obnovenie stránky vám namiesto obsahu zobrazí chybu. Je to preto, že sme ho nakonfigurovali tak, aby stránku poskytol iba raz. Ak chcete naďalej prijímať pripojenia a zobrazovať stránku neobmedzene, použijete iný kód:
|
1 |
while true; do printf 'HTTP/1.1 200 OK\n\n%s' "$(cat index.html)" | netcat -l 8888; done |
Tu sme posledný príkaz zabalili do nekonečnej slučky. Ak chcete slučku zastaviť, stačí stlačiť CTRL-C. Teraz môžete pokračovať v prezeraní svojej stránky a jej vykresľovania aj po zatvorení prvého pripojenia. Toto je však maximálna funkčnosť, ktorú môžete získať z používania nástroja netcat ako webového servera. Nepokúšajte sa ho používať na prevádzkovanie skutočných webových stránok, pretože neposkytuje žiadnu bezpečnosť. Namiesto toho si môžete pozrieť naše návody na ako nainštalovať softvér webového servera, ako je Nginx alebo Apache.
Conclusion
V tomto návode sme sa venovali nástroju netcat a preskúmali sme jeho všestrannosť ako nástroja na systéme Ubuntu. Ako sme uviedli v predchádzajúcich častiach, môžete ho použiť na účely komunikácie, prenosu dát a poskytovania stránok. Funguje perfektne pre rýchle interakcie medzi servermi prostredníctvom pripojení TCP/UDP. Je to veľmi užitočná funkcia pre množstvo základných funkcií a diagnostiky.
Príjemnú prácu s počítačom!
Komentáre
Zatiaľ žiadne komentáre. Buďte prvý.