前言
目的:可以访问互联网但没有公网IP的机器提供对外服务时,其他人若想连接该服务需要内网穿透。程序员调试必备。
内网穿透:即 NAT 穿透,进行 NAT 穿透是为了使具有某一个特定源 IP 地址和源端口号的数据包不被 NAT 设备屏蔽而正确路由到内网主机。
背景:大部分提供内网穿透的软件大多只有一条免费隧道,不方便。据SAKURA FRP官网有五条免费隧道。 付费又不想付费,恰好本人有一台阿里云服务器,搭建之。
本文搭建的FRP不是源码编译
持续更新中…
一、FRP
1、frp是一个高性能的反向代理应用,可以轻松地进行内网穿透,对外网提供服务, 支持tcp, udp, http, https等协议类型,并且web服务支持根据域名进行路由转发。----主要是部署简单。 2、frp内网穿透主要用于没有公网IP的用户,实现远程桌面、远程控制路由器、 搭建的WEB、FTP、SMB服务器被外网访问、远程查看摄像头、调试一些远程的API(比如微信公众号,企业号的开发)等。----实现本人主要目的 3、自己搭建的FRP内网穿透服务器原则上提供无限流量、无限域名绑定、不限制网速、不限制连接数的内网穿透服务,但实际流量、网速等受公网服务器限制。
二、搭建步骤
1.准备条件
- 一台具有公网IP的服务器(本文操作系统为CentOs7.6)
- 一个域名(需要备案,否则FRP HTTP功能无法使用)
在对应的域名服务提供商 阿里云域名备案页备案,完全可以自己备案(耗时略长),客服会打电话修改认证资料。
- 与服务器系统对应的FRP服务端程序(本文使用的服务器端程序为frp_0.37.1_linux_amd64.tar.gz)下载
- 与客户端对应的FRP客户端程序(本文使用的客户器端程序为frp_0.37.1_windows_amd64.zip)下载
- xshell(SSH工具)、FileZilla(文件上传工具)
百度网盘FRP下载 提取码:h1dz
解压缩前:
windows 64位:XXX_windows_amd64.zip
windows 32位:XXX_windows_386.zip
linux 64位:XXX_linux_amd64.tar.gz
linux 32位:XXX_linux_386.tar.gz
解压缩后:
frpc:客户端
frpc.ini:客户端简易配置
frpc_full.ini: 客户端详细配置(英文注释)
frps:服务器
frps.ini:服务器简易配置
frps_full.ini:服务器详细配置(英文注释)
2.服务端部署
-
使用FileZilla连接公有云服务器,并上传对应的FRP服务端程序。 -
Xshell连接服务器,对FRP服务端程序解压缩
tar -xzvf frp_0.37.1_linux_amd64.tar.gz
- 设置权限
chmod -R 777 /root/frp_0.37.1_linux_amd64
- 设置FRP服务器参数文件
vim /root/frp_0.37.1_linux_amd64/frps.ini
参数代码如下(示例):
[common]
bind_addr = 0.0.0.0
#服务器监听端口
bind_port = 10000
#UDP端口
bind_udp_port = 10001
#KCP端口
kcp_bind_port = 10002
vhost_http_port = 80
vhost_https_port = 443
#申请的域名
subdomain_host = 这是你申请的域名
dashboard_addr = 0.0.0.0
#后台管理端口
dashboard_port = 11000
#FRP后台管理页面用户名
dashboard_user = 后台用户名
#FRP后台管理页面密码
dashboard_pwd = 后台密码
#链接秘钥
token = 连接认证秘钥
max_pool_count = 100
log_file = ./frps.log
log_level = info
log_max_days = 3
- 服务启动
cd /root/frp_0.37.1_linux_amd64/
./frps -c /root/frp_0.37.1_linux_amd64/frps.ini
- 后台访问
浏览器访问 申请的域名:11000 后,输入用户名、密码: 登录成功后:
3.客户端部署
- 使用对应操作系统的客户端程序frp_0.37.1_windows_amd64.zip解压缩。
只需这两个文件:frpc.exe、frpc.ini - 设置FRP客户端参数文件frpc.ini
[common]
server_addr = 这是你申请的域名
server_port = 10000
token = 连接认证秘钥
user = company
[ssh01]
type = tcp
local_ip = 127.0.0.1
local_port = 12121
remote_port = 12121
[ssh02]
type = tcp
local_ip = 127.0.0.1
local_port = 12122
remote_port = 8989
[web01]
type = http
local_ip = 127.0.0.1
local_port = 12123
subdomain = company
[web02]
type = http
local_ip = 127.0.0.1
local_port = 12124
subdomain = time
- 同级目录下创建bat启动脚本
frpc.exe -c frpc.ini
- 服务启动
点击start.bat。
4.验证
访问 域名:12121/本地服务的路由 即可。以客户端配置文件配置为准。 例如:xxx.com:12121/hello OR company.xxx.com/index
5.开机自启
服务器启动每次需要手动启动,所以配置FRP开机自启。
cp /root/frp/frps /usr/bin/
cp /root/frp/frps.ini /etc/frp/
cd frp/systemd/
cp frps.service /lib/systemd/system
systemctl daemon-reload
systemctl start frps
systemctl status frps
systemctl status frps
参考
Frp服务器搭建–内网穿透. frp服务器端程序frps自启动出错.
|