GNU/Linux >> Linux Esercitazione >  >> Linux

Test dei servizi di rete con Netcat

Avviso: Il creatore del software di Netcat non ha aggiornato il software dal 2006. Pertanto, Rackspace Technology non garantisce che la qualità di Netcat soddisfi le tue aspettative.

Utilizzo di Netcat

Se il tuo servizio di rete non funziona correttamente ma sai che il servizio è in ascolto su una porta di rete, puoi verificare la connessione del programma per risolvere il problema.

Usa il comando Netcat, nc , per accedere al servizio. Se stai eseguendo una distribuzione basata su Red Hat® e non hai nc installato, digita il seguente comando sulla riga di comando:

$ sudo yum install nc`

Per una distribuzione basata su Debian®, digita il seguente comando sulla riga di comando:

$ sudo apt-get install Netcat`

Test di base

Esegui un semplice test per verificare che la porta accetti connessioni.

Digita nc sulla riga di comando seguito da -vz opzione con il tuo indirizzo IP e porta:

$ nc -vz IP_address port

L'indirizzo IP dovrebbe essere quello su cui il servizio riceve le connessioni.

Gli esempi seguenti mostrano i possibili messaggi di output:

La connessione riesce

$ nc -vz 203.0.113.96 21
Connection to 203.0.113.96 21 port [tcp/ftp] succeeded!

La connessione è stata rifiutata

$ nc -vz 203.0.113.96 80
nc: connect to 203.0.113.96 port 80 (tcp) failed: Connection refused

Non c'è risposta alla richiesta di connessione

$ nc -vz 203.0.113.96 80
nc: connect to 203.0.113.96 port 80 (tcp) failed: Connection timed out

Connessione rifiutata

Il servizio non è in esecuzione o un firewall sta rifiutando la connessione. Verifica lo stato del processo eseguendo ps sulla riga di comando. Consulta Verifica dei servizi in esecuzione su Linux per ulteriori opzioni.

Nota: Se il servizio è in esecuzione, il firewall potrebbe rifiutare la connessione. Leggi la connessione scaduta sezione per istruzioni sulla risoluzione dei problemi del firewall.

Connessione scaduta

Una connessione scaduta la risposta indica che la connessione non funziona, il che potrebbe significare che il firewall sta bloccando la porta. Verifica lo stato della connessione aggiungendo una regola che accetti le connessioni sulla porta richiesta.

L'esempio seguente inserisce una regola sulla riga 1 della catena di input che accetta tutte le connessioni TCP sulla porta 80 (HTTP). Utilizzare questa regola durante il test di un server Web come Apache®.

$ sudo /sbin/iptables -I INPUT 1 -p tcp --dport http -j ACCEPT

Le tabelle IP riflettono istantaneamente le modifiche apportate. Ripetere il test con nc per vedere se c'è qualche cambiamento nella risposta.

Se vuoi rimuovere la regola che hai aggiunto, puoi usare il -D opzione combinata con la posizione della regola nella catena. L'esempio precedente ha aggiunto una regola alla riga 1, la parte superiore della catena. L'esempio seguente mostra come rimuoverlo.

$ sudo /sbin/iptables -D INPUT 1

Puoi controllare la configurazione attuale del firewall in qualsiasi momento eseguendo il comando seguente sulla riga di comando:

$ sudo /sbin/iptables -L -v

Connessione riuscita

Se la connessione iniziale riesce, Netcat può connettersi al servizio. Guarda la connessione in modo più dettagliato.

Per prima cosa, usa -vt opzione per vedere se il servizio può rispondere alle query di rete di base:

$ nc -vt IP Address Port

Se puoi inviare comandi al servizio-daemon e ricevere risposte, ciò indica che il programma è accessibile e il tuo problema potrebbe essere dovuto alla configurazione della connessione del client.

Dopo esserti connesso, prova il servizio per ottenere una risposta. Puoi testare il servizio inviando un GET richiesta a un server Web o altri dati appropriati per richiedere una risposta al server.

Chiusura della connessione

Puoi terminare la connessione premendo Ctrl-C oppure digita il comando di chiusura specifico del servizio.

Ad esempio, puoi chiudere una connessione a un protocollo di trasferimento file, FTP, server con il QUIT comando:

$ nc -vt 203.0.113.96 21
Connection to 203.0.113.96 21 port [tcp/ftp] succeeded!
220 (vsFTPd 2.0.5)
$ QUIT
221 Goodbye.

Comandi rifiutati

Supponiamo nc segnala l'esito positivo ma non ti consente di inviare alcun comando, oppure ottieni una risposta dal servizio-daemon che segnala che il servizio non è disponibile. In tal caso, potresti avere wrapper del protocollo di controllo della trasmissione, wrapper TCP , fornendo il controllo dell'accesso.

Un servizio FTP bloccato dai wrapper TCP potrebbe essere simile al seguente esempio:

$ nc -vt 203.0.113.96 21
Connection to 203.0.113.96 21 port [tcp/ftp] succeeded!
421 Service not available.

I programmi compatibili con i wrapper TCP vengono compilati con libwrap . Per verificare se un programma può utilizzare TCPwrapper, utilizzare il comando seguente:

$ ldd /path/to/binary | grep libwrap

L'esempio seguente verifica il vsftpd programma per libwrap file di libreria condivisa.

ldd /usr/sbin/vsftpd | grep libwrap
libwrap.so.0 => /lib64/libwrap.so.0 (0x00007f62c734a000)

Se il programma non è compatibile con i wrapper TCP, il precedente grep il comando non restituisce nulla.

Controllo registri

Una connessione bloccata produce una voce di registro. Controlla i registri del programma per i messaggi rilevanti.

Nel vsftpd log, che si trovano in /var/log/vsftpd.log , una connessione bloccata a causa di wrapper TCP è simile al seguente esempio:

Tue Jun  7 16:14:21 2011 [pid 28599] CONNECT: Client "203.0.113.43", "Connection refused: tcp_wrappers denial."

hosts.deny

Il /etc/hosts.deny file stabilisce la definizione per le connessioni bloccate. Se hai problemi a vedere una voce per il tuo servizio nel file, usa grep per cercarlo.

Cerca nel file il nome del programma eseguendo il comando seguente:

$ sudo grep "vsftpd" /etc/hosts.deny
vsftpd : ALL

Prova a commentare eventuali righe offensive usando un hash (#). Le modifiche a questo file hanno effetto automaticamente:non è necessario riavviare alcun servizio.

Tieni presente che i wrapper TCP consentono una connessione per impostazione predefinita, quindi se è la causa del problema, deve esserci una voce in /etc/hosts.deny per il servizio. Puoi rinominare il file /etc/hosts.deny per rimuovere temporaneamente tutte le tue regole di rifiuto. Ad esempio, esegui sudo mv /etc/hosts.deny /etc/hosts.deny.old . Si noti che questo comando ha effetto su tutte le applicazioni che utilizzano i wrapper TCP. Non dimenticare di reimpostarlo dopo aver terminato i test, se necessario.

Ulteriori indagini

Se hai completato tutti i test in questo articolo senza identificare alcun problema, è probabile che il servizio funzioni normalmente. Il passaggio successivo consiste nel testare la connettività al server utilizzando ping e traceroute utilità.


Linux
  1. Inizia con NetworkManager su Linux

  2. Gestisci le connessioni di rete dalla riga di comando di Linux con nmcli

  3. Configurazione dell'interfaccia di rete con indirizzo IP statico su RHEL 7

  4. Posso testare la mia rete?

  5. Avvio della connessione di rete dal ripristino di Ubuntu?

Elenco dei servizi Linux con Systemctl

Comando Netcat (nc) con esempi

Analisi del traffico di rete con tcpdump

Servizi di rete

Servizi di rete e protocolli

Network Manager su Linux con esempi