我想知道如何通过ssh / ipv4隧道(ptp连接)隧道传输tcp / ipv6流量.可能吗?我怎样才能实现这一目标?
解决方法
是的,这是可能的并且不是太困难,但解决方案非常不理想,因为SSH在TCP上运行并且具有合理的开销.
服务器必须在其配置文件sshd_config中:
PermitTunnel point-to-point
然后,您需要在两台计算机上都是root用户.您使用以下命令连接到服务器:
ssh -w any root@server
连接后,使用两个系统中的命令ip link来了解在每个系统中创建的tunN设备,并在以下命令中使用它.请注意,我使用的是示例站点本地地址,这些地址已过时,但对此介绍没有问题.
在服务器上:
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服务器有权访问的其他网络,因为目标具有返回到远程客户端的路由.
您还必须修复链接MTU,以便客户端不会发送服务器无法向前传输的数据包.这取决于服务器本身的IPv6链路的MTU.不要依赖路径MTU发现,因为它无法在SSH隧道上正常工作.如果有疑问,请从较低的MTU值开始,如1280(IPv6允许的最小MTU).