目前,我有一个安装程序,由于配置需要永久修复,因此我有一台只能由ipv4访问的服务器。但是,我还有一个可以通过ipv6访问的服务器。我想知道是否可以使用iptables将某个端口上的ipv6通信从其中一台服务器转发到另一台使用ipv4通信的服务器。
目前,我有一个安装程序,由于配置需要永久修复,因此我有一台只能由ipv4访问的服务器。但是,我还有一个可以通过ipv6访问的服务器。我想知道是否可以使用iptables将某个端口上的ipv6通信从其中一台服务器转发到另一台使用ipv4通信的服务器。
Answers:
正如您对问题的评论所指出的那样,即使在三年后,NAT64仍未准备就绪。
但是,您可以尝试6tunnel
,如困惑所示。
幸运的是,它存在于Debian和Ubuntu存储库中,因此您可以使用轻松地安装它sudo apt-get install 6tunnel
。如果您使用的是其他系统,则必须从source构建它。
从源代码构建实际上并不难,只需运行一些命令(以root用户身份)即可:
git clone https://github.com/wojtekka/6tunnel && cd 6tunnel && ./autogen.sh && make && make install
这是其语法,经过简化:
6tunnel [-4|-6] [-l local-host] original-port destination-host destination-port
[-4|-6]
是可选的,您可以指定是否将绑定(听)在IPv4或IPv6(分别)。-l
也是可选的。它使您可以选择要绑定的地址(IPv4或IPv6)。例如,如果您想允许侦听端口1337的纯IPv4服务器通过IPv6进行访问,请使用:
6tunnel -6 1337 localhost 1337
上面的命令将侦听IPv6上的端口1337,并将流量通过IPv4转发到同一台计算机上的端口1337。然后它将在后台运行,因此您不必担心它。
实际上,您应该设置一个cron作业以确保它仍在运行。为您提供方便6tunnel
的示例!在启动时运行它也不是一个坏主意。
有关更多文档,请运行6tunnel -h
或man 6tunnel
。
的最新版本xinetd
还可以侦听IPv6,然后将连接转发到IPv4地址。
一个配置示例,该配置在端口3389上侦听IPv6连接并将其转发到内部IPv4地址的端口3389:
service rdp_port_forward
{
flags = IPv6
disable = no
type = UNLISTED
socket_type = stream
protocol = tcp
user = nobody
wait = no
redirect = 10.187.20.42 3389
port = 3389
}
这可能在更受限制的环境中很有用,因为xinetd
它可能与基本系统一起安装或在批准的供应商存储库中可用。
我想对利奥·兰姆斯的回答和投票发表评论,但是我没有足够的声誉。首先:非常感谢您。
对于使用此线程的任何人:我的ISP使用Dual Stack Lite将我的连接从IPv4更改为IPv6,这意味着我不再拥有自己的IPv4地址。这是一个问题,因为我想从任何不支持IPv6的地方访问我的IP摄像机。为了解决这个问题,我尝试了以下操作:
sudo 6tunnel -6 99 192.168.178.35 80
sudo 6tunnel -4 99 IPV6PREFIXROUTER:IPV6INTERFACEIDUUBUNTUMACHINE 99
ipv6前缀在我的路由器中表示,并且接口ID在IPv6转发过程中进行了映射。
现在,我可以使用vServer域example.com:99从任何地方访问摄像机。我计划要么获得可以完成这项工作的覆盆子,要么获得香蕉pi m3来完成其他任务。