我们公司是在一台 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 就可以看到客户端地址了