当前位置: 首页 > article >正文

雷池+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; then
    echo "重新加载Nginx配置..."
    docker exec safeline-tengine nginx -s reload
    echo "操作完成"
else
    echo "Nginx配置测试失败,未重新加载配置"
    exit 1
fi

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

测试与验证

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

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


http://www.kler.cn/a/318421.html

相关文章:

  • Jmeter性能测试 -3数据驱动实战
  • 《TCP/IP网络编程》学习笔记 | Chapter 8:域名及网络地址
  • 怎么监控员工电脑?分享5个监控员工电脑的绝佳方法(立竿见影!建议收藏!)
  • 设备接入到NVR管理平台EasyNVR多品牌NVR管理工具/设备的音视频配置参考
  • 分布式和并发模型的比较和讨论记录
  • day12:版本控制器
  • 详解c++:new和delete
  • 【数学二】极限的计算-夹逼准则、单调数列有界准则
  • apach httpd多后缀解析漏洞
  • 第十五章 文件上传
  • Linux 清空redis缓存及查询key值
  • 电子计算机科学中的运维技术:概念(内涵和外延)、历史、现状与展望?
  • 【C++二叉树】105.从前序与中序遍历序列构造二叉树
  • OpenAi assistant run always fails when called from PHP
  • Go unique包:突破字符串局限的通用值Interning技术实现
  • 【M-LOAM学习】
  • 【Java】关键字-abstract【主线学习笔记】
  • 《算法笔记》例题解析 第3章入门模拟--4日期处理(9题)2021-03-03
  • 直流负载箱的主要功能有哪些?
  • 数字化转型中的供应链管理优化
  • 鸭脖变“刺客”,啃不起了
  • Leetcode算法基础篇-贪心算法
  • 输入5个数,求中值,verilog实现
  • more、less 命令:阅读文本
  • 电商效果图渲染神器:轻松高效出图
  • [docker][软件]docker快速安装rabbitmq