IPv6-Adresse funktioniert nicht in Ubuntu

1

Die Telnet-Verbindung mit dem Echo-Dienst ist für erfolgreich localhost und 127.0.0.1 Hostnamen, scheitert aber mit ::1 Hostname:

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

Mein eigenes Programm, das versucht, über eine IPv6-Adresse zu kommunizieren, schlägt ebenfalls fehl. Warum wird eine IPv6-Adresse abgelehnt?

Betriebssystem: Ubuntu 12.04 32 Bit.

Zusätzliche Information:

Für alle TCP / UDP-Server-Client-Programme (nicht nur Telnet + Echo) habe ich verschiedene Hostnamen ausprobiert. Angenommen, die IP-Adresse des Computers lautet 10.90.185.73 (fe80 :: 21b: 21ff: fe5e: 28af), habe ich die folgenden Optionen getestet:

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
Alex F
quelle
kannst du deine einfügen? /etc/xinetd.d/telnet hier einstellen.
max
@max: /etc/xinetd.d/telnet: Keine solche Datei oder kein solches Verzeichnis
Alex F
ok ubuntu richtig sorry mein fehler ...
max
Lauf netstat -ntlp und Sie werden wahrscheinlich feststellen, dass Ihr Dienst nur IPv4 abhört. Ändern Sie Ihren Echo-Dienst so, dass er auch an IPv6 bindet.
gertvdijk
@gertvdijk - "Ändern Sie Ihren Echo-Dienst so, dass er auch an IPv6 bindet" - wie genau kann ich das tun? Echo Service selbst ist für mich nicht so interessant, mein Problem ist, dass jedes Programm mit IPv6-Adresse nicht funktioniert.
Alex F

Antworten:

2

Das Problem wird durch Hinzufügen gelöst flags = IPv6 Zeile zur Datei \ 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
}                                                                               
Alex F
quelle
1

Ich denke, das wird für dich funktionieren ... Zuerst installieren xinetd Verwenden Sie diesen Befehl.

root @ localhost: ~ # apt-get install xinetd

Wechseln Sie dann in dieses Verzeichnis

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

In Datei erstellen mit dem Namen telnet

öffne diese Datei (Telnet) und kopiere diesen Inhalt in diese Datei

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

Starten Sie dann den Dienst xinetd mit diesem Befehl neu

root @ localhost: ~ # service xinetd restart

Das ist es.

Überprüfen Sie nun das 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.
max
quelle
Vielen Dank. Der erste Teil ist bereits erledigt - der Echodienst ist aktiv und antwortet auf die Adresse 127.0.0.1. telnet ::1 funktioniert nicht. Wichtiger ist, dass mein eigenes Programm nicht mit IPv6-Adressen funktioniert ...
Alex F
0

Die Adresse wird nicht zurückgewiesen, die Verbindung wird hergestellt, da an dieser Adresse kein Server auf dem Echo-Port aufgelistet ist.

Höchstwahrscheinlich wird der Echoserver von verwaltet xinetd und es wird eine geben /etc/xinetd.d/echo-stream Datei, die angibt, welche Ports und Adressen abgehört werden sollen - Lesen man xinetd.conf Hier erfahren Sie, wie Sie IPv6 aktivieren können.

TomH
quelle
Der Echodienst ist aktiv - die Verbindung mit 127.0.0.1 oder localhost funktioniert.
Alex F