目前我有一个设置,由于需要永久修复的configuration,我有一个服务器只能通过ipv4访问。 但是,我也有一个可以通过ipv6访问的服务器。 我想知道是否可以使用iptables将某个端口上的ipv6stream量从一台服务器转发到另一台使用ipv4stream量的服务器。
IPtables目前不能做到这一点,所以你需要一个用户空间进程来代理连接。 socat是一个合适的工具:
socat TCP6-LISTEN:1234,fork TCP4:1.2.3.4:1234
正如你对这个问题的评论所指出的那样,即使3年之后,NAT64也还没有做好准备。
然而,你可以尝试6 6tunnel ,正如困惑所暗示的那样。
幸运的是,它存在于Debian和Ubuntu存储库中,所以你可以使用sudo apt-get install 6tunnel很容易地安装它。 如果您使用的是其他系统,则必须从源代码构build。
从源代码构build并不难,只是运行一些命令(以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也是可选的。 它允许您select要绑定的地址(IPv4或IPv6)。 例如,如果要允许仅监听端口1337的仅IPv4服务器通过IPv6访问,请使用:
6tunnel -6 1337 localhost 1337
以上命令将监听IPv6上的端口1337,并通过IPv4将stream量转发到同一台机器上的端口1337。 它会在后台运行,所以你不必担心。
其实,你应该设置一个cron工作来确保它仍然在运行。 6tunnel为您的便利提供了一个例子 ! 在启动时运行它也不是一个坏主意。
有关更多文档,请运行6tunnel -h或man 6tunnel 。
xinetd最新版本也可以监听IPv6,然后将连接转发到IPv4地址。
在端口3389上侦听IPv6连接并将其转发到内部IPv4地址的端口3389的示例configuration:
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可能与您的基本系统一起安装,或者在批准的供应商存储库中可用。
更多的是为了人们寻找这个页面的好处,而不是必然的(我来这里寻找一个IPv4(Twisted)应用程序的IPv6连接的解决scheme),一种可能性是应用程序6tunnel,监听IPv6并将请求转发给另一个接口,港口。
我想评论狮子座答复和upvote,但我没有足够的声誉。 首先:非常感谢Leo Lam!
对于任何人来这个线程:我的ISP使用双栈精简版将我的连接从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为其他任务也。