使用 iptables 将 ipv6 转发到 ipv4?

使用 iptables 将 ipv6 转发到 ipv4?

目前我有一个设置,由于配置需要很长时间才能修复,我有一个只能通过 ipv4 访问的服务器。但是,我还有一个可以通过 ipv6 访问的服务器。我想知道我是否可以使用 iptables 将某个端口上的 ipv6 流量从其中一个服务器转发到使用 ipv4 流量的另一个服务器。

答案1

IPtables 目前无法做到这一点,因此您需要一个用户空间进程来代理连接。索卡特是一个适合此目的的工具:

socat TCP6-LISTEN:1234,fork TCP4:1.2.3.4:1234

答案2

正如所指出的对你的问题的评论即使三年过去了,NAT64 仍远未准备好。

不过你可以尝试6tunnel,正如困惑所暗示的那样。

幸运的是,它存在于 Debian 和 Ubuntu 存储库中,因此你可以使用 轻松安装它sudo apt-get install 6tunnel。如果你使用的是其他系统,则必须从来源

从源代码构建实际上并不难,只需运行一些命令(以 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)。
  • 原港口是您要绑定的端口。
  • 目标主机是您将流量转发到的位置。它可以是任何地方:本地主机,或您网络或互联网上的其他地方。
  • 目的端口是目标主机上将接收转发流量的端口。

例如,如果您希望允许仅支持 IPv4 的服务器(监听端口 1337)通过 IPv6 进行访问,请使用:

6tunnel -6 1337 localhost 1337

上述命令将在 IPv6 上监听端口 1337,并通过 IPv4 将流量转发到同一台机器上的端口 1337。然后它将在后台运行,因此您不必担心。

实际上,您应该设置一个 cron 作业以确保它仍在运行。6tunnel提供了一个例子为了您的方便!在启动时运行它也不是一个坏主意。

要获得更多文档,请运行6tunnel -hman 6tunnel

答案3

的最新版本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它可能会与您的基本系统一起安装或在经批准的供应商存储库中可用。

答案4

更重要的是,它能让人们找到这个页面,而不是 OP(我来这里是为了寻找 IPv4(Twisted)应用程序的 IPv6 连接解决方​​案),一种可能性是应用程序 6tunnel,监听 IPv6 并将请求转发到另一个接口和端口。

相关内容