TCP / IPv6通过ssh隧道

我想知道如何通过隧道隧道tcp / ipv6stream量(ptp连接)。 可能吗? 我怎么能做到这一点?

是的,这是可能的,也不是太困难,但是这个解决scheme是非常不理想的,因为SSH在TCP上运行并且具有合理的开销。

服务器必须在其configuration文件sshd_config

 PermitTunnel point-to-point 

然后,你需要在两台机器上都是 root的。 您使用以下方式连接到服务器:

 ssh -w any root@server 

连接后,使用两个系统中的命令ip link来知道哪个tunN设备是在每个设备中创build的,并在以下命令中使用它。 请注意,我正在使用示例站点本地地址,这是过时的,但可以用于此介绍。

在服务器上:

 server# ip link set tun0 up server# ip addr add fec0:1::1/112 dev tun0 

在客户端:

 client# ip link set tun0 up client# ip addr add fec0:1::2/112 dev tun0 

这足够了,如果没有防火墙规则阻塞,就可以通过隧道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 

这将允许您的客户端ping通服务器有权访问的其他networking,因为目标有路由回您的远程客户端。

您还必须修复链路MTU,以便客户端不会发送服务器无法向前传输的数据包。 这取决于服务器本身的IPv6链路的MTU。 不要依赖pathMTU发现,因为它不能在SSH隧道上正常工作。 如果有疑问,从一个较低的MTU值开始,如1280(IPv6允许的最小MTU)。