如何将特定的IPv6地址和端口路由到另一个端口?

我刚刚得到了一个IPv4地址的VPS以及一些IPv6地址configuration,而我刚刚在Ubuntu / Linux中进行路由select。 我想将具有特定IPv6和端口(即端口80)的请求作为目的地路由到该地址上的特定端口(即端口8000)。

在伪代码中,我想要的是以下内容:

if($DESTINATION_IP == [specific IPv6-address]:80) route to port: 8000 

当某个应用程序正在监听[特定IPv6地址]:8000时,它将收到发送到[特定IP地址]:80的请求。 但是当我使用[另一个IPv6地址]:80时,它不会路由到那个端口。

这似乎很简单,我想我将不得不使用ip6tables的工作,但我不知道如何实现这一目标。

非常感谢。

你不能用ip6tables转发端口,因为相关的netfilter目标是纯IPv4的(由于它们与NAT的关系,哪些IPv6被删除 )。

当然,最好的解决scheme是让应用程序监听正确的地址和端口,然后删除权限。

如果您确实需要这样做,因为您的应用程序编写不当,无法在1024以下的端口上侦听,请设置xinetd来执行端口转发。 例如(这是未经testing):

 service dumb-app { flags = IPv6 type = UNLISTED socket_type = stream protocol = tcp wait = no user = root bind = 2001:db8::f04d port = 80 redirect = ::1 8000 }