一台电脑想要被外网访问,公网IP+DDNS是最佳方案。
其次VPN组网(如蒲公英)也可以实现高速连接。
最后Frp是无可奈何的选择。

Frp需要一台暴露在公网的设备,家庭宽带申请公网IP+DDNS后本质上已经和一台云服务器相当了。暴露在公网有不小的隐患,特别是端口号,一定要安全性高,10000-65536相对好很多。

安装方法适用于群晖和centos等linux系统。

官方文档

https://gofrp.org/docs/

一、下载,解压frp

下载地址
https://github.com/fatedier/frp/releases

1
wget https://github.com/fatedier/frp/releases/download/v0.36.2/frp_0.36.2_linux_amd64.tar.gz

解压

1
tar -zxvf frp_0.36.2_linux_amd64.tar.gz

解压后删除压缩包,改名目录为frp

1
2
mv frp_0.36.2_linux_amd64 frp
rm -rf frp_0.36.2_linux_amd64.tar.gz

进入frp目录文件夹,参照文档填写

1
2
cd frp
vi frpc.ini

在frps,建议配置token,还可以配置面板,域名:7500就可以访问。

1
2
3
4
5
6
7
[common]
bind_port = 7000 #注意防火墙放行端口
vhost_http_port = 6666 #http端口
#token =
#dashboard_port = 7500
#dashboard_user = admin
#dashboard_pwd = admin

在frpc

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[common]
server_addr = 15.15.55.159 #也可以是域名
server_port = 7000 #和bind_port一致
#token =

[ssh]
Itype = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000

[dsm]
Itype = tcp
local_ip = 127.0.0.1
local_port = 5000
remote_port = 2200

[emby]
Itype = tcp
local_ip = 127.0.0.1
local_port = 8096
remote_port = 8096

浏览器打开1.15.55.159:2200可以访问内网frp客户端127.0.0.1:5000

如果你是家庭宽带搭建的服务端,remote_port不要用22,80,443这些端口,都是被封的。

二、运行frpc

./frpc -c ./frpc.ini

后台运行frpc/frps

1
2
nohup ./frpc -c ./frpc.ini &
nohup ./frps -c ./frps.ini &

frp控制面板

三、添加启动脚本 (群晖)

新建脚本文件

1
vi /usr/syno/etc.defaults/rc.sysv/frp.sh

编辑脚本文件,按INSERT键进入编辑状态,输入下面内容

1
2
3
#/bin/bash
cd /root/frp #这是你frp的文件夹
nohup ./frpc -c ./frpc.ini &

按ESC键,输入“:wq”按回车保存退出

进入文件目录,设置权限

1
2
cd /usr/syno/etc.defaults/rc.sysv
chmod +x frp.sh

在群晖中设置开机自动启动,在群晖中打开 控制面板–>任务计划–>新增–>触发的任务–>用户定义的脚本

1
/usr/syno/etc.defaults/rc.sysv/frp.sh

做frp服务端也是同理,只是运行nohup ./frps -c ./frps.ini &而已
需要注意:服务端涉及到端口,一般frps服务启动不成功都是端口未开放,
再就是文件没有root权限。

四、centos实现开机启动。

1
sudo vim /lib/systemd/system/frps.service

服务端:
sudo vi /lib/systemd/system/frps.service

1
2
3
4
5
6
7
8
9
10
11
12
[Unit]
Description=fraps service
After=network.target syslog.target
Wants=network.target

[Service]
Type=simple
#启动服务的命令(此处写你的frps的实际安装目录)
ExecStart=/root/frp/frps -c /root/frp/frps.ini

[Install]
WantedBy=multi-user.target

客户端:
sudo vi /lib/systemd/system/frpc.service

1
2
3
4
5
6
7
8
9
10
11
12
[Unit]
Description=frpc service
After=network.target syslog.target
Wants=network.target

[Service]
Type=simple
#启动服务的命令(此处写你的frpc的实际安装目录)
ExecStart=/root/frp/frpc -c /root/frp/frpc.ini

[Install]
WantedBy=multi-user.target

服务端frps的启动与停止

1
2
3
4
5
6
sudo systemctl start frps  # 启动frps 
sudo systemctl enable frps # 打开自启动
sudo systemctl restart frps # 重启应用
sudo systemctl stop frps # 停止应用
sudo systemctl status frps # 查看应用的日志
systemctl disable frps # 停止开机自启动

服务端frpc的启动与停止

1
2
3
4
5
6
sudo systemctl start frpc  # 启动frps 
sudo systemctl enable frpc # 打开自启动
sudo systemctl restart frpc # 重启应用
sudo systemctl stop frpc # 停止应用
sudo systemctl status frpc # 查看应用的日志
systemctl disable frpc # 停止开机自启动

查看frp线程

1
ps -aux | grep frp

本文参考了
https://www.cnblogs.com/chenshy/p/13514248.html
https://www.cnblogs.com/colinliu/p/Synology_frp.html

后来想在老毛子,OpenWrt固件的路由器中搭建ddns和安装frp服务端。