6 Bruksområder for nettverksbygging med Linux nc-kommandoen

Netcat (nc) er et kraftig verktøy for nettverksadministrasjon, som kan brukes til å opprette forbindelser, skanne porter, overføre filer, lage en webserver, chat-applikasjoner og feilsøke nettverksproblemer.
Netcat-verktøyet er ganske populært blant nettverksadministratorer. Imidlertid kan det også tjene ulike formål for deg som en vanlig Linux-bruker i din daglige hverdag. Mens jeg gjorde litt forskning, fant jeg noen flotte bruksområder for å leke med nc-kommandoen.
6 Etablere Nettverksforbindelser
Jeg vil starte med det enkleste og mest grunnleggende som nc kan gjøre. Det er å opprette en direkte TCP- eller UDP-forbindelse mellom to maskiner. Dette er byggesteinen for mange av de mer avanserte bruksområdene.
Anta at du har to Linux-systemer. For demonstrasjon bruker jeg en Ubuntu-maskin og en Linux Mint-maskin. Ubuntu vil fungere som server eller lytter, mens Linux Mint vil fungere som klient eller kobler.
Først, start lytteren.
nc -l -p 12345
-l-flagget er for lyttermodus. -p-flagget er for å definere porten. Her bruker vi port 12345, men du kan bruke en annen så lenge den ikke allerede er i bruk. Etter at du har kjørt denne kommandoen, vil terminalen din bare sitte der og vente på en forbindelse.
Nå, fra koblingsmaskinen, kjør:
nc ip_address port_number
Erstatt ip_address med IP-adressen til serveren din. Portnummeret skal være det samme som du brukte i lytteren. Så, i mitt tilfelle:
nc 192.168.100.4 12345
Dette oppretter en TCP-forbindelse mellom de to maskinene. Dessuten er det ikke en-veis kommunikasjon der bare serveren kan sende. Snarere kan begge parter sende og motta.
Hvis du ønsker å opprette en UDP-forbindelse i stedet, kan du gjøre det med -u-flagget. På lyttermaskinen, kjør:
nc -u -l -p 12345
På klientmaskinen, kjør:
nc -u 192.168.100.4 12345
UDP-forbindelser er mindre pålitelige enn TCP. Imidlertid er de foretrukket når hastighet er kritisk og litt datatap er akseptabelt.
5 Portskanning
I tillegg til å koble til en enkelt port, kan nc sjekke et helt spekter av porter for å se hvilke som er åpne. Dette kan hjelpe med feilsøking eller oppføring av tjenester. Det er også grunnen til at nc noen ganger kalles "flerbruksverktøyet" i nettverking.
La oss si at du vil finne ut hvilke TCP-porter som er åpne på servermaskinen din fra klientmaskinen. Du oppretter en lytter på serveren som før.
nc -l -p 12345
Deretter, fra klienten, kjør:
nc -z -v 192.168.100.4 20-130
-z-flagget forteller netcat å bruke Zero-I/O-modus. Dette betyr at netcat bare skal skanne etter lytende daemons i stedet for å sende noen data. -v-flagget aktiverer verbose-modus, som viser resultatene på en bedre måte. Vi definerer også rekkevidden av porter fra 20 til 130 som vi er interessert i.
Skann bare systemer du eier eller har eksplisitt tillatelse til å skanne. Uautorisert skanning kan være ulovlig eller bli sett på som fiendtlig.
I demonstrasjonen nektet nesten alle portene tilkobling fordi de var lukket, unntatt port 80. På samme måte kan du også skanne UDP-porter.
4 Filoverføring
Netcat kan sende filer direkte over TCP eller UDP uten å måtte bruke FTP, SCP eller delte mapper. Dette gjør det ideelt for raske overføringer, spesielt når andre metoder ikke er tilgjengelige. La oss sende en fil fra min Linux Mint til min Ubuntu-maskin.
Jeg har allerede en fil som heter test.txt, som leser "Fil for testing av nc filoverføring." Først, opprett en lytter på maskinen hvor du vil overføre filen. Når du gjør dette, omdiriger tilkoblingsutgangen til en fil, som dette.
nc -l -p 12345 > received.txt
Deretter, på sendermaskinen, omdiriger filinnholdet til nc-tilkoblingen din slik:
nc 192.168.100.4 12345
For å sjekke om overføringen var vellykket, bruk ls-kommandoen for å se om filen er der og deretter cat-kommandoen for å lese innholdet. Du kan også gjøre det motsatte og sende filer den andre veien. Alt du trenger å gjøre er å bytte roller ved å bruke kommandoene jeg viste ovenfor.
3 Lage en Webserver
Netcat kan fungere som en enkel HTTP-server ved å lytte på en port og sende rå HTML til hvem som helst som kobler seg til. Det vil selvfølgelig ikke erstatte Apache eller Nginx. Men for raske demoer, feilsøking eller læring om HTTP-forespørsel, er det perfekt.
Først, opprett en statisk HTML-fil (jeg kaller den page.html) på servermaskinen din. For meg er det Ubuntu.
echo -e "HTTP/1.1 200 Ok" > page.html
Hei fra Netcat
I denne filen har jeg inkludert en HTTP-statuslinje, en innholdstype-header og et enkelt HTML-body. \r\n-sekvensene er kritiske i HTTP for å skille mellom headers og body.
Nå starter vi en netcat webserver på samme maskin:
while true; do nc -l -p 8080
Vi bruker en while-løkke her slik at serveren forblir aktiv selv etter hver forespørsel. Vi lytter på port 8080 og sender HTML-filen som svar. Åpne nå en nettleser fra klientmaskinen (Linux Mint i mitt tilfelle) og besøk den statiske HTML-siden ved å spesifisere IP-adresse og port.
http://192.168.100.4:8080
Du kan også bruke curl-kommandoen for å hente HTML-siden.
curl http://192.168.100.4:8080
2 Lag en enkel chat-applikasjon
Netcat kan koble to terminaler sammen, så alt du skriver på den ene vises umiddelbart på den andre. Med litt shell-trikseri kan du gjøre det om til et verktøy for sanntidschat. Det er ikke nødvendig med tredjeparts chat-applikasjoner.
For å gjøre dette, må du opprette en nettverksforbindelse, akkurat som vist i den første delen. Opprett en lytter på en maskin:
nc -l -p 12345
Så kobler du til den fra en annen maskin.
nc 192.168.100.4 12345
Når du har etablert forbindelsen, kan du skrive hva som helst på den ene terminalen. Det vil vises på den andre terminalen. Deretter kan du skrive hva som helst på den andre terminalen, og det vil vises på den første.
Nå kan du skrive fram og tilbake i terminalen for å sende meldinger fra én datamaskin til en annen. Jeg prøvde å bli litt kreativ for å se om jeg kunne legge til avsenders navn med de tilsvarende meldingene. På den måten er det lettere å følge med på hvem som sendte hvilken melding.
Du kan gjøre dette ved å legge til avsenders navn ved hjelp av echo og en while-løkke. Her er oppsettet. Kjør dette på servermaskinen:
while read msg; do echo "Ubuntu: $msg"; done | nc -l -p 12345
Og dette på tilkoblingsmaskinen:
while read msg; do echo "LM: $msg"; done | nc 192.168.100.4 12345
Kommandoen ovenfor venter på input, prefikser det, og sender det. På mottakersiden vises prefikset nøyaktig som sendt. Selv om det er mer enn to brukere, vil du kunne følge med på meldingene på denne måten.
1 Nettverksfeilsøking
Til slutt kan du bruke nc-kommandoen for å fikse noen vanlige nettverksproblemer. Når noe er galt med et nettverk, kan det hjelpe å bekrefte om det er et tilkoblingsproblem, et tjenesteproblem, eller et brannmurproblem. Det kan teste porter, simulere tjenester, og sjekke rå svar.
Anta at en applikasjon ikke svarer. Du kan bruke nc for å se om du i det hele tatt kan koble til porten dens.
nc -zv 192.168.100.4 22
Hvis det henger eller sier "Connection refused", er porten stengt eller filtrert.
Du kan snakke med en tjeneste for å se om den svarer som forventet. For eksempel, sjekke om en lokal HTTP-tjeneste svarer.
nc 192.168.100.4 8080
Hvis tjenesten fungerer, vil den sende tilbake en HTTP-responsheader og muligens noe HTML. Dette er flott for feilsøking av ubehagelige webapper uten en nettleser.
Hvis du mistenker at en app kan koble til en port men ikke sender riktig data, kan du late som du er tjenesten og fange opp hva appen sender. Dette er nyttig for feilsøking av egendefinerte klient/server-protokoller. Med netcat kan du raskt utføre disse små testene og finne ut hvor nettverket svikter og hvordan du kan fikse det.
Det er mye mer du kan gjøre med netcat. Hvis du er interessert, kan du sjekke ut den offisielle man-siden for nc. Det finnes mange flere Linux-nettverkskommandoer du bør utforske.
Hvis du vil lese flere artikler som 6 Bruksområder for nettverksbygging med Linux nc-kommandoen, kan du besøke kategorien Linux.

Legg igjen en kommentar