Esta é a saída do netstat -tulpn que recebo:
tcp 0 0 127.0.0.1:2208 0.0.0.0:* LISTEN 2055/hpiod
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 2077/cupsd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 2138/sendmail: acce
tcp 0 0 127.0.0.1:2207 0.0.0.0:* LISTEN 2060/python
tcp 0 0 0.0.0.0:735 0.0.0.0:* LISTEN 1825/rpc.statd
tcp 0 0 :::111 :::* LISTEN 1781/rpcbind
tcp 0 0 :::80 :::* LISTEN 2624/httpd
tcp 0 0 :::22 :::* LISTEN 2096/sshd
udp 0 0 0.0.0.0:32768 0.0.0.0:* 2398/avahi-daemon:
udp 0 0 0.0.0.0:68 0.0.0.0:* 1581/dhclient
udp 0 0 0.0.0.0:729 0.0.0.0:* 1825/rpc.statd
udp 0 0 0.0.0.0:732 0.0.0.0:* 1825/rpc.statd
udp 0 0 0.0.0.0:5353 0.0.0.0:* 2398/avahi-daemon:
udp 0 0 0.0.0.0:631 0.0.0.0:* 2077/cupsd
udp 0 0 :::32769 :::* 2398/avahi-daemon:
udp 0 0 :::684 :::* 1781/rpcbind
udp 0 0 :::5353 :::* 2398/avahi-daemon:
udp 0 0 :::111 :::* 1781/rpcbind
Estou curioso para saber: o que :::
significa Endereço Local? E o que é 0.0.0.0:*
e :::*
em Endereço estrangeiro?
networking
netstat
Pradipta
fonte
fonte
Respostas:
Como muitas das outras respostas mencionam, :: representa todos os zeros e, em seguida, o netstat pode mostrar dois pontos depois de um endereço, então você obtém três pontos.
O que não vi em nenhuma dessas respostas é uma resposta à pergunta sobre o que isso realmente significa (neste caso).
No caso do netstat, :: (no IPv6) ou 0.0.0.0 (no IPv4) basicamente significa "qualquer".
Portanto, o software está escutando na porta TCP 80 (a porta HTTP) em qualquer um dos endereços.
Se você tiver várias interfaces de placa de rede (o que você faz, como explicarei em breve), é possível ouvir apenas em um endereço específico. Por exemplo, em alguns softwares, você pode fazer algo como fazer com que o servidor HTTP escute uma placa de rede que usa Ethernet com fio, mas não responda a uma placa de rede que usa redes sem fio. Se você fez isso, seu computador pode executar algo como escutar no IPv4 192.0.2.100:80 (ou IPv6 2001: db8: abcd :: 1234: 80).
Mas, como você está ouvindo "::: 80", seu computador não está ouvindo o tráfego da porta 80 em apenas um endereço IP de entrada, você está ouvindo o tráfego da porta 80 em qualquer endereço IPv6.
Por que você gostaria de ser exigente com a interface em que está ouvindo? Bem, uma maneira de usar esse recurso, às vezes, é fazer com que um computador ouça a interface de loopback. (Lembre-se de quando eu disse que você tinha várias interfaces de placa de rede ... essa é uma das razões pelas quais eu disse isso. Suponho que você tenha uma conexão de rede física real e que também tenha uma interface de loopback. Essa é a configuração mais comum para hoje em dia.) Faço isso com o tunelamento SSH. Então, posso fazer algo como conectar um visualizador VNC local à extremidade local de um túnel SSH. Fazendo com que o túnel SSH escute na interface de loopback, não preciso me preocupar que o túnel SSH possa escutar o tráfego que chega de uma das interfaces físicas da rede. Tão,
Em alguns casos, 0.0.0.0 ou :: basicamente significa o endereço "não especificado", conforme especificado na seção 2.5.2 da RFC 4291que diz "Indica a ausência de um endereço". Às vezes, vejo isso quando o software tenta se referir a um endereço "inválido" (como se um computador não tiver um endereço atribuído, talvez), onde não há um endereço específico para exibição. No entanto, nesse caso, o :: ou 0.0.0.0 refere-se a um endereço "desconhecido". É por isso que todas as portas LISTENING aparecem como "desconhecidas". Para uma conexão estabelecida, você sabe quem é o fim remoto, porque está se comunicando com eles. Para uma conexão "LISTENING", você está ouvindo novas conversas. Esse tráfego pode vir de, bem, possivelmente de qualquer lugar do mundo. O tráfego de entrada pode vir de qualquer endereço. E, a maneira como o nestat exibe isso é especificar um endereço de todos os zeros. Como não há endereço específico para usar,
Vou terminar observando que ouvir o software em todas as interfaces de rede é uma coisa muito comum. Alguns softwares podem ser configurados para escutar apenas um endereço específico da Internet ou talvez uma placa de rede específica. E isso pode ser um pouco mais seguro, porque o software não está escutando onde não é esperado tráfego válido. Isso pode limitar a capacidade de atacar. No entanto, muitos softwares não possuem essa opção, ou essa opção está um pouco oculta / oculta. Portanto, ouvir todas as placas de rede não é uma coisa super terrível. Isso é bastante comum. E, se você deseja impedir que o software receba tráfego em uma porta de rede específica, há outras maneiras de conseguir isso, incluindo o bloqueio de tráfego indesejado com um firewall. Se você fizer isso, o firewall poderá bloquear o tráfego, mas o servidor (web) ainda pode receber tráfego nessa interface de rede. Nesse caso, o servidor nunca terá tráfego nessa interface, mas o netstat ainda relatará que o servidor está escutando (para o tráfego que nunca chegará a esse servidor). Ver o netstat relatar que o software do servidor está escutando em todas as interfaces é muito comum e, portanto, não é algo para se preocupar particularmente.
Por fim, mencionarei que esta pergunta e esta resposta não são específicas do Linux. (Estou mencionando isso porque vejo a tag "Linux" nesta pergunta.) Os parâmetros da linha de comando mostrados e a saída de exemplo mostrada podem ter vindo do Linux, e diferentes sistemas operacionais podem exibir coisas ligeiramente diferentes. No entanto, sobre o tópico :: e 0.0.0.0, a maneira como o netstat funciona nesse sentido é idêntica em uma máquina executando BSD ou Microsoft Windows (e presumivelmente em muitos outros sistemas).
fonte
Como outros disseram, é a notação IPv6 natural para esse contexto.
Vamos citar e interpretar os padrões relevantes:
::: * == 0000.0000.0000.0000.0000.0000.0000.0000: *
http://tools.ietf.org/html/rfc5952#section-4 diz que os endereços IPv6 canônicos (e não apenas um possível atalho) são:
a-f
minúsculas.:
0000
torna-se0
.:0:0:0:
DEVE ser convertida para::
. Só pode ser feito uma vez ou levaria à ambiguidade.Então
:::*
significa:0000:0000:0000:0000:0000:0000:0000
em qualquer porta (:*
)0:0:0:0:0:0:0
(remoção 0 à direita)::
(contração zero consecutiva)0000.0000.0000.0000.0000.0000.0000.0000: * == endereço não especificado
http://tools.ietf.org/html/rfc4291#section-2.5.2 define o "endereço não especificado":
o que a torna uma boa escolha para uma coluna N / A, como neste caso.
Portanto , não
::
é o que diz o mesmo documento .localhost
::1
Na
netstat
1.60, os protocolos na saída lêemtcp6
eudp6
para o IPv6, que mostram melhor o que está acontecendo, por exemplo:Veja também:
fonte
Refere-se ao endereço IPv6. No IPv6, podemos condensar uma sequência de
0
s usando o::
modificadorPor exemplo,
pode ser escrito como
Mas existem regras específicas a serem seguidas nesse sentido que você pode consultar em qualquer tutorial sobre Ipv6
fonte
:: 1 é o host local para IPv6, como 127.0.0.1 para IPv4.
::: * é a versão curta de 0: 0: 1: * (IPv6 0: 0: 0, porta *), é como IPv4 0.0.0.0:*. Ambos na coluna de endereço externo significam que não há coluna de endereço externo. No caso das tomadas de escuta, é claro que ainda não existe um endereço externo conectado. No caso dos soquetes udp, você normalmente não possui endereços externos conectados, portanto, eles também são listados com 0.0.0.0:*.
fonte
::: * Seria o seu host / loop local no IPv6 :)
Basicamente, você tem serviços ouvindo e se conectando a serviços localmente.
fonte
::
será um loopback: é o endereço não especificado e o loopback é em::1
.A versão linux do netstat usa uma notação de: onde o endereço IP é exibido vazio *.
Então ::: 111 significa um IP de :: e uma porta de 111.
:: é um endereço IPv6 em formato condensado usando a regra de que uma sequência de zeros pode ser substituída por ::. Escrito na íntegra, é equivalente a 0000: 0000: 0000: 0000: 0000: 0000: 0000: 0000.
Como no IPv4, o endereço com todos os zeros (conhecido como endereço não especificado) é usado como um valor de espaço reservado. No caso de um endereço local, significa que o soquete está escutando em todas as interfaces IPv6 (e possivelmente todas as interfaces IPv4, dependendo das opções de soquete que o netstat não mostra).
Isso significa que o soquete não está vinculado a um endereço externo específico. :: ou 0.0.0.0 indica um endereço IP não especificado (para IPv4 ou IPv6, respectivamente) e * indica uma porta não especificada.
Para o TCP, isso se aplica apenas aos soquetes que atendem às conexões de entrada. Quando "accept" é chamado para aceitar uma conexão, um soquete separado é criado com um IP remoto e uma porta definidos.
Para o UDP, não há conceito de aceitação de conexões. Um aplicativo vinculado a um soquete UDP com um endereço externo ::: * usa a chamada de API "recvfrom" para receber pacotes e determinar de onde eles vieram e a chamada de API "sendto" para enviar pacotes para um endereço específico.
* Essa notação é lamentável porque significa que uma sequência exibida significa coisas diferentes no netstat para outro lugar. Na maioria dos contextos, 3FFE :: 1234: 5678 significaria o endereço IP 3FFE: 0000: 0000: 0000: 0000: 0000: 1234: 5678 mas na saída linst netstat significa o endereço IP 3FFE: 0000: 0000: 0000: 0000: 0000 : 0000: 1234 e a porta 5678. A versão do netstat para Windows, por contraste, envolve os endereços IPv6 entre colchetes para evitar ambiguidade.
fonte