如何透明地将端口从IPv4隧道传输到远程IPv6设备?


9

在家里,我连接了一个IPv6地址,此外,我的提供商还提供了类似NAT的设置,通过该设置,我可以接收与其他客户共享的公共IPv4地址(原因显然是我们的IPv4地址使用量很低)。

结果,当我处于IPv4网络上时,我无法在家中访问我的设备(例如,VPN网关)。但是,我确实有一个同时具有IPv4和IPv6地址的服务器。因此,如果我通过服务器,应该有可能到达家用设备。

到目前为止,我的想法是:由于在IPv6上,每个设备都有自己的IP,因此我在家的服务器会获得一个静态IPv6 IP。我的远程服务器已经具有静态IPv4和IPv6。

现在,当我想在家中访问我的OpenVPN服务器时,我会在路由器中打开端口1194,而NAT会将连接传递到那里的服务器。在我的新方案中,我想在远程服务器上的端口1194(或其他端口,无所谓)上进行连接,并且应该采用该连接并将其通过隧道传输到我的家庭服务器(因为它们都具有IPv6)。

在图形上,这意味着:

移动设备(IPv4)->远程服务器(IPv4 + IPv6)->本地服务器(IPv6)

但这仅应在选择的端口上发生(或者是否有比通过端口选择更聪明的方法?)。

我的问题是,如何实现此设置?

应该在哪个级别上运行?如果要通过端口进行操作,显然必须在TCP / UDP层转发数据包。我的第一个想法是iptables,但是iptables可以将数据包转发到远程IP吗?还是可以使用其他软件?还是应该在两个服务器之间创建一个隧道,然后在本地转发?我将如何处理?


1
您是否考虑过为笔记本电脑使用IPv6隧道代理?
迈克尔·汉普顿

@MichaelHampton感谢您的建议,但是我宁愿有一种不需要在设备上进行更改的方法,因为我也打算通过手机(android)和其他设备进行连接。从设备的角度来看,设置应该和以前一样简单。
javex 2014年

Answers:


11

我终于找到了一种将IPv4端口转发到仅IPv6主机的解决方案,该解决方案基本上使用socat:

socat TCP4-LISTEN:22,fork,su=nobody TCP6:[2a01:198:79d:1::8]:22

我的解决方案基本相同,除了我使用的是主机名以外,那里使用的是静态IP。注意不要使用带有主机名的方括号,因为它会将其解释为IP。

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.