基本概述
当我们想要在外地连接家里的网络服务,而家里又没有公网ip,此时就需要用到内网穿透。
当用户无法直接连上家里的服务时,借助一台带有公网ip的服务器就可以使其通信。
接下来我们要做的就是在服务器和家里分别安上frp的服务端和客户端软件。
软件安装地 |
frp软件 |
服务器 |
frp服务端-frps |
本地(NAS、Windows等) |
frp客户端-frpc |
软件下载
[button color=“success” icon=“iconfont icon-fork” url=“https://github.com/fatedier/frp/releases”]github[/button]
1
|
wget https://github.com/fatedier/frp/releases/download/v0.32.0/frp_0.32.0_linux_amd64.tar.gz
|
安装
1.服务端(带公网ip的主机)
1
2
3
|
tar -xvf frp_0.32.0_linux_amd64.tar.gz
rm -f frpc* # 删除客户端多余文件,可以不执行
vim frps.ini # 编辑配置文件
|
输入以下字段后保存就行,其中bind_port = 7000
就是frp之间通信所用端口。
1
2
3
4
5
6
7
|
[common]
bind_port = 7000
vhost_http_port = 8080
max_pool_count = 5
authentication_timeout = 900
authentication_method = token
token = password
|
然后就可以开启服务端等待客户端的连接
2.客户端(本地NAS)
同样解压刚才的压缩包(如果客户端是windows/mac的话前往原git下载)
1
2
3
|
tar -xvf frp_0.32.0_linux_amd64.tar.gz
rm -f frps* # 删除服务端多余文件,可以不执行
vim frpc.ini # 编辑配置文件
|
输入以下字段后保存就行,其中bind_port = 7000
是frp之间通信所用端口
可以配置多个应用,比如你想在外连接NAS,那么就把NAS本地的22端口
映射到服务器的6000端口
(或其他任意未占用端口)。
这样访问 服务器ip:6000
就等同于本地访问127.0.0.1:22
[scode type=“red”] 注:服务器有防火墙的话需要将用到的 remote_port
端口全部打开 [/scode]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
[common]
server_addr = 服务器的公网ip
server_port = 7000
token = password
pool_count = 1
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000
use_compression = true
[nas]
type = tcp
local_ip = 127.0.0.1
local_port = 5000
remote_port = 5000
use_compression = true
[mysql]
type = tcp
local_ip = 127.0.0.1
local_port = 3306
remote_port = 3306
use_compression = true
|
1
2
|
# 同样方式打开客户端
./frpc -c frpc.ini
|
这时,内网穿透就算完成了,但想要长期稳定使用的话还得加上后台运行和开机自启。
3.开机自启
这里提供两种自启方式,如果客户端/服务端是windows/mac的话自行搜索一下
群晖
1
2
|
cd /usr/syno/etc.defaults/rc.sysv/
vim frpc.sh # 创建启动脚本
|
脚本中填上这两行
1
2
|
cd /usr/frp_0.32.0_linux_amd64 # 进入frpc路径
nohup ./frpc -c ./frpc.ini & # 后台启动frpc
|
设置脚本权限并编辑启动项
1
2
|
chmod +x frpc.sh
vim /etc/rc
|
输入 :$
跳转至最后一行,在exit 0
之前添加:
1
|
/usr/syno/etc.defaults/rc.sysv/frpc.sh
|
这时可以重启系统查看frp是否启动成功
centos
1.创建自启服务
1
|
vim /etc/systemd/system/frps.service
|
填入:(记得将 ExecStart
路径换成自己frps的路径)
1
2
3
4
5
6
7
8
9
10
11
12
13
|
[Unit]
Description=Frp Server Service
After=network.target
[Service]
Type=simple
User=nobody
Restart=on-failure
RestartSec=5s
ExecStart=/home/izumi/frp_0.32.0_linux_amd64/frps -c /home/izumi/frp_0.32.0_linux_amd64/frps.ini
[Install]
WantedBy=multi-user.target
|
2.开启服务 – (只需要执行1、3)
1
2
3
4
|
sudo systemctl enable frps #打开自启
sudo systemctl disable frps #关闭自启
sudo systemctl start frps #开启frps
sudo systemctl status frps #查看frps运行状态
|
官方文档
本文只是介绍基本使用,更多功能和详细使用方式见:
[button color=“success” icon=“iconfont icon-fork” url=“https://github.com/fatedier/frp/blob/master/README_zh.md”]官方文档[/button]