1

Соединение Telnet с эхо-службой успешно выполняется для имен хостов localhost и 127.0.0.1 , но не удается с ::1 именем хоста:

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:~$ 

Моя собственная программа, пытающаяся общаться по IPv6-адресу, тоже не работает. Почему адрес IPv6 отклонен?

ОС: Ubuntu 12.04 32 битная.

Дополнительная информация:

Для любых программ-клиентов TCP/UDP (не только telnet + echo) я пробовал разные имена хостов. Предполагая, что IP-адрес компьютера 10.90.185.73 (fe80::21b:21ff:fe5e:28af), я протестировал следующие варианты:

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

3 ответа3

2

Проблема решается добавлением строки flags = IPv6 в файл \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
}                                                                               
1

Я думаю, что это будет работать для вас ... Сначала установите xinetd с помощью этой команды.

root @ localhost:~ # apt-get установить xinetd

Затем перейдите в этот каталог

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

создать в файле с именем как telnet

откройте этот файл (telnet) и скопируйте этот контент в этот файл

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

Затем перезапустите службу xinetd, используя эту команду

root @ localhost:~ # служба xinetd перезапустить

Это оно.

Теперь проверь телнет

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.
0

Адрес не отклоняется, соединение есть, потому что на этом порту нет списка серверов на эхо-порту.

Скорее всего, эхо-сервер управляется xinetd и будет файл /etc/xinetd.d/echo-stream который определяет, какие порты и адреса он должен прослушивать - чтение man xinetd.conf должно помочь вам узнать, как вы можете использовать IPv6. включить его.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .