使用 FRP 与反向代理实现安全内网穿透与真实访客 IP 识别

在自建服务器或家庭网络场景中,常需要让局域网服务能够被公网安全访问。FRP(Fast Reverse Proxy)是一款流行的内网穿透工具,可以帮助实现这一目标。当系统采用 HTTPS 与反向代理架构时,正确获取真实访客 IP 需要额外配置。本文介绍一种基于 FRP + Nginx + Proxy Protocol v2 的通用解决方案。 一、系统结构概览 整个体系由三部分组成: 逻辑关系如下: 这种架构可同时实现多服务转发、端口复用与 TLS 加密通信。 二、FRPS 配置(公网端) FRPS 作为核心入口,建议启用加密、认证和端口白名单。 要点说明: 三、FRPC 配置(内网端) FRPC 运行在内网,负责建立安全连接并转发本地主机服务。 配置说明: 四、Nginx 反向代理配置(内网) 反向代理用于终止 TLS 并将请求转发到后端应用。要让其识别 Proxy Protocol 头部,需要显式启用相关指令。 ⚠️ 注意启用 proxy_protocol 后,若直接在本机访问该端口(未通过 FRP),连接会因缺少协议头而失败。若需调试,可额外开放一个仅本地使用的不带 proxy_protocol 的监听端口。 五、验证与测试 六、安全建议 七、总结 通过 …

使用 systemd 管理 FRP 多实例与定期自动重启(兼容 Certbot 证书更新)

前言 在自建网络穿透体系中,FRP(Fast Reverse Proxy) 是一款非常高效、稳定的工具。搭建了一个小型但完整的结构: 由于使用 Certbot 为 FRPS 生成 HTTPS / TLS 证书,这些证书会在 90 天内自动续期。为了让 FRPS 与 FRPC 在证书替换后自动加载新证书、避免手动重启,设计了一个每两个月执行一次的自动重启计划。这既保证证书长期有效,也保持隧道连接的稳定性。 一、架构概览 角色 实例 主机类型 功能说明 FRPC frpc1、frpc2、(frpc3 预留) 局域网穿透节点 为内网设备提供公网访问 FRPS frps-main、frps-backup 公网 VPS 接收客户端连接,终止 TLS 二、服务文件结构 FRPC(客户端) /etc/systemd/system/frpc1.service: 第二个实例仅需复制并修改文件名与配置路径: FRPS(服务端) /etc/systemd/system/frps.service: 三、自动重启机制的设计思路 Certbot 证书默认有效期 90 天,但 FRPS / FRPC …

树莓派 3B+ 打造家庭内网代理服务器与自动化内网穿透方案

许多网络爱好者在构建家用网络环境时,常常会遇到以下需求: ✅ 硬件与系统环境 ✅ 主要功能需求 1️⃣ V2Ray 代理服务 通过在树莓派上搭建 V2Ray,可为家庭设备或个人设备提供安全的加密代理服务。 bash <(curl -L https://github.com/v2fly/fhs-install-v2ray/raw/master/install-release.sh) 2️⃣ FRP 内网穿透 由于很多家庭网络环境无法直接暴露公网端口(尤其是 CGNAT),使用 FRP 可实现外网访问家中代理服务。 3️⃣ 自动化证书管理 使用 VPS 或反代服务器生成并管理 TLS 证书(例如 acme.sh)。 ✅ 安全与稳定性设计 ✅ 拓展与升级思路 ✅ 总结 该方案充分利用树莓派 3B+ 的低功耗特性与良好的社区支持,实现了家用代理、内网穿透和自动化证书管理等功能,兼顾安全性与可维护性,适合对网络有一定需求的技术爱好者尝试和学习。 📄 参考关键要点

配置 FRPS (Fast Reverse Proxy) 服务器:内网穿透与加密传输的最佳实践

随着云计算和远程办公的普及,越来越多的企业和个人开始寻求解决内网穿透的问题。FRP (Fast Reverse Proxy) 是一款高效的反向代理工具,它能帮助用户将内网服务暴露到公网,让你能够通过公网IP访问位于防火墙或NAT后的内网服务。本文将介绍如何配置 FRPS 服务器,并重点讲解加密传输、管理面板以及内网穿透加速的配置方法。 什么是 FRP? FRP 是一个高性能的反向代理应用,能够将局域网内的服务通过代理暴露到外网。它支持 TCP、UDP、HTTP、HTTPS 等多种协议,并且支持通过自定义域名进行访问。FRP 的客户端是 FRPC,它运行在内网设备上,连接到 FRPS(服务器端)进行数据转发。通过这种方式,内网的服务可以很方便地暴露到公网上。 FRPS 配置文件解析 1. 工作端口与传输协议 在配置文件的开头,我们看到以下配置: # 工作端口bindPort = 7000# KCP UDP端口# kcpBindPort = 9000# QUIC端口quicBindPort = 4433# 用户连接超时时间(秒)userConnTimeout = 30 2. Dashboard 管理页面 FRPS 提供了一个内置的管理页面(Dashboard),使用户能够方便地查看和管理连接信息。配置如下: # 启用 DashboardwebServer.addr = “0.0.0.0”webServer.port = 7500webServer.user = “admin”webServer.password …

通过源码编译ngrok并用于端口映射

如果要做端口映射,可以购买ngrok服务,也有免费的方案,可以从源代码自己编译ngrok软件。编译的版本是1.7,更高的版本没有开放源代码。 需要准备的材料: 1、一个备案域名,ngrok需要使用域名,不能直接用公网IP,这里域名以domain.com为例; 2、CentOS主机,在自己电脑上(可以使用虚拟机)或者VPS上都可以; 3、VPS,上面说的域名要设置解析到这台VPS的IP上。 下面列出的是我编译的过程: CentOS环境,要安装以下软件, yum -y install zlib-devel openssl-devel perl hg cpio expat-devel gettext-devel curl curl-devel perl-ExtUtils-MakeMaker hg wget gcc gcc-c++ git go语言环境,要下载适合自己系统的go语言包  这里用的是centos 6.8 64位 所以选择以下包 wget https://storage.googleapis.com/golang/go1.8.3.linux-amd64.tar.gz tar -C /usr/local -xzf go1.8.3.linux-amd64.tar.gz vim /etc/profile 修改环境变量,添加以下内容: export PATH=$PATH:/usr/local/go/bin source /etc/profile 检测是否安装成功go go version 下载ngrok源码包 mkdir /ngrok …

在公网上访问内网服务器的方法,使用端口映射

此方法适用于在内网中有一台Linux服务器并购买了VPS的情况。尽管网站可以直接搭建在VPS上,但是有些情况下对磁盘容量的需求比较大,比如同时搭建云盘服务,购买VPS的磁盘容量价格较高,这时候就可以把服务放在内网环境,使用VPS的公网IP访问内网服务器。 使用的工具很普通,就是SSH,如果你是头一次听说,一定会感到惊讶,这个我们经常在用的工具竟然还能够做端口映射,在我知道之前用的是付费的第三方内网穿透服务。当然,也许你第一次使用SSH的时候就已经全面地了解过它。 为了区分内网与外网的两台主机,这里使用Server表示VPS,Client表示内网中的主机。默认情况下,SSH连接远程Linux主机后长时间没有操作会自动断线,可以修改SSH的配置文件,保证连接不自动中断。设置的数值可以按照个人意愿修改,具体意义可以在网上查到。 在Server上进行设置,编缉/etc/ssh/sshd_config,添加 GatewayPorts=yes ClientAliveInterval 30 ClientAliveCountMax 60 # 重启SSH服务端 service sshd restart 设置Client,编缉/etc/ssh/ssh_config,添加 ServerAliveInterval 20 ServerAliveCountMax 999 # 重启SSH客户端 service ssh restart 至此,Server与Client设置完毕,可以开始端口映射了。这里以映射80端口为例,在Client主机上运行: ssh -C -f -N -g -R 80:localhost:80 root@[VPS的IP地址] 输入VPS的root密码即可。 SSH的这几个选项的意义: -C:压缩数据传输。 -f :后台认证用户/密码,通常和-N连用,不用登录到远程主机。 -N :不执行脚本或命令,通常与-f连用。 -g :在-L/-R/-D参数中,允许远程主机连接到建立的转发的端口,如果不加这个参数,只允许本地主机建立连接。 -L :本地端口:目标IP:目标端口 -R: 远程端口:目标IP:目标端口 到现在为止,如果内网主机上在80端口有web服务,则通过VPS的IP地址也能访问了。浏览器中输入VPS的IP地址即可,默认访问的就是80端口。