yisier / nps

在 0.26.10 版本的基础上修改而来的
https://ehang.io/nps/documents
GNU General Public License v3.0
1.8k stars 219 forks source link

获取用户真实IP #140

Closed ac-sc closed 1 month ago

ac-sc commented 6 months ago

image 操作手册上写的获取用户真实IP,只需要在配置文件nps.conf中设置http_add_origin_header=true就行。但是我抓包还是没有查看到在请求头里添加 X-Forwarded-For 和 X-Real-IP 字段。 请问这个字段NPS是会自动加上去的吗,还是说需要由上游服务器来来添加,nps只进行转发。

ac-sc commented 6 months ago

查看了原作者项目下的issue,发现也有同样问题。部同学查看了源码发现https缺少添加header的函数。请yisier大佬看看呢 @yisier

yisier commented 6 months ago

不是https缺少添加header的函数的问题,如果真这么简单就好了。 https 证书配置在客户端本地的话,nps 到客户端都是加密流量。

nps 支持 https 获取真实ip, 1.设置 https_just_proxy=false 2.在域名解析中设置 域名证书(证书路径)

image

ac-sc commented 6 months ago

不是https缺少添加header的函数的问题,如果真这么简单就好了。 https 证书配置在客户端本地的话,nps 到客户端都是加密流量。

nps 支持 https 获取真实ip, 1.设置 https_just_proxy=false 2.在域名解析中设置 域名证书(证书路径)

image

已经按照此步骤进行配置,抓包查看后发现只有http协议nps会插入 X-Forwarded-For 和 X-Real-IP 字段,可获取真实IP;但https未插入XFF,无法获取真实IP。

lfcz commented 6 months ago

这个问题困扰我好久了,不知道现在到底怎么才能完美解决

lantinglou commented 5 months ago

同样被困扰,https下无法获得用户真实IP,有什么解决办法吗?

另外其他服务比如SSH,有办法获得用户真实IP吗?

lfcz commented 4 months ago

同样被困扰,https下无法获得用户真实IP,有什么解决办法吗?

另外其他服务比如SSH,有办法获得用户真实IP吗?

目前来看nps对于获取真实ip这个还没有很好的支持,而且前几天尝试重新部署这个版本的nps,发现出现连接不了的问题,而换回停更的版本却一切正常。客户端和服务端都是用的正确的,不是混用不兼容造成的无法连接

huqitest commented 4 months ago

http或者https的化可以通过nginx代理nps的proxy_port,用nginx的功能来加强自己的需求

lfcz commented 4 months ago

http或者https的化可以通过nginx代理nps的proxy_port,用nginx的功能来加强自己的需求

能否详细说一说

luosxn commented 3 months ago

教程 https://blog.ecve.cn/index.php/2024/03/17/nps%e5%86%85%e7%bd%91%e7%a9%bf%e9%80%8fhttps%e4%bc%a0%e9%80%92%e7%94%a8%e6%88%b7%e7%9c%9f%e5%ae%9eip/

Dkrismile81 commented 2 months ago

不是https缺少添加标头的函数的问题,如果真这么简单就好了。https 证书配置在客户端本地的话,nps到客户端都是加密流量。

nps支持https获取真实ip, 1.设置https_just_proxy=false 2.在域名解析中设置域名证书(证书路径)

图像

image image image 下面的是我的一部分配置 image 我已经将https_just_proxy=false设置为false,且 image 在页面添加了证书,但是还是失败了,请问大神我现在应该怎么做https访问的时候会将ip添加进header里面@yisier

Dkrismile81 commented 2 months ago

不是https缺少添加header的函数的问题,如果真这么简单就好了。 https 证书配置在客户端本地的话,nps 到客户端都是加密流量。 nps 支持 https 获取真实ip, 1.设置 https_just_proxy=false 2.在域名解析中设置 域名证书(证书路径) image

已经按照此步骤进行配置,抓包查看后发现只有http协议nps会插入 X-Forwarded-For 和 X-Real-IP 字段,可获取真实IP;但https未插入XFF,无法获取真实IP。

想问一下你,你这边后续解决这个问题了吗?

ac-sc commented 2 months ago

不是https缺少添加header的函数的问题,如果真这么简单就好了。 https 证书配置在客户端本地的话,nps 到客户端都是加密流量。 nps 支持 https 获取真实ip, 1.设置 https_just_proxy=false 2.在域名解析中设置 域名证书(证书路径) image

已经按照此步骤进行配置,抓包查看后发现只有http协议nps会插入 X-Forwarded-For 和 X-Real-IP 字段,可获取真实IP;但https未插入XFF,无法获取真实IP。

想问一下你,你这边后续解决这个问题了吗?

暂时还没解决这问题,但有其它方式比如通过前置的NGINX插入XFF字段。但是如果NPS可以实现这功能就更好了。

Dkrismile81 commented 2 months ago

不是https缺少添加header的函数的问题,如果真这么简单就好了。 https 证书配置在客户端本地的话,nps 到客户端都是加密流量。 nps 支持 https 获取真实ip, 1.设置 https_just_proxy=false 2.在域名解析中设置 域名证书(证书路径) image

已经按照此步骤进行配置,抓包查看后发现只有http协议nps会插入 X-Forwarded-For 和 X-Real-IP 字段,可获取真实IP;但https未插入XFF,无法获取真实IP。

想问一下你,你这边后续解决这个问题了吗?

暂时还没解决这问题,但有其它方式比如通过前置的NGINX插入XFF字段。但是如果NPS可以实现这功能就更好了。

你现在是在NPS的前面又挂了一个NGINX吗?

ac-sc commented 2 months ago

对的

------------------ 原始邮件 ------------------ 发件人: Dkrismile81 @.> 发送时间: 2024年4月25日 15:49 收件人: yisier/nps @.> 抄送: aocheng @.>, Author @.> 主题: Re: [yisier/nps] 获取用户真实IP (Issue #140)

不是https缺少添加header的函数的问题,如果真这么简单就好了。 https 证书配置在客户端本地的话,nps 到客户端都是加密流量。 nps 支持 https 获取真实ip, 1.设置 https_just_proxy=false 2.在域名解析中设置 域名证书(证书路径)

已经按照此步骤进行配置,抓包查看后发现只有http协议nps会插入 X-Forwarded-For 和 X-Real-IP 字段,可获取真实IP;但https未插入XFF,无法获取真实IP。

想问一下你,你这边后续解决这个问题了吗?

暂时还没解决这问题,但有其它方式比如通过前置的NGINX插入XFF字段。但是如果NPS可以实现这功能就更好了。

你现在是在NPS的前面又挂了一个NGINX吗?

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you authored the thread.Message ID: @.***>

Dkrismile81 commented 2 months ago

好的,感谢分享你的方案

smile_zhao

---- 回复的原邮件 ---- | 发件人 | @.> | | 发送日期 | 2024年04月25日 17:05 | | 收件人 | yisier/nps @.> | | 抄送人 | Dkrismile81 @.>, Comment @.> | | 主题 | Re: [yisier/nps] 获取用户真实IP (Issue #140) |

对的

------------------ 原始邮件 ------------------ 发件人: Dkrismile81 @.> 发送时间: 2024年4月25日 15:49 收件人: yisier/nps @.> 抄送: aocheng @.>, Author @.> 主题: Re: [yisier/nps] 获取用户真实IP (Issue #140)

不是https缺少添加header的函数的问题,如果真这么简单就好了。 https 证书配置在客户端本地的话,nps 到客户端都是加密流量。 nps 支持 https 获取真实ip, 1.设置 https_just_proxy=false 2.在域名解析中设置 域名证书(证书路径)

已经按照此步骤进行配置,抓包查看后发现只有http协议nps会插入 X-Forwarded-For 和 X-Real-IP 字段,可获取真实IP;但https未插入XFF,无法获取真实IP。

想问一下你,你这边后续解决这个问题了吗?

暂时还没解决这问题,但有其它方式比如通过前置的NGINX插入XFF字段。但是如果NPS可以实现这功能就更好了。

你现在是在NPS的前面又挂了一个NGINX吗?

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you authored the thread.Message ID: @.***>

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.Message ID: @.***>

yisier commented 1 month ago

看下最新版 https 协议的改动

ac-sc commented 1 month ago

看下最新版 https 协议的改动

感谢! 我已经测试https协议转发到内网的http服务,可以获取真实IP。 但如果内网是https服务,好像是没实现。因为nps域名解析功能目前只能实现http-->http,或者https-->http。

yisier commented 1 month ago

看下最新版 https 协议的改动

感谢! 我已经测试https协议转发到内网的http服务,可以获取真实IP。 但如果内网是https服务,好像是没实现。因为nps域名解析功能目前只能实现http-->http,或者https-->http。

https -> https 也可以,你应该是没配置好,本地配置证书,nps 管理的证书需要清空。
本地 https 是无法获取真实IP的

Dkrismile81 commented 1 month ago

好的,多谢

smile_zhao

---- 回复的原邮件 ---- | 发件人 | @.> | | 发送日期 | 2024年06月04日 17:52 | | 收件人 | yisier/nps @.> | | 抄送人 | Dkrismile81 @.>, Comment @.> | | 主题 | Re: [yisier/nps] 获取用户真实IP (Issue #140) |

看下最新版 https 协议的改动

感谢! 我已经测试https协议转发到内网的http服务,可以获取真实IP。 但如果内网是https服务,好像是没实现。因为nps域名解析功能目前只能实现http-->http,或者https-->http。

https -> https 也可以,你应该是没配置好,本地配置证书,nps 管理的证书需要清空。 本地 https 是无法获取真实IP的

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.Message ID: @.***>

lfcz commented 1 month ago

看下最新版 https 协议的改动

感谢! 我已经测试https协议转发到内网的http服务,可以获取真实IP。 但如果内网是https服务,好像是没实现。因为nps域名解析功能目前只能实现http-->http,或者https-->http。

https -> https 也可以,你应该是没配置好,本地配置证书,nps 管理的证书需要清空。 本地 https 是无法获取真实IP的

意思是如果本地建站的话,想要实现https和获取真实IP,只能把证书部署在nps上,而不能部署在本地吗?