Como verificar se um serviço está atendendo tanto no ipv4 quanto no ipv6?

5

Eu quero verificar se o serviço https está escutando tanto no IPv6 quanto no IPv4.

E também quando estou acessando o url por meio do navegador, quero saber se a solicitação é atendida por IPv4 ou IPv6.

    
por Gaurav KS 09.09.2015 / 11:11

2 respostas

4

Você pode usar netstat :

# netstat -tlnp | grep httpd
# netstat -tlnp | grep apache
# netstat -tlnp | grep nginx
# netstat -tlnp | grep ...

Em seguida, verifique se você obtém uma linha para cada versão do protocolo IP (tcp e tcp6).

#!/bin/bash

ns=$(netstat -tlnp | grep httpd)

if grep 'tcp ' <<< "$ns" >/dev/null; then
    echo "httpd has a listening IPv4 socket."
fi

if grep 'tcp6 ' <<< "$ns" >/dev/null; then
    echo "httpd has a listening IPv6 socket."
fi

Note que você precisará de privilégios de root com netstat se quiser ver os processos que pertencem à raiz (como o processo mestre do Apache). Se você quiser usar netstat como usuário padrão, remova a opção -p e grep por IP e porta. Por exemplo:

$ netstat -tln | grep '0.0.0.0:80'
$ netstat -tln | grep '127.0.0.1:80'
$ netstat -tln | grep '::1:80'

Nesse caso, você não precisa grep novamente em tcp ou tcp6 , pois o IP que você está grep -ing já fornece as informações que você está procurando. Se você deve procurar 127.0.0.1 ou 0.0.0.0 depende da configuração do seu servidor web.

    
por 09.09.2015 / 11:19
4

lsof também é útil.

Você pode ver todos os endereços de escuta e as conexões estabelecidas de nginx usando IPv4 e IPv6, respectivamente, da seguinte maneira (executado como root):

lsof -c nginx -a -i4
lsof -c nginx -a -i6

Mostrar todas as conexões do Google Chrome no host do cliente, tanto v4 quanto v6:

lsof -c chrome -a -i
    
por 09.09.2015 / 11:35