通过SSH隧道的TCP / IPv6


10

我想知道如何通过ssh / ipv4隧道(ptp连接)来隧道tcp / ipv6通信。可能吗?我该如何实现?

linux  ssh  ipv6 

您是否在尝试通过隧道传输ipV6流量?因为您的SSH隧道将允许您在IP隧道上使用IPV5或V6而没有问题,前提是两端的网络都支持它。
山姆·科根

2
TCP上的TCP通常不是一个好主意:sites.inka.de/sites/bigred/devel/tcp-tcp.html TCP上的TCP上的TCP:听起来没有什么好
Reece45 2011年

Answers:


15

是的,这是可能的,但不是太困难,但是该解决方案不是最理想的,因为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)。


1
IPv6支持的最小MTU为1280(而IPv4支持的最小MTU为576)。警告:如果您将MTU设置为1280以下,则您的IPv6地址将消失,并且只有重新启动SSH才能重新添加!
杰里米·维瑟

1
OS X没有ip命令,因此使用设置IP地址 sudo ifconfig tun0 inet6 fec0:1::2/112 up 并使用sudo route add -inet6 -mtu 1280 default fec0:1::1
larsr
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.