使用frp实现内网穿透
使用frp实现内网穿透如远程访问校园内网服务器:frp-Github链接
frp安装
可以根据需求下载对应的文件版本,推荐使用Windows_amd64和Linux_amd64版本,具体还需要根据机子情况。下载链接
frp环境部署
frp 主要由 客户端(frpc) 和 服务端(frps) 组成,服务端通常部署在具有公网 IP 的机器上,客户端通常部署在需要穿透的内网服务所在的机器上。以阿里云WinServer2008作为公网IP服务器和Win10作为内网机子为例。
首先下载frp_0.33.0_windows_amd64版本,之后配置客户端文件,打开frpc.ini。
[common]
server_addr = x.x.x.x #填写公网服务器IP
server_port = 7000 #这个端口指的是客户端与服务端通信使用的端口
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 3389 #SSH使用22端口 windows系统使用3389端口
remote_port = 6000 #这个端口是指通过x.x.x.x:6000访问内网机子的转发端口
注意若使用云服务器,在服务器的安全组中要把端口7000、6000(可自定义)都进行开放,否则连接不上。服务端使用默认配置文件不需要更改。
配置好文件之后,启动即可,windows的话需要使用cmd打开,可自写bat文件启动。
想要多客户端配置就在不同客户端上面使用不同端口启动即可:
[common]
server_addr = x.x.x.x #填写公网服务器IP
server_port = 7000 #这个端口指的是客户端与服务端通信使用的端口
[ssh2] # 不同客户端需要不同的名字
type = tcp
local_ip = 127.0.0.1
local_port = 3389 #SSH使用22端口 windows系统使用3389端口
remote_port = 6006 #这个端口是指通过x.x.x.x:6000访问内网机子的转发端口
若需要配置web服务需要更改服务器和客户端文件如下:
frps.ini服务端配置文件
[common]
bind_port = 7000
vhost_http_port = 6001 # 访问6001端口,映射到内网web服务
frpc.ini客户端配置文件
[common]
server_addr = x.x.x.x
server_port = 7000
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 3389
remote_port = 6000
[web]
type = http
local_port = 8080 # 访问本地8080web服务
custom_domains = www.xxx.cn # 必须已经备案
客户端启动:
服务端启动:
连接测试图:
frp仪表盘配置
通过frp自带仪表盘控制界面 Dashboard 可以方便的查看 FRP 的状态以及代理统计信息展示
要使用这个功能首先需要在 FRP 服务端配置文件 frps.ini 中指定 Dashboard 服务使用的端口:
# frps.ini 内容
[common]
bind_port = 7000
# 指定 仪表盘控制界面 Dashboard 的监听的 IP 地址 //0.0.0.0 为所以IP均可访问
dashboard_addr = 0.0.0.0
# 指定 仪表盘控制界面 Dashboard 的监听的端口,默认为 7500
dashboard_port = 7500
# 指定访问 仪表盘控制界面 Dashboard 的登录用户名
dashboard_user = admin
# 指定访问 仪表盘控制界面 Dashboard 的登录用户密码
dashboard_pwd = admin123
在frp目录下输入【frps -c frps.ini】命令重新启动 frps 服务端
出现start frps success即启动好服务,注意在阿里云开放对应端口7500.
nssm将frp注册为win10服务
为了方便frp在win10启动,可以设置为服务,让其后台自启。
首先下载nssm,官网链接
NSSM是一个服务封装程序,它可以将普通exe程序封装成服务,使之像windows服务一样运行。同类型的工具还有微软自己的srvany,不过nssm更加简单易用,并且功能强大。它的特点如下:
- 支持普通exe程序(控制台程序或者带界面的Windows程序都可以)
- 安装简单,修改方便
- 可以重定向输出(并且支持Rotation)
- 可以自动守护封装了的服务,程序挂掉了后可以自动重启
- 可以自定义环境变量
服务安装:
服务安装可以使用如下命令(注意使用管理员运行): nssm install servicename
执行此命令后,会出现一个界面,基本上看着就知道怎么用了,大多数情况下,只需要填第一个界面的程序路径就可以了。
其它界面的是高级参数的配置,可以根据需要自行选择。
参数填完后执行"install service"按钮即可将服务安装到系统,可以使用系统的服务管理工具查看了。
当然,如果要自动化安装,可以直接带上程序路径: nssm install servicename program [arguments]
NSSM本身win7及以上的系统基本都是支持的,我测试过win7,2008,2016系统,都是没有问题的,如果安装失败,请首先检查是否装了某国产管家或国产杀毒软件。
安装完成后,服务还没有启动,需要通过下面的服务管理的命令启动服务。
服务管理:
服务管理主要有启动、停止和重启,其命令如下:
- 启动服务:nssm start servicename
- 停止服务:nssm stop servicename
- 重启服务:nssm restart servicename
当然,也可以使用系统自带的服务管理器操作和使用系统的命令。
修改参数:
NSSM安装的服务修改起来非常方便,命令如下:
nssm edit servicename
会自动启动操作界面,直接更改即可。
服务删除:
服务删除可以使用如下命令之一:
- nssm remove servicename
- nssm remove servicename confirm
功能没有大的区别,后面的命令是自动确认的,没有交互界面。
建议
- 如果有自己的域名,可以将域名解析到公网ip上面,这样只需要根据域名即可进行远程连接。
- frp是需要公网的机子,若无公网机子,可以考虑花生壳、NatApp等软件进行内网穿透。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
2018-09-17 设计模式(三)—— 装饰者模式
2018-09-17 设计模式(二)—— 观察者模式
2018-09-17 JAVA环境配置
2018-09-17 设计模式(一)—— 策略模式