O endereço IPv6 não está funcionando no Ubuntu

1

A conexão Telnet com o serviço de eco é bem-sucedida para localhost e 127.0.0.1 nomes de host, mas falha com ::1 nome do host:

alex@u120432:~$ telnet localhost 7
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
123
123
^]

telnet> q
Connection closed.
alex@u120432:~$ telnet ::1 7
Trying ::1...
telnet: Unable to connect to remote host: Connection refused
alex@u120432:~$ 

Meu próprio programa tentando falar usando o endereço IPv6 também falha. Por que o endereço IPv6 é rejeitado?

SO: Ubuntu 12.04 32 bit.

Informações adicionais:

Para qualquer programa cliente-servidor TCP / UDP (não apenas telnet + echo), experimentei diferentes nomes de host. Supondo que o endereço IP do computador seja 10.90.185.73 (fe80 :: 21b: 21ff: fe5e: 28af), testei as seguintes opções:

localhost - works
127.0.0.1 - works
::1 - Connection refused
10.90.185.73 - works
computer-name - works
::ffff:10.90.185.73 - works
fe80::21b:21ff:fe5e:28af - Connection refused
    
por Alex F 29.11.2012 / 10:45

3 respostas

2

O problema é resolvido adicionando flags = IPv6 line ao arquivo \ etc \ xinetd.d \ echo:

service echo
{
    disable     = no
    type        = INTERNAL
    id      = echo-stream
    socket_type = stream
    protocol    = tcp
        flags           = IPv6  
    user        = root
    wait        = no
}                                                                               


service echo
{
    disable     = no
    type        = INTERNAL
    id      = echo-dgram
    socket_type = dgram
    protocol    = udp
        flags           = IPv6  
    user        = root
    wait        = yes
}                                                                               
    
por 04.12.2012 / 07:52
1

Eu acho que isso vai funcionar para você ... Primeiro instale xinetd usando este comando.

root@localhost:~#apt-get install xinetd

Em seguida, mude para este diretório

root@localhost:~# cd /etc/xinetd.d/

crie um arquivo chamado telnet

abra esse arquivo (telnet) e copie este conteúdo para esse arquivo

service telnet
 { disable     = no
   flag        = REUSE
   socket_type = stream
   wait        = no
   user        = root
  server       = /usr/sbin/in.telnetd
log_on_failure += USERID
}

Em seguida, reinicie o serviço xinetd usando este comando

root@localhost:~# service xinetd restart

É isso.

Agora verifique o telnet

root@localhost:~# telnet 127.0.0.1
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
Ubuntu 12.04 LTS
localhost login: max
Password: 
Last login: Thu Nov 29 20:00:24 IST 2012 from localhost on pts/3
Welcome to Ubuntu 12.04 LTS (GNU/Linux 3.2.0-23-generic-pae i686)

 * Documentation:  https://help.ubuntu.com/

max@localhost:~$ exit
logout
Connection closed by foreign host.
root@localhost:~# telnet ::1
Trying ::1...
Connected to ::1.
Escape character is '^]'.
Ubuntu 12.04 LTS
localhost login: max
Password: 
Last login: Thu Nov 29 20:01:26 IST 2012 from localhost on pts/5
Welcome to Ubuntu 12.04 LTS (GNU/Linux 3.2.0-23-generic-pae i686)

 * Documentation:  https://help.ubuntu.com/

max@localhost:~$ exit
logout
Connection closed by foreign host.
    
por 29.11.2012 / 15:37
0

O endereço não é rejeitado, a conexão é, porque não há lista de servidores na porta de eco naquele endereço.

O mais provável é que o echo server esteja sendo gerenciado por xinetd e haverá um arquivo /etc/xinetd.d/echo-stream que especifica quais portas e endereços ele deve escutar - a leitura de man xinetd.conf deve ajudá-lo a saber como você pode ativá-lo.

    
por 29.11.2012 / 11:37