frp内网穿透配置
frp内网穿透配置
学校放寒假,想着回家以后能够远程访问实验室的服务器跑实验,正巧以前跟同学闲聊的时候了解到frp可以实现内网穿透,因此花了一上午的时间来安装配置frp,实现通过外网IP和SSH登录内网服务器的目标。本文记录配置frp的过程,实验环境如下:
- 一台具有公网IP的Linux服务器;
- 一台内网服务器,操作系统是Ubuntu 20;
- 一台测试用的PC。
配置frp服务端
-
下载frp安装包并进行解压
首先访问frp项目的Releases页面,下载合适的安装包。frp安装包是通过压缩包的形式提供的,需要进行解压缩,解压后的安装目录的内容如下:
tar -xvf frp_0.38.0_linux_amd64.tar.gz tree frp_0.38.0_linux_amd64 frp_0.38.0_linux_amd64 ├── frpc ├── frpc_full.ini ├── frpc.ini ├── frps ├── frps_full.ini ├── frps.ini ├── LICENSE └── systemd ├── frpc.service ├── frpc@.service ├── frps.service └── frps@.service
-
拷贝可执行文件frps到目录/usr/bin/
为了简化后续的配置和使用,把安装目录下的二进制可执行文件frps拷贝到目录/usr/bin/:
cd frp_0.38.0_linux_amd64 cp ./frps /usr/bin/
-
拷贝后缀名为*.ini配置文件到目录/etc/frp
mkdir /etc/frp cp *.ini /etc/frp/
-
修改配置文件frps.ini,指定服务器用于监听客服端连接的端口
vi /etc/frp/frps.ini [common] bind_port = 7000 token = b3c74c2346c34754856ade61716339a3wuql
-
设置防火墙,开放端口
本文实验采用的具有公网IP的服务器是阿里云轻量应用服务器,设置防火墙的步骤如下:
- 访问轻量应用服务器管理控制台,点击侧边栏的“安全/防火墙”;
- 点击添加规则,填写开放端口(7000和6000)和备注,点击确认按钮;
- 通过命令行工具firewall-cmd开放端口:
firewall-cmd --zone=public --add-port=7000/tcp --permanent firewall-cmd --zone=public --add-port=6000/tcp --permanent firewall-cmd --reload
- 启动frp服务端:
frps -c /etc/frp/frps.ini
配置frp客户端
- 下载frp安装包并进行解压;
- 拷贝frpc到目录/usr/bin/:
cp ./frpc /usr/bin/
; - 拷贝配置文件到目录/etc/frp:
mkdir /etc/frp && cp *.ini /etc/frp/
; - 修改配置文件frpc.ini,把内网服务(这里具体指SSH)暴露到服务器端口6000上:
vi /etc/frp/frpc.ini [common] server_addr = <公网IP> server_port = 7000 token = b3c74c2346c34754856ade61716339a3wuql [ssh] type = tcp local_ip = 127.0.0.1 local_port = 22 remote_port = 6000
- 启动frp客户端:
frpc -c /etc/frp/frpc.ini
; - 通过另外一台设备访问内网服务(即通过SSH登录内网服务器):
ssh -p 6000 <内网服务器上的用户>@<公网IP>
。
通过systemd配置后台运行和开机自启动
-
frp服务端
- 拷贝frp安装目录下的文件systemd/frps.service到目录/usr/lib/systemd/system/;
cd systemd cp frps.service /usr/lib/systemd/system/
- 设置frps开机自启动:
systemctl enable frps
; - 后台启动frps:
systemctl start frps
。
- 拷贝frp安装目录下的文件systemd/frps.service到目录/usr/lib/systemd/system/;
-
frp客户端
- 拷贝frp安装目录下的文件systemd/frpc.service到目录/usr/lib/systemd/system/;
- 设置frps开机自启动:
systemctl enable frpc
; - 后台启动frps:
systemctl start frpc
。