使用 echo 服务的 Telnet 连接对于localhost
和127.0.0.1
主机名成功,但对于主机名失败::1
:
alex@u120432:~$ telnet localhost 7 尝试 127.0.0.1... 已连接到本地主机。 转义字符是‘^]’。 123 123 ^] telnet> q 连接已关闭。 alex@u120432:~$ telnet ::1 7 正在尝试::1... telnet:无法连接到远程主机:连接被拒绝 alex@u120432:~$
我自己的程序尝试使用 IPv6 地址进行通信也失败了。为什么 IPv6 地址被拒绝?
操作系统:Ubuntu 12.04 32 位。
附加信息:
对于任何 TCP/UDP 服务器-客户端程序(不仅仅是 telnet + echo),我尝试了不同的主机名。假设计算机 IP 地址为 10.90.185.73 (fe80::21b:21ff:fe5e:28af),我测试了以下选项:
localhost-有效 127.0.0.1——有效 ::1 – 连接被拒绝 10.90.185.73 - 有效 计算机名称-作品 ::ffff:10.90.185.73 - 有效 fe80::21b:21ff:fe5e:28af-连接被拒绝
答案1
flags = IPv6
通过在 \etc\xinetd.d\echo 文件中添加行可以解决该问题:
服务回音 { 禁用 = 否 类型 = 内部 id = 回显流 socket_type = 流 协议 = tcp 标志 = IPv6 用户 = root 等待 = 不 } 服务回音 { 禁用 = 否 类型 = 内部 id = echo-dgram socket_type = dgram 协议 = udp 标志 = IPv6 用户 = root 等待 = 是 }
答案2
我认为这对你有用...首先xinetd
使用此命令进行安装。
root@localhost:~#apt-get install xinetd
然后切换到这个目录
root@localhost:~# cd /etc/xinetd.d/
在名为的文件上创建telnet
打开该文件(telnet)并将该内容复制到该文件
服务 telnet { 禁用 = 否 标志 = 重复使用 socket_type = 流 等待 = 不 用户 = root 服务器 = /usr/sbin/in.telnetd log_on_failure += 用户ID }
然后使用此命令重新启动 xinetd 服务
root@localhost:~# 重启 xinetd 服务
就是这样。
现在检查 telnet
root@localhost:~# telnet 127.0.0.1 尝试 127.0.0.1... 已连接到 127.0.0.1。 转义字符是‘^]’。 Ubuntu 12.04 LTS 本地主机登录:最大 密码: 上次登录:2012 年 11 月 29 日星期四 20:00:24 IST,来自 pts/3 上的 localhost 欢迎使用 Ubuntu 12.04 LTS(GNU/Linux 3.2.0-23-generic-pae i686) * 文档:https://help.ubuntu.com/ max@localhost:~$ 退出 登出 外部主机关闭连接。
root@localhost:~# telnet ::1 正在尝试::1... 已连接到::1。 转义字符是‘^]’。 Ubuntu 12.04 LTS 本地主机登录:最大 密码: 上次登录:2012 年 11 月 29 日星期四 20:01:26 IST 从 localhost 登录,pts/5 欢迎使用 Ubuntu 12.04 LTS(GNU/Linux 3.2.0-23-generic-pae i686) * 文档:https://help.ubuntu.com/ max@localhost:~$ 退出 登出 外部主机关闭连接。
答案3
该地址并未被拒绝,而是连接被拒绝,因为该地址的回显端口上没有服务器列表。
回显服务器很可能由其管理,xinetd
并且会有一个/etc/xinetd.d/echo-stream
文件指定它应该监听的端口和地址——阅读man xinetd.conf
应该可以帮助您了解如何通过 IPv6 启用它。