技术解析

彦祖们,求推荐一款 Linux 端口转发软件
0
2021-06-12 02:18:58
idczone

我们公司是在一台 DMZ 主机,linux 系统上用 iptables 做端口转发,但是 iptables 转发后就看不到客户端的 IP 了,被 iptables 做了源地址转换。nginx 和 haproxy 能看国外服务器到客户端 IP,但是配置比较麻烦,有时需要批量端口转发,比如 80-90 批量转发到 80-90 端口,没有 iptables 方便。 能看到客户端 IP,配置方便,支持批量端口转发,有这样的软件不


可以使用 frp

v2ray 能满足到这个要求,但是配置也挺复杂的,需要一定的学习能力。

gost

go-tcp-proxy_1.0.2_linux_amd64

可以安装个 nginx 图形化管理工具来配置 nginx

https://blog.ghostry.cn/server/851.html


- **nginx-proxy-manager** [https://github.com/jc21/nginx-proxy-manager]( https://github.com/jc21/nginx-proxy-manager)
- **nginxWebUI** [https://github.com/cym1102/nginxWebUI]( https://github.com/cym1102/nginxWebUI)
- **nginx-ui** [https://github.com/schenkd/nginx-ui]( https://github.com/schenkd/nginx-ui)
除了这三个,还有吗?

这文章错误的。

只能说你 DMZ 主机的 iptables 配置得不对,错误地进行了 SNAT,好好改一下,入方向包不要覆盖源地址

caddy

github.com/Ehco1996/ehco
推荐一下我自己写的,支持配置文件

Socat 是不是

rinetd

firewalld

先搞清楚你要转发什么协议还需要知道源地址,如果 HTTP 协议 nginx 之类反向代理都支持,修改 x-forward
如果你要转发 FTP 协议,那么协议本身不支持源地址表达,就没法做成你要的效果,除非转发前自己把源地址存到共享空间

我都是用 nc 没测试过能不能看到源地址
nc -l -k -p 80 -c "nc 1.2.3.4 80"

socat

traefik

rinetd

rinetd

你也是啊,肖战

rinetd

nginx

rinetd

最近用了一款 rinetd,可以很简单的转发端口,但不知道为什么一旦转发的数据量起来后就会出现断流的情况,没仔细研究,解决了问题就给关了

gost +1

tinyPortMapper,比 scop 还轻量化
udp2raw tunnel 大佬的作品

名字都叫错了,我是冠希.....

冠希哥,听说你在 LA 的高桥遇到一群混混被打劫了三百块?

rinetd+1

socat?

nginx 转发端口哪里复杂了

rinetd

iptables >socat >nginx >rinetd,注意 rinetd 有伪造的: https://github.com/boutell/rinetd/issues/8

rinetd 谨慎使用

rinetd +2

c++手写一个吧

L7 的转发不保证源地址 除非 Proxy Protocol 没记错的话 frp 支持端口段转发+Proxy Protocol

单个配置域名太蛋疼了把

感谢彦祖们的回复,试了 frp,得单独配置服务端和客户端,太麻烦弃了,gost 也是服务端客户端,rinetd 看到文章说不稳定,不敢用,找到 haproxy-wi 工具,官网一看要收费,算了,就用 nginx web 界面配置把,或者 lvs 。
这些工具都没法像 iptables 那样一条命令转发多个端口,比如 8000~8009 转发到 8000~8009,或许我该针对 nginx 或 lvs 写个批处理脚本?

和目标服务器建一个 vpn 再用 iptables 只做 DNAT 就可以看到客户端地址了

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服