使用条件
- 需要一台公网服务器(阿里云,vultr …)
- 一台内网服务器
- 说明:内网可以访问公网,但是公网访问不了内网
FRP 是一个可用于内网穿透的高性能的反向代理应用,支持 tcp, udp 协议,为 http 和 https 应用协议提供了额外的能力,且尝试性支持了点对点穿透。
GitHub地址:
实现功能
1、内网的服务(程序)实现公网访问
下面我们就来看看是如何做到的?
步骤
1、下载对应的版本,我这里用的都是0.30.0,linux 64位
注意:如果你的公网服务器是linux系统 ,而内网服务器是windows系统,那么下载各自同一个版本对应的包
2、将下载好的压缩包文件上分别上传传至公网服务器和内网服务器
# 解压软件
tar -xzvf frp_0.30.0_linux_amd64.tar.gz
# 移动到 /usr/local 目录(可选)
mv frp_0.30.0_linux_amd64 /usr/local/frp
3、公网服务器用于服务端(3种启动方式)
前台启动:
./frps -c frps.ini
后台启动:
sudo nohup ./frps -c frps.ini &
- 程序在后端启动, 输出日志在nohup.out中
以系统服务方式启动(推荐)
添加systemd配置文件
vim /usr/lib/systemd/system/frp.service
文件内容如下
[Unit]
Description=The nginx HTTP and reverse proxy server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=simple
ExecStart=/usr/local/frp/frps -c /usr/local/frp/frps.ini
KillSignal=SIGQUIT
TimeoutStopSec=5
KillMode=process
PrivateTmp=true
StandardOutput=syslog
StandardError=inherit
[Install]
WantedBy=multi-user.target
ExecStart的内容请根据自己frp安装目录修改。
设置开机启动
systemctl daemon-reload
systemctl enable frp
启动frp
systemctl start frp
查看启动状态:
sudo ps aux | grep frp
阿里云服务器 请开放对应端口
开放防火墙端口
# 添加frp 7000端口 firewall-cmd --zone=public --add-port=7000/tcp --permanent # 添加客户端使用7001端口 firewall-cmd --zone=public --add-port=7001/tcp --permanent firewall-cmd --reload
至此 服务端配置完成
frp 客户端
在windows客户端使用
下载服务端对应的版本
在Linux客户端使用
- 下载服务端对应的版本
- frpc 供客户端使用
编辑 /usr/local/frp/fprc.ini
vim /usr/local/frp/frpc.ini
修改以下内容
[common]
server_addr = xxx.xxx.xxx.xxx # 你的公网服务器 公网ip
server_port = 7000 # frps 监听端口号
[http] # 名称使用同一个客户端时, 名称必须唯一
type = tcp
local_ip = 127.0.0.1 # 本地ip或者局域网ip
local_port = 80 # 本地端口号
remote_port = 7001 # 公网端口号,在公网服务器开启对应端口
启动客户端 nohup ./frpc -c frpc.ini &
也可以采用其他方式启动, 请查看服务端启动方式