在 LAN 上的 Linux 机器之间测试 IPv6

在 LAN 上的 Linux 机器之间测试 IPv6

我正在尝试设置一个 IPv6 测试平台。非常简单:只需两个 Ubuntu Linux 盒子通过 LAN 相互通信。两个盒子都有有效的 IPv4 连接,但我无法通过 IPv6 使用 SSH。在此之后如何,我已为这两台机器指定了站点本地范围 (fec0::) 中的地址。在第一个机器上,我运行了:

sudo ifconfig eth0 inet6 add fec0::1/64

第二次,我运行:

sudo ifconfig eth0 inet6 add fec0::2/64

然后我检查了路由表,发现每个路由表似乎都有一条通过 eth0 接口到达该网络的路由。接下来,我添加了一个/etc/hosts从第二个框指向第一个框的条目。但是当我尝试从第二个框通过 SSH 连接到第一个框时,SSH 客户端就挂起了。没有任何错误或任何异常。如果我tcpdump在客户端上运行,我根本看不到 IPv6 流量。发生了什么?

请注意,如果我通过 SSHip6-localhost从服务器机器连接到其自身,则一切正常,因此这似乎不是 SSH 问题。任何帮助都非常感谢。

答案1

首先,如果您已经ufw安装,请检查选项/etc/default/ufw是否IPV6=no已设置。您必须将其设置为yes,否则ufw将默认对所有 IPv6 流量进行防火墙保护。

完成此操作后,尝试一些您在学习 IPv6 时应该了解的基本诊断。

您应该做的第一件事是安装ndisc6软件包,然后尝试进行邻居请求。(这相当于在 IPv4 中执行 ARP 请求)

sudo apt-get install ndisc6

请注意,您需要universe为此启用存储库。

然后,从你的第一台机器:

ndisc6 fec0::2 eth0

这将确保您可以找到的 MAC 地址fec0::2

(请注意,该ndisc6软件包还附带一个方便的实用程序,rdisc6如果您的网络上有 IPv6 路由器,它会很有用;它将检查路由器是否正确响应。)

验证邻居发现有效后,再尝试ping6 fec0::2

如果仍然遇到问题,您可能需要发布其他诊断信息:

/sbin/ip -6 addr
/sbin/ip -6 neigh
/sbin/ip -6 route
sudo /sbin/ip6tables -L

答案2

我们需要更多信息才能真正提供帮助——首先,您能否通过 IPv6 在两个主机之间成功 ping 通?如果您无法 ping 通,则您仍需要解决一个更基本的问题...

假设你ping(基本连接有效)在 netstat 中仔细检查(或通过从本地框 SSHing 到 fec0::N 地址)以确保您的 SSH 守护程序正在监听您尝试使用的 IPv6 地址。您可能需要编辑 sshd.conf 文件和/或重新启动 sshd,以便它意识到有新的 v6 地址需要监听。

相关内容