Quais portas são usadas por um aplicativo [duplicado]
11
Estou testando um aplicativo que abre suas próprias portas (atua como servidor para essas portas e, portanto, escuta nessas portas) e onde o mesmo aplicativo se conecta às portas vinculadas por outros aplicativos (atua como cliente para essas portas).
Gostaria de obter uma visão geral de quais portas o aplicativo cria e a quais aplicativos e portas ele se conecta.
Costumo usar os parâmetros -putan(porque são simples de lembrar).
-p: mostra os PIDs do aplicativo / processo
-u: mostre portas / conexões udp
-t: mostre portas / conexões tcp
-a: mostra soquetes de escuta e não escuta
-n: saída numérica (não faça pesquisas de DNS para nomes de host etc.)
Na saída acima, você vê que existe um processo ssh daemon ( sshd) com o PID 1725escutando na porta 22em todas as interfaces de rede ( 0.0.0.0). Também existe um processo de cliente ssh (PID 2491) conectado ao endereço IP 1.2.3.5no número da porta 22, meu endereço IP é 1.2.3.4e minha porta externa 45734. Você vê que a conexão está estabelecida. Portanto, eu estou logado via ssh.
Uma conexão TCP estabelecida na porta 22 não indica autenticação bem-sucedida. O TCP deve ser estabelecido antes que a autenticação em qualquer direção possa ocorrer.
jamesbtate
@Puddingfox yes true, poderíamos dizer melhor "Estou conectado a essa porta", mas, para compreensão, eu disse "estou logado", porque é mais ilustrativo.
caos
1
hehe ... `` -putan '' Estou tão tentado a corrigir esse pequeno erro de ortografia;)
James Mertz
Por que usar utilitários obsoletos quando os modernos estão disponíveis? ss -lntp é o utilitário fornecido pelo pacote iproute2 .
# lsof -i -a -p 1981
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 1981 root 3u IPv4 917 0t0 TCP host.example.com:ssh (LISTEN)
# lsof -i -a -p 1981 -n
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 1981 root 3u IPv4 917 0t0 TCP 10.1.2.3:ssh (LISTEN)
# lsof -i -a -p 1981 -n -P
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 1981 root 3u IPv4 917 0t0 TCP 10.1.2.3:22 (LISTEN)
#
As opções usadas são as seguintes:
-i imprimir portas da Internet abertas por um processo
-a para fazer com que todas as opções sejam AND
-p 1981 mostrar saída para o processo 1981
-n inibir a pesquisa de nome de host e mostrar o IP
-P inibir a pesquisa de serviço e mostrar o número da porta
lsoftem a vantagem de poder especificar o processo a ser verificado, em vez de precisar cumpri-lo com uma saída maior. netstatestá disponível de forma mais confiável nos sistemas, embora lsofesteja se tornando mais padrão do que costumava ser.
Gostaria de executar este comando antes de iniciar o aplicativo que desejo monitorar, mas posso estabelecer qual o pid que um aplicativo receberá antes de iniciá-lo?
Baz
@Az, se você deseja monitorar um aplicativo quando ele inicia (por exemplo, antes que você saiba que é o PID), tente a stracesolução sugerida pelo @olivecoder.
Suponho que você esteja falando sobre IPv4 ... Se não, você pode substituir o 4 no comando anterior por 6. O parâmetro -a é mostrar todas as portas (ouvindo e não). Você pode adicionar -n aos parâmetros se não quiser resolver os nomes na exibição.
Outra ferramenta que pode fazer isso é
lsof
:As opções usadas são as seguintes:
-i
imprimir portas da Internet abertas por um processo-a
para fazer com que todas as opções sejam AND-p 1981
mostrar saída para o processo 1981-n
inibir a pesquisa de nome de host e mostrar o IP-P
inibir a pesquisa de serviço e mostrar o número da portalsof
tem a vantagem de poder especificar o processo a ser verificado, em vez de precisar cumpri-lo com uma saída maior.netstat
está disponível de forma mais confiável nos sistemas, emboralsof
esteja se tornando mais padrão do que costumava ser.fonte
strace
solução sugerida pelo @olivecoder.ss
utilitário do pacote iproute para Linuxfonte
Já temos boas respostas, mas elas listam apenas as portas que estão abertas no momento em que o comando é executado.
strace
é a ferramenta certa para monitorar as conexões abertas durante a vida útil do aplicativo:A saída mostraria informações adicionais, como solicitações UDP e conexões abertas, mas fechadas.
fonte
ss -a4 | less
Suponho que você esteja falando sobre IPv4 ... Se não, você pode substituir o 4 no comando anterior por 6. O parâmetro -a é mostrar todas as portas (ouvindo e não). Você pode adicionar -n aos parâmetros se não quiser resolver os nomes na exibição.
fonte