没有iptables的Linux上的端口转发?


34

我有一个Linux VPS(virtuozzo)服务器,我需要设置端口转发,但是我的托管服务提供商不允许iptables-nat内核模块,因此iptables -t nat-不起作用。

我正在寻找其他方法来做到这一点。我知道我可以使用openssh转发端口,但是我需要转发20+个不同的端口,即tcp和udp,所以这不是一个选择。

是否有任何适用于Linux的软件可以进行端口转发?


很好的问题+1。我不知道有什么解决方案,期待看看这里是否有东西。
Shurrican 2011年

然后,一个程序可以让您根据源IP将端口转发到不同的目标呢?
2011年

绝对不要使用基于Virtuozzo / OpenVZ的VPS完全避免此问题。
迈克尔·汉普顿

@MichaelHampton:并非极具建设性...
Nicolas Raoul

Answers:


47

使用称为“ socat”的工具,它是处理此类问题的好工具,并且已经打包在许多Linux发行版中。在此处阅读:http//www.dest-unreach.org/socat/doc/README

socat的端口转发示例:

socat TCP4-LISTEN:80,fork TCP4:www.yourdomain.org:8080

这会将端口80上的所有TCP连接重定向到www.yourdomain.org端口8080 TCP。


不要忘记,默认端口443是https,而不是端口80 :)
keiki 2013年

Socat是唯一可用于仅适用于ipv6的树莓
派的工具-chotchki 2013年

完美,立即解决了我的问题。注意,如果有的话,您需要确保传入端口在iptables中是打开的。
jancha'3

13

有一个很小的轻量级程序redir,可以很容易地配置。

apt-get install redir 基于Debian的发行版。


我过去曾经使用过此工具,并且效果很好...
Alex

我第二把这个工具。看来这不是软件包转发工具,而是tcp隧道。它将更改目标看到的源IP地址。因此,当您需要将一个端口重定向到另一台具有不同路由设置的计算机时,它非常有用。
scegg


6

xinetd支持将执行您想要的操作的重定向属性。正如其他人指出的那样,有许多程序可以处理重定向。

使用xinetd或使用该tcpwrappers库的其他程序将允许您在必要时应用访问限制。


4

xinet / inetd。例如:

重新导向

允许将TCP服务重定向到另一台主机。当xinetd在该端口上接收到TCP连接时,它会生成一个进程,该进程建立与指定主机和端口号的连接,并在两个主机之间转发所有数据。

http://linux.die.net/man/5/xinetd.conf


看起来很有趣,但仅限于您所说的TCP
Doud

4

我发现了一个名为portfwd的小型实用程序http://portfwd.sourceforge.net/完全满足我的需要(TCP和UDP转发),主页说它的最新更新时间为2002年,但最新版本为2007年,并且可以在2.6内核上运行。


我接受我的回答,因为它表明这是唯一完全支持TCP和UDP协议的软件。
troex 2011年

3

SSH执行端口转发,只要您可以建立SSL连接即可。


-3

好了,这是应该起作用的简单答案,这不是火箭科学,但是大多数人都过度复杂化了答案并将所有新特性混淆到Linux用户。

ufw允许2xxx

2xxx =您的端口号只要在服务器终端中键入该命令,即可打开所需的端口。


它只是打开面向服务器外部的接口上的端口。它不会将端口从一个IP重定向或转发到另一个IP。它打开了港口。
AmirHossein '18
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.