欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 八卦 > 雷池+frp 批量设置proxy_protocol实现真实IP透传

雷池+frp 批量设置proxy_protocol实现真实IP透传

2024/10/24 1:48:54 来源:https://blog.csdn.net/qq_60548077/article/details/142304694  浏览:    关键词:雷池+frp 批量设置proxy_protocol实现真实IP透传

需求背景

在内网环境中部署了safeline安全防护系统,希望通过frp实现外网对内部web网站服务的访问,并确保safeline能够记录真实的攻击IP来源。由于safeline和frp都部署在同一台服务器上,我们需要通过配置来实现这一需求。

frp客户端配置

对于frpc(frp客户端),我们只需在https配置上添加transport.proxyProtocolVersion = "v2"即可实现proxy_protocol的支持。例如:

[[proxies]]
name = "web1"
type = "https"
localIP = "192.168.2.103"
localPort = 443
subdomain = "web1"
transport.proxyProtocolVersion = "v2"[[proxies]]
name = "web2"
type = "https"
localIP = "192.168.2.103"
localPort = 443
subdomain = "web2"
transport.proxyProtocolVersion = "v2"

保存配置并重启frp服务后,frpc将支持proxy_protocol。

safeline配置

由于safeline不支持通过web界面添加proxy_protocol支持,我们需要直接修改其配置文件。

  1. 修改proxy_params配置文件

编辑/data/safeline/resources/nginx/proxy_params文件,全局开启proxy_protocol,并设置set_real_ip_from为frps服务器的IP地址。例如:

set_real_ip_from 服务器的IP地址;
real_ip_header proxy_protocol;
  1. 创建config-proxy_protocol.sh脚本

为了批量添加或移除所有站点的proxy_protocol支持,我们创建一个脚本。该脚本会遍历/data/safeline/resources/nginx/sites-enabled目录下的所有IF_backend文件,并在监听部分添加或移除proxy_protocol支持。

脚本内容如下(请根据实际情况修改主域名和白名单子域名):

#!/bin/bash# 主域名
main_domain="ttxs.com"# 白名单子域名列表
whitelist_subdomains=("op1" "op2")# ...(省略部分代码)# 主处理逻辑
for file in IF_backend_*; do[ -f "$file" ] || continue# ...(省略部分代码)
done# 测试并重新加载Nginx配置
echo "测试Nginx配置..."
if docker exec safeline-tengine nginx -t; thenecho "重新加载Nginx配置..."docker exec safeline-tengine nginx -s reloadecho "操作完成"
elseecho "Nginx配置测试失败,未重新加载配置"exit 1
fi

给脚本添加执行权限后,即可通过传入参数truefalse来批量添加或移除proxy_protocol支持。

测试与验证

完成上述配置后,访问配置好的域名,检查小地图是否正常显示归属地,以验证配置是否成功。

通过以上步骤,我们实现了在内网部署safeline并通过frp让外网访问内部web网站服务的同时,确保safeline能够记录真实的攻击IP来源。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com