TCP/IPv6 通过 ssh 隧道

TCP/IPv6 通过 ssh 隧道

我想知道如何通过 ssh/ipv4 隧道 (ptp 连接) 传输 tcp/ipv6 流量。这可能吗?我该如何实现?

答案1

是的,这是可能的并且不太困难,但是解决方案不是最优的,因为 SSH 通过 TCP 运行并且具有合理的开销。

服务器的配置文件中必须包含sshd_config

PermitTunnel point-to-point

然后,你需要 root两个都机器。您可以使用以下方式连接到服务器:

ssh -w any root@server

连接后,在两个系统中使用命令ip link来了解哪个隧道在每个命令中创建设备,并在以下命令中使用它。请注意,我使用的是示例站点本地地址,这些地址已经过时,但对于本介绍来说没问题。

在服务器上:

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)。

相关内容