ehang-io / nps

一款轻量级、高性能、功能强大的内网穿透代理服务器。支持tcp、udp、socks5、http等几乎所有流量转发,可用来访问内网网站、本地支付接口调试、ssh访问、远程桌面,内网dns解析、内网socks5代理等等……,并带有功能强大的web管理端。a lightweight, high-performance, powerful intranet penetration proxy server, with a powerful web management terminal.
https://ehang.io/nps/documents
GNU General Public License v3.0
29.71k stars 5.36k forks source link

如果使用tcp隧道,应该怎么获取客户端IP地址呢 #1272

Open lantinglou opened 4 months ago

lantinglou commented 4 months ago

使用TCP隧道映射的80和443端口,网站正常,但是获取不到客户端的IP地址。 其他TCP服务是否也获取不到客户的IP地址? 请问怎么处理?

skyhhjmk commented 4 months ago

我的处理方法是使用nginx作为入口,反向代理TCP隧道的端口,这样可以将用户的ip信息加进http头中

lantinglou commented 4 months ago

我的处理方法是使用nginx作为入口,反向代理TCP隧道的端口,这样可以将用户的ip信息加进http头中 http可以,但是测试过https不可以,有解决办法吗?

skyhhjmk commented 4 months ago

有具体的报错吗,或者说描述一下https不可以是怎么一个不可以

lantinglou commented 4 months ago

没有错误,只是获取不到用户真实IP,获取到的是npc客户端的IP

skyhhjmk commented 4 months ago

抱歉我理解错了,尝试在后端(若为nginx)加入

set_real_ip_from 0.0.0.0/0;
real_ip_header X-Forwarded-For;

如果它获取到了错误的IP,请继续尝试将上述内容修改为:

set_real_ip_from 0.0.0.0/0;
real_ip_header X-Real-IP;
lantinglou commented 4 months ago

谢谢回复,不能在后端nginx加入这些参数,因为是给其他人用的,我进不了系统。只能在nps服务器或者nps系统上想办法。

skyhhjmk commented 4 months ago

在我的技术能力内我认为不对后端nginx做出设置无法达到获取真实IP的目的,但你也许可以看看这个分支,这个分支修复了很多nps的bug,并且加入了更多技术细节

https://github.com/yisier/nps

lantinglou commented 4 months ago

非常感谢,nps的作不是更新了?好久no update.

skyhhjmk commented 4 months ago

是的,nps的原作者貌似已经停止更新,但幸运的是有大佬接手了开发工作并在另一个仓库继续维护

lantinglou commented 4 months ago

谢谢我去看一下。