使用 FRP 实现内网穿透:服务器篇
by admin
背景:
家中宽带没有公网 IP,且了解到目前申请无望;花生壳、VNC、TeamViewer 又有各自局限,故决定用手头闲置的带公网 IP 的服务器,搭配 FRP 内网穿透实现对家中 NAS、Win10电脑、树莓派的访问。
目标:
在公网服务端和内网各类客户端安装并配置 FRP
(2022年2月3日更新:新版本号及部分配置)
1. 准备工作
登陆服务器管理后台,防火墙开放以下端口
- TCP 7000:FRP 服务端默认端口
- UDP 10000 :用于点对点内网穿透
- TCP 10001-10010:用于代理内网设备的 TCP 应用
- TCP 10080,10443:便于记忆的 HTTP 与 HTTPS 代理端口
- TCP 10500:用于访问服务端监控页
阿里云方法:
- ECS 云服务器控制台,实例列表中点击对应实例的 “更多”-“网络和安全组”-“安全组配置”
- 在安全组配置页面点击“配置规则”
- “安全组访问规则配置”-手动添加“入方向”(即用户访问服务器的方向)
- 允许自定义端口,授权对象为所有人(0.0.0.0/0)
- 保存即生效,无需重启服务器
腾讯云方法:
- 服务器管理后台,防火墙页面 “添加规则”,允许自定义端口即可,无需重启服务器
2. 服务端安装(CentOS)
SSH 连接服务器,查看系统架构信息
uname -m(会输出 x86_64、i686、arm 或者 aarch64)
得知服务器是 amd64(即 x86_64),故下载对应最新版本
wget https://github.com/fatedier/frp/releases/download/v0.39.0/frp_0.39.0_linux_amd64.tar.gz
移动安装包至指定路径
mv frp_0.39.0_linux_amd64.tar.gz /opt/
cd 至 opt 文件夹 ls -a 查看文件列表,确认文件已成功移动,然后解压
tar -zxvf frp_0.39.0_linux_amd64.tar.gz
cd 至 /opt/frp_0.39.0_linux_amd64 文件夹并 ll 查看文件结构,删除无用的客户端文件
rm frpc
rm frpc.ini
rm frpc_full.ini
3. 服务端配置
编辑服务端配置文件
nano frps.ini
内容为
[common]
# 通信地址及端口
bind_addr = 0.0.0.0
bind_port = 7000
# 验证访问内网客户端
authentication_method = token
token = 12345678
# 设置服务器绑定的域名,用于通过子域名访问内网各个服务
subdomain_host = xxx.com
# UDP 端口
bind_udp_port = 10000
# 反向代理 HTTP 主机
vhost_http_port = 10080
vhost_https_port = 10443
# 服务端监控页,仅当设置 dashboard_port 时才开启本服务,若不设置 dashboard_addr 则与 bind_addr 相同
dashboard_addr = 0.0.0.0
dashboard_port = 10500
# 若不设置则默认均为 admin
dashboard_user = admin
dashboard_pwd = admin
# 日志文件路径、方式、天数等
log_file = ./frps.log
log_level = info
log_max_days = 1
保存后启用服务
./frps -c ./frps.ini
(也可使用 nohup 命令使其后台运行)
nohup ./frps -c frps.ini>/dev/null 2>&1 &
成功访问 http://服务器公网IP:10500 页面,服务启用正常
如需更新配置文件,可关闭进程再启动
ps -ef | grep frps
kill -9 进程ID
4. 设置开机启动
解压 FRP 后的 systemd 子文件夹内已有系统服务配置文件
cd /opt/frp_0.39.0_linux_amd64/systemd
nano frps.service
修改 ExecStart 为刚刚安装 FRP 的路径,文件内容如下
[Unit]
Description=Frp Server Service
After=network.target[Service]
Type=simple
User=nobody
Restart=on-failure
RestartSec=5s
ExecStart= /opt/frp_0.39.0_linux_amd64/frps -c /opt/frp_0.39.0_linux_amd64/frps.ini
LimitNOFILE=1048576[Install]
WantedBy=multi-user.target
移动配置文件
mv frps.service /usr/lib/systemd/system/
设置开机启动
systemctl daemon-reload
systemctl enable frps
启动 frp
systemctl start frps
检查 FRP 是否启动
ps -ef | grep frps
重启服务器检查 FRP 是否自动启动
sudo reboot
如需更新配置文件,可重启服务
systemctl restart frps
评论