príkaz nc V systémoch Linux je známy ako všestranný nástroj, ktorý pomáha spravovať siete s ľahkosťou a flexibilitou. Či už chcete skontrolovať otvorené porty, otestovať pripojenie medzi dvoma zariadeniami alebo dokonca rýchlo prenášať súbory cez sieť, nc ponúka jednoduché riešenia bez potreby zložitých nástrojov. Odlišuje sa svojou jednoduchosťou a schopnosťou vykonávať pokročilé úlohy, ktoré sú zaujímavé pre správcov siete aj používateľov, ktorí chcú diagnostikovať problémy s pripojením. V nasledujúcich riadkoch sa dozviete o jeho najvýznamnejších praktických použitiach a o tom, ako môže uľahčiť riešenie rôznych sieťových situácií.
Nástroj netcat je veľmi obľúbený medzi sieťovými administrátormi. Môže však slúžiť aj na rôzne účely pre bežného používateľa Linuxu v každodennom živote. Počas môjho výskumu som našiel niekoľko skvelých prípadov použitia príkazu nc.
6. Vytvorte sieťové pripojenia
Začnem najjednoduchšou a najdôležitejšou vecou, ktorú príkaz nc dokáže: nadviazanie priameho TCP alebo UDP spojenia medzi dvoma zariadeniami. Toto je základný kameň mnohých pokročilejších použití.
Predpokladajme, že máte dva systémy Linux. Pre ilustráciu použijem počítač s Ubuntu a počítač s Linux Mint. Ubuntu bude fungovať ako server alebo poslucháč, zatiaľ čo Linux Mint bude fungovať ako klient alebo konektor.
Najprv zapnite poslucháč.
nc -l -p 12345
Voľba -l slúži na režim počúvania. Voľba -p slúži na určenie portu. V tomto prípade používame port 12345, ale môžete použiť akýkoľvek iný port, pokiaľ už nie je obsadený. Po vykonaní tohto príkazu vaše zariadenie zostane na mieste a čaká na pripojenie.
Teraz z pripojovacieho zariadenia vykonajte nasledujúce kroky:
nc ip_adresa číslo_portu
Nahraďte IP adresu IP adresou vášho servera. Číslo portu bude to, ktoré ste použili v listeneri. V mojom prípade je to nasledovné:
nc 192.168.100.4 12345
Týmto sa vytvorí TCP pripojenie medzi dvoma zariadeniami. Navyše to nie je jednosmerné pripojenie, pretože odosielať môže iba server; obe strany môžu odosielať aj prijímať.
Ak chcete nadviazať UDP pripojenie, môžete tak urobiť pomocou parametra -u. Na počúvajúcom zariadení spustite:
nc -u -l -p 12345
Na klientskom počítači spustite:
nc -u 192.168.100.4 12345
Pripojenia UDP sú menej spoľahlivé ako pripojenia TCP. Sú však uprednostňované, keď je rýchlosť kritická a strata dát je prijateľná.
5. Skenovanie portov
Okrem pripojenia k jednému portu dokáže NC skenovať celú skupinu portov, aby zistil, ktoré sú otvorené. To môže pomôcť pri riešení problémov alebo inventarizácii služieb. Preto sa NC niekedy nazýva „švajčiarskym nožom“ sietí.
Predpokladajme, že chcete od klienta zistiť, ktoré TCP porty sú na serveri otvorené. Vytvorte na serveri poslucháč ako predtým.
nc -l -p 12345
Potom z klienta spustite:
nc -z -v 192.168.100.4 20-130
Príznak -z oznamuje pre netcat, aby použil režim Zero-I/O. To znamená, že netcat by mal kontrolovať iba počúvajúce démony, a nie odosielať žiadne dáta. Príznak -v povoľuje podrobný režim, ktorý lepšie zobrazuje výsledky. Taktiež určujeme rozsah portov od 20 do 130, ktoré nás zaujímajú.
Pozor
Skenujte iba systémy, ktoré vlastníte alebo na ktoré máte výslovné povolenie. Neoprávnené skenovanie môže byť nezákonné alebo považované za nepriateľské.
V deme sa takmer všetky porty odmietli pripojiť, pretože boli zatvorené, okrem portu 80. Rovnakým spôsobom môžete skenovať aj UDP porty.
4. Prenos súborov
Netcat dokáže posielať súbory priamo cez TCP alebo UDP bez potreby FTP, SCP alebo zdieľaných priečinkov. Vďaka tomu je ideálny pre rýchle prenosy, najmä ak nie sú k dispozícii iné metódy. Pošlime súbor z Linux Mint na počítač s Ubuntu.
Mám súbor s názvom test.txt, ktorý nazývam „Testovací súbor prenosu súborov NC“. Najprv vytvorte poslucháč na zariadení, do ktorého chcete súbor preniesť. Keď to urobíte, presmerujte výstup pripojenia do súboru, ako je to znázornené nižšie.
nc -l -p 12345 > prijatý.txt
Potom na počítači odosielateľa presmerujte obsah súboru na vaše nc pripojenie takto.
nc 192.168.100.4 12345
Ak chcete overiť, či bol prenos úspešný, použite príkaz ls na kontrolu existencie súboru a potom príkaz cat na prečítanie jeho obsahu. Proces môžete tiež obrátiť a odoslať súbory opačným smerom. Stačí len vymeniť role pomocou príkazov, ktoré som demonštroval vyššie.
3. Vytvorte webový server
Netcat funguje ako jednoduchý HTTP server, počúva port a odosiela surové HTML súbory každému, kto sa pripojí. Samozrejme, nenahradí Apache ani Nginx. Je však ideálny na rýchle ukážky, ladenie alebo skúmanie HTTP požiadaviek.
Najprv si na serveri vytvorte statický HTML súbor (ja ho nazývam page.html). Pre mňa je to Ubuntu.
echo -e "HTTP/1.1 200 OK\r\nTyp obsahu: text/html\r\n\r\n Zdravím z Netcatu " > stránka.html
V tomto súbore som zahrnul stavový riadok HTTP, hlavičku Content-Type a nejaký jednoduchý HTML text. Sekvencie \r\n sú v HTTP nevyhnutné na oddelenie hlavičiek od tela.
Teraz spustite webový server netcat na tom istom počítači:
kým je to pravda; vykonajte nc -l -p 8080
Na udržanie prevádzky servera aj po každej požiadavke používame slučku while. Počúvame na porte 8080 a ako odpoveď odosielame súbor HTML. Teraz otvorte webový prehliadač na klientskom počítači (v mojom prípade Linux Mint) a navštívte statickú stránku HTML zadaním IP adresy a portu.
http://192.168.100.4:8080
Na načítanie HTML stránky môžete použiť aj príkaz curl.
zvlnenie http://192.168.100.4:8080
2. Vytvorte jednoduchú chatovaciu aplikáciu
Netcat dokáže prepojiť dva terminály, takže čokoľvek napíšete na jednom, sa okamžite zobrazí na druhom. Pomocou jednoduchého triku v používateľskom rozhraní ho môžete premeniť na nástroj na okamžitý chat. Nie sú potrebné žiadne externé chatovacie aplikácie.
Na to je potrebné vytvoriť sieťové pripojenie, ako je popísané v prvej časti. Vytvorte poslucháč na jednom zo zariadení:
nc -l -p 12345
Potom sa k nemu pripojte z iného zariadenia.
nc 192.168.100.4 12345
Po nadviazaní spojenia môžete napísať čokoľvek na jednom zariadení a zobrazí sa to na druhom. Potom môžete napísať čokoľvek na druhom zariadení a zobrazí sa to na prvom.
Teraz môžete v termináli písať tam a späť a posielať správy z jedného počítača na druhý. Skúšal som vymyslieť niečo, či by som mohol k príslušným správam pridať aj mená odosielateľov. Týmto spôsobom by bolo jednoduchšie sledovať, kto správu odoslal.
Môžete to urobiť pridaním mena odosielateľa pomocou príkazov echo a while. Tu je postup. Spustite to na serveri:
pri čítaní správy; vykonajte echo "Ubuntu: $msg"; vykonajte | nc -l -p 12345
Toto je na stroji v Mosule:
zatiaľ čo čítam správu; vykoná echo "LM: $správa"; hotovo | nc 192.168.100.4 12345
Vyššie uvedený príkaz čaká na vstup, pridá k nemu prefix a odošle ho. Na prijímajúcej strane sa prefix zobrazí presne tak, ako keby bol odoslaný. Aj keď je viac ako dvoch používateľov, budete môcť správy sledovať týmto spôsobom.
1. Riešenie problémov so sieťou
Nakoniec môžete na opravu niektorých bežných problémov so sieťou použiť príkaz nc. Keď dôjde k zlyhaniu siete, môže pomôcť potvrdiť, či ide o problém s pripojením, problém so službou alebo problém s bránou firewall. Dokáže testovať porty, simulovať služby a overovať počiatočné odpovede.
Predpokladajme, že aplikácia nereaguje, môžete použiť príkaz nc a zistiť, či sa môžete pripojiť k jej portu.
nc -zv 192.168.100.4 22
Ak dôjde k zlyhaniu alebo zobrazeniu správy „Pripojenie odmietnuté“, port je uzavretý alebo filtrovaný.
So službou môžete manuálne komunikovať a zistiť, či reaguje podľa očakávaní. Napríklad skontrolujte odpoveď lokálnej služby HTTP.
nc 192.168.100.4 8080
Ak služba prebehne úspešne, odošle hlavičku odpovede HTTP a prípadne aj nejaký kód HTML. Toto je ideálne na ladenie webových aplikácií, ktoré nefungujú správne bez prehliadača.
Ak máte podozrenie, že sa aplikácia môže pripojiť k portu, ale neodosiela správne údaje, môžete sa vydávať za službu a zachytiť, čo aplikácia odosiela. Toto je užitočné pri ladení vlastných protokolov klient/server. Pomocou nástroja netcat môžete rýchlo spustiť tieto malé testy a zistiť, kde vaša sieť zlyháva a ako to opraviť.
S programom netcat sa dá robiť veľa vecí. Ak máte záujem, môžete si pozrieť manuálovú stránku. Oficiálny používateľ nc. Existuje mnoho ďalších sieťových príkazov pre Linux, ktoré vám odporúčame preskúmať.
Príkaz nc nie je len tradičný nástroj systému Linux; je to inteligentný spôsob diagnostikovania sietí a zaistenia integrity pripojení medzi zariadeniami. Jeho jednoduché používanie a viacero funkcií z neho robia ideálnu voľbu pre tých, ktorí hľadajú praktický a spoľahlivý nástroj na skenovanie siete. Vyskúšajte ho a zistíte, ako vám môže ušetriť veľa času a úsilia pri riešení každodenných problémov s pripojením.












