Jul*_*ano 16
是的,这是可能的,而且不太困难,但解决方案非常次优,因为 SSH 运行在 TCP 上并且具有合理的开销。
服务器的配置文件中必须有sshd_config:
PermitTunnel point-to-point
Run Code Online (Sandbox Code Playgroud)
然后,您需要在两台机器上都是root 。您使用以下方法连接到服务器:
ssh -w any root@server
Run Code Online (Sandbox Code Playgroud)
连接后,ip link在两个系统中使用该命令可以知道每个系统中创建了哪个tunN设备,并在以下命令中使用它。请注意,我使用的示例站点本地地址已过时,但对于本介绍来说还可以。
在服务器上:
server# ip link set tun0 up
server# ip addr add fec0:1::1/112 dev tun0
Run Code Online (Sandbox Code Playgroud)
在客户端:
client# ip link set tun0 up
client# ip addr add fec0:1::2/112 dev tun0
Run Code Online (Sandbox Code Playgroud)
如果没有防火墙规则阻止,这足以使您可以通过隧道 ping 另一端。下一步是设置隧道上的路由(不要忘记 net.ipv6.conf.default.forwarding=1),然后调整链路 MTU 以获得最佳性能。
server# sysctl net.ipv6.conf.all.forwarding=1
client# ip -6 route add default via fec0:1::1
Run Code Online (Sandbox Code Playgroud)
这将允许您的客户端 ping 服务器有权访问的其他网络,前提是目标具有返回远程客户端的路由。
您还必须修复链接 MTU,以便客户端不会发送服务器无法转发的数据包。这取决于服务器本身的 IPv6 链路的 MTU。不要依赖路径 MTU 发现,因为它无法通过 SSH 隧道正常工作。如果有疑问,请从低 MTU 值开始,例如 1280(IPv6 允许的最小 MTU)。