frp实现内网穿透
frp实现内网穿透
实现原理:在公网服务器上运行服务端(frps)和在内网主机运行客户端(frpc),将内网服务快速暴露到公网上个【实现端口转发,支持多种协议】
用法:公网服务器跑frps,内网跑fprc,配置映射规则。
适合长期使用。
注意事项【也是排错思路】:
-
selinux
和filewalld
和NetworkManager
都要关闭,指令如下,如果开启,一定要关闭。systemctl status selinux systemctl status filewalld systemctl status NetworkManager -
服务端bind_port端口和客户端server_port保持一致
-
server_addr为服务端ip
-
不要开代理(不管是规则还是全局,直接关掉)
环境相关:
- 服务端【centos7.8 设置为NAT模式,让他相对于内网处于公网状态 192.168.144.133】
- 客户端【win10 划分子网 我设置为192.168.1.11】
1、部署服务端
环境相关:centos7.8【NAT模式】安装了frp53.0 版本(linux版)。
服务端的IP为:192.168.144.133
1、进入到/opt目录下,将frp53版本拖动到该目录下
# 1.解压 tar -zxf frp_0.53.0_linux_amd64.tar.gz # 2.进入frp_0.53.0_linux_amd64目录 cd frp_0.53.0_linux_amd64 # 3.添加服务端接收外部 HTTP 请求的端口 vim frps.toml # 添加这行配置 vhostHTTPPort = 80 """ 这里区分一下: bindPort # 服务端与客户端之间的通信端口 vhostHTTPPort # 服务端接收外部 HTTP 请求的端口 """ # 4.启动服务端 ./frps -c frps.toml
2、部署客户端
环境相关:win10【划分子网,让他处于内网】安装了frp53.0(windows版)。
客户端(内网)IP为:192.168.1.11
下载链接:https://github.com/fatedier/frp/releases?page=2
1、使用小皮部署一个网站
-
把目录列表功能打开
-
将http对应端口改为8888
-
在
www
目录下创建一个cs
文件夹,然后里面放file.pdf
文件(不管什么pdf都行,方便测试) -
启动,我用的nginx + mysql + ftp,如下图所示
2、将安装包解压到C:\tools\frp_0.53.0_windows_amd64
目录下
3、配置客户端【在frpc.toml文件中】
# 介绍一下配置 """ serverAddr # 服务端的公网ip serverPort # 服务端通信端口 name="web-alex" # 代理名称,随意取 customDomains = "web.alex.com" # 绑定的域名 # 下面两行即告诉服务端我内网要暴露的ip和端口 localIP"192.168.1.10" # 内网服务的IP localPort = 8888 # 内网服务的端口 """ # 配置如下【这个实验我的配置以域名访问为准】【注意:通过域名访问和通过公网的ip和端口访问的客户端配置是不一样的。】 # 通过域名访问的配置【使用这个配置,就使用web.alex.com进行访问】 """ serverAddr = "192.168.144.133" serverPort = 7000 [[proxies]] name = "web" type = "http" localIP = "192.168.1.11" localPort = 8888 customDomains = ["web.alex.com"] """ # 通过公网ip:端口访问的配置【使用这个配置,就使用公网:ip进行访问】 """ serverAddr = "192.168.144.133" serverPort = 7000 [[proxies]] name = "web" type = "tcp" # 使用 tcp 类型 localIP = "192.168.1.11" # 内网服务的 IP 地址 localPort = 8888 # 内网服务的端口 remotePort = 8888 # 公网访问的端口 """ # 能够看出来两者配置不同在于: 域名访问: 通常使用 http 或 https 类型的代理 公网:端口访问:通常使用 tcp 或 udp 类型的代理
3、启动客户端,在解压目录下打开终端,执行以下命令
frpc.exe -c frpc.toml
查看服务端,有下列响应
4、在宿主机上手动域名解析,在C:\Windows\System32\drivers\etc
下的hosts文件中配置
192.168.144.133 web.alex.com
5、访问web.alex.com
就能访问到内网中的主机,如下图所示
我再访问一下内网中的pdf文件,如下图所示
现在我来捋一下做内网穿透的这个过程。
1、启动 frpc(客户端),做了以下动作
- 与frps(服务端建立连接);并告诉他我的代理名为
web
,绑定了``www.alex.com`;这个时候通道保持开放。
2、服务端运行中
- 服务端监听的7000端口与客户端进行通信,80接收外部HTTP请求(服务端已知道web.alex.com对应某个客户端的代理)
3、游览器访问呢web.alex.com
- 经过解析到达192.168.144.133:80后,看到
web.alex.com
找到对应代理,通过现有的7000端口转发给客户端
4、客户端收到请求后,转发给192.168.1.11:8888
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具