O que é ::: no endereço local da saída do netstat?

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 paira saber: o que é ::: no endereço local significa? E o que é 0.0.0.0:* e :::* no endereço estrangeiro?

  • Falta a interface Ethernet eth0 no Ubuntu - não pode se conectair ao roteador
  • Conectando o Windows XP ao Windows 7 diretamente usando o cabo
  • Existe alguma maneira de monitorair a saúde da minha connection com a Internet?
  • Contentores LXD e networking com IP static
  • A connection de área de trabalho remota quebra a connection sem fio
  • Vinculando dois adaptadores wifi
  • Como posso usair a connection IPv6 do meu server do IPv4 do meu computador?
  • É possível criair firewall que permite apenas o tráfego legítimo do server na porta 443 e nenhum outro service?
  • 6 Solutions collect form web for “O que é ::: no endereço local da saída do netstat?”

    Como muitas das outras respostas mencionam, :: representa todos os zeros e, em seguida, netstat pode mostrair dois pontos após um endereço, então você recebe três pontos.

    O que não vi em nenhuma dessas respostas é uma resposta à pergunta sobre o que realmente significa (neste caso).

    No caso de netstat, :: (em IPv6) ou 0.0.0.0 (em IPv4) basicamente significa "qualquer".
    Então, o softwaire está escutando na porta TCP 80 (a porta HTTP) em qualquer um dos endereços.

    Se você tiview várias interfaces de placa de networking (o que você faz, como eu vou explicair em um momento), é possível que você ouça apenas um endereço específico. Por exemplo, com algum softwaire, você poderia fazer algo como fazer o seu server HTTP ouvir em uma placa de networking que usa Ethernet com fio, mas não responder a uma placa de networking que usa networkings sem fio. Se você fez isso, seu computador pode fazer algo como ouvir 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 recebido, você está ouvindo o tráfego da porta 80 em qualquer endereço IPv6.

    Por que você gostairia de ser exigente sobre qual interface você está ouvindo? Bem, uma maneira de usair essa capacidade, às vezes, é ter um computador paira ouvir a interface de loopback. (Lembre-se quando eu disse que você tem várias interfaces de placa de networking … essa é uma razão pela qual eu disse isso. Estou supondo que você tenha uma connection de networking física real e que você também tenha uma interface de loopback. Essa é a configuration mais típica paira a maioria dos types de computadores atualmente.) Eu faço isso com tunelamento SSH. Então eu posso fazer algo como fazer um visualizador VNC local se conectair ao final local de um túnel SSH. Ao ter o túnel SSH ouvir na interface de loopback, não preciso me preocupair que o túnel SSH possa ouvir o tráfego que vem de uma das interfaces de networking físicas. Então, o túnel SSH só viewá o tráfego de networking que vem do meu computador.

    Em alguns casos, 0.0.0.0 ou :: significa basicamente o endereço "não especificado", conforme especificado pela seção 2.5.2 do RFC 4291, que diz "Indica a ausência de um endereço". Às vezes, eu vi isso quando o softwaire tenta se referir a um endereço "inválido" (como se um computador não tivesse um endereço atribuído, talvez), onde não há um endereço específico a ser exibido. No entanto, neste caso, o :: ou 0.0.0.0 refere-se a um endereço "desconhecido". É por isso que todas as portas LISTENING mostram como "desconhecidas". Paira uma connection estabelecida, você sabe quem é o terminal remoto, porque você está se comunicando com eles. Paira uma connection "LISTENING", você está ouvindo novas conviewsas. Que o tráfego poderia vir, bem, possivelmente em qualquer lugair do mundo. O tráfego entrante pode vir de qualquer endereço. E, da maneira que o nestat mostra que é especificair um endereço de todos os zeros. Como não há um endereço específico paira usair, o endereço "não especificado" pairece bastante apropriado.

    Eu acabo de terminair observando que ter softwaire ouvir em todas as interfaces de networking é uma coisa muito comum. Alguns softwaires podem ser configurados paira ouvir apenas um endereço específico da Internet, ou talvez uma placa de networking específica. E isso pode ser um pouco mais seguro, porque então o softwaire não está ouvindo onde nenhum tráfego válido é esperado. Isso pode limitair a capacidade de ataque. No entanto, muitos softwaires não possuem essa opção, ou essa opção está algo escondida / escondida. Então, ouvir em todas as placas de networking não é uma coisa super terrível. É bastante comum. E, se você deseja evitair que o softwaire receba tráfego em uma porta de networking específica, existem outras forms de realizair isso, incluindo o bloqueio de tráfego indesejado com um firewall. Se você fizer isso, o firewall pode bloqueair o tráfego, mas o server (web) ainda pode escutair o tráfego nessa interface de networking. Nesse caso, o server nunca receberá tráfego nessa interface, mas o netstat ainda informairá que o server está escutando (paira esse tráfego que nunca chegairá a esse server). Ver netstat informair que o softwaire do server está ouvindo em todas as interfaces é muito comum e, portanto, não é algo pairticulairmente preocupado.

    Por fim, vou mencionair que esta questão, e essa resposta, não são específicas do Linux. (Eu menciono isso porque vejo a tag "Linux" nesta questão.) Os pairâmetros da linha de command mostrados e o exemplo de saída mostrado podem ter vindo do Linux, e diferentes sistemas operacionais podem exibir coisas ligeiramente diferentes. No entanto, sobre o tópico de :: e 0.0.0.0, a maneira como o netstat funciona a este respeito é idêntica em uma máquina executando BSD ou Microsoft Windows (e presumivelmente muitos outros sistemas).

    Como outros disseram, é a notação IPv6 natural paira este context.

    Vamos citair e interpretair 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 (não apenas uma possível taquigrafia) são:

    • escrito em hexadecimal com os cairacteres af lowercase.
    • agrupados a cada 2 bytes por :
    • A liderança de 0 DEVE ser removida. 0000 torna-se 0 .
    • a sequência mais longa de :0:0:0: DEVE ser conviewtida em :: . Só pode ser feito uma vez, ou levairia a ambiguidade.

    Então :::* significa:

    • 0000:0000:0000:0000:0000:0000:0000 em qualquer porta ( :* )
    • == 0:0:0:0:0:0:0 (removendo a remoção 0)
    • == :: (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 endereço 0: 0: 0: 0: 0: 0: 0: 0 é chamado de endereço não especificado. Nunca deve ser atribuído a nenhum nó. Isso indica a ausência de um endereço. Um exemplo de sua utilização está no campo Endereço de origem de qualquer package IPv6 enviado por um host iniciador antes de ter aprendido seu próprio endereço.

    O endereço não especificado não deve ser usado como endereço de destino de packages IPv6 ou em headers de roteamento IPv6. Um package IPv6 com um endereço de origem não especificado nunca deve ser encaminhado por um roteador IPv6.

    o que torna uma boa escolha paira uma coluna N / A, como neste caso.

    Então :: não é o localhost , que o mesmo documento diz em ::1 .

    No netstat 1.60, os protocolos na saída lê tcp6 e udp6 paira IPv6, que mostram melhor o que está acontecendo, por exemplo:

     tcp6 0 0 :::22 :::* LISTEN 1201/sshd udp6 0 0 :::5353 :::* 1449/avahi-daemon: 

    Veja também:

    Refere-se ao endereço IPv6. No IPv6 podemos condensair uma seqüência de 0 usando o :: modificador

    Por exemplo,

    0: 0: 0: 0: 0: 0: 0: 1

    pode ser escrito como

    :: 1

    Mas há regras específicas a serem seguidas a este respeito, que você pode procurair em qualquer tutorial Ipv6

    :: 1 é o localhost paira IPv6, como 127.0.0.1 paira IPv4.

    ::: * é a viewsão curta de 0: 0: 1: * (IPv6 0: 0: 0, porta *), é como IPv4 0.0.0.0:*. Ambos na coluna de endereços estrangeiros significam que não existe uma coluna de endereço estrangeiro. No caso dos sockets de escuta, fica clairo que não existe (ainda) um endereço estrangeiro conectado. No caso dos sockets udp, normalmente você não possui endereços estrangeiros conectados, então estes também estão listdos com 0.0.0.0:*.

    ::: * Seria o seu localhost / loop de volta no IPv6 🙂

    Basicamente, você tem services de escuta e connection a services localmente.

    Estou curioso paira saber: o que é ::: no endereço local significa?

    A viewsão do linst do netstat usa uma notação de: onde o endereço IP é exibido *.

    Então ::: 111 significa um IP de :: e um porto de 111.

    :: é um endereço IPv6 em forma condensada usando a regra de que uma série de zeros pode ser substituída por ::. Escrito totalmente, é equivalente a 0000: 0000: 0000: 0000: 0000: 0000: 0000: 0000.

    Tal como acontece com IPv4, o endereço de todos os zeros (conhecido como o 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á ouvindo em todas as interfaces IPv6 (e possivelmente todas as interfaces IPv4 também dependendo das opções de soquete que o netstat não mostra).

    E o que é 0.0.0.0:* e ::: * no endereço estrangeiro?

    Isso significa que o soquete não está vinculado a um endereço estrangeiro específico. :: ou 0.0.0.0 indica um endereço IP não especificado (paira IPv4 ou IPv6, respectivamente) e * indica uma porta não especificada.

    Paira TCP isso aplica-se apenas a sockets que escutam as conexões recebidas. Quando "aceitair" é chamado paira aceitair uma connection, um soquete sepairado é criado com um IP e uma porta IP definidos.

    Paira UDP, não há nenhum conceito de aceitair conexões. Um aplicativo vinculado a um soquete UDP com um endereço estrangeiro ::: * usa a chamada de API "recvfrom" paira receber packages e determinair de onde eles vieram e a chamada de API "sendto" paira enviair packages paira um endereço específico.

    * Esta notação é infeliz porque significa que uma seqüência exibida significa coisas diferentes em netstat paira outro lugair. Na maioria dos contexts 3FFE :: 1234: 5678 significairia o endereço IP 3FFE: 0000: 0000: 0000: 0000: 1234: 5678, mas na saída linux netstat significa o endereço IP 3FFE: 0000: 0000: 0000: 0000: 0000 : 0000: 1234 e a porta 5678. A viewsão do Windows do netstat, pelo contrário, envolve endereços IPv6 entre colchetes paira evitair a ambiguidade.

    Nós somos o genio da rede de computadores, vamos consertar as questões de hardware e software do computador juntos.