frp内网穿透教程
1 前言
1.1 需求
电脑A位于192.168.3.* 局域网下,电脑C位于192.168.3.* 局域网下,现需要A远程访问C。在不同局域网实现跨网访问。
因此,需要一台拥有公网IP的服务器,FRPS 即FRP服务器将在这台机器上部署。注册一个域名,将域名解析到这台公网IP服务器上,方便后续通过域名远程访问客户端。
1.2 frp介绍
frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。
1.3 frp内网穿透原理
2 下载链接
2.1 分别在服务器端和客户端下载frp(ubuntu系统)
打开终端执行下面命令,下载:
wget https://github.com/fatedier/frp/releases/download/v0.36.2/frp_0.36.2_linux_amd64.tar.gz
解压:
tar -xzvf frp_0.36.2_linux_amd64.tar.gz
2.2 压缩包说明
每个压缩包都包含以下文件及一个systemd文件夹:
- frpc —— 客户端可执行二进制文件
- frpc_full.ini —— 包含全部配置项的客户端配置文件
- frpc.ini —— 客户端使用的配置文件,包含最简配置
- frps —— 服务端可执行二进制文件
- frps_full.ini —— 包含全部配置项的服务端配置文件
- frps.ini —— 服务端使用的配置文件,包含最简配置
- systemd —— 文件夹,用于将frpc和frps添加为服务的配置,linux下使用systemd作为守护程序、mac os使用launchd作为守护程序
3 配置
3.1 服务器端配置
3.1.1 打开frps.ini
sudo gedit frps.ini
3.1.2 编辑内容
[common]
bind_port = 7000 #bind_port端口为frp服务端和客户端连接通信的端口,默认为7000。
vhost_http_port = 8080 #vhost_http_port监听的端口不能被占用,否则会导致frps不能启动,端口可根据实际需要修改。
token = my_token_name #与服务器中的保持一致
3.1.3 启动frps程序
sudo ./frps -c ./frps.ini
3.2 客户端配置
3.2.1 打开frpc.ini
sudo gedit frpc.ini
3.2.2 编辑内容
[common]
server_addr = 36.152.44.96 #为服务器的ip地址,可通过ping或者nslookup域名看到
server_port = 7000
token = my_token_name #与服务器中的保持一致
[lab_ssh] #这里的名字可以随意命名,但不能重复
type = tcp
local_ip = 192.168.1.150
local_port = 22
remote_port = 5111
[lab_mstc]
type = tcp
local_ip = 192.168.1.150
local_port = 3389
remote_port = 5211
[lab_ftp1]
type = tcp
local_ip = 192.168.1.150
local_port = 20
remote_port = 5311
[lab_ftp2]
type = tcp
local_ip = 192.168.1.150
local_port = 21
remote_port = 5312
3.2.3 启动frpc程序
sudo ./frpc -c ./frpc.ini
4 开机自启
4.1 先创建frpc.sh文件
在/home/host_name/frp/目录下,创建frpc.sh文件
#!/bin/sh
sleep 20s #开机20秒后启动脚本
sudo /home/host_name/frp/frpc -c /home/host_name/frp/frpc.ini
4.2 systemctl管理开机自启动
sudo vim /etc/systemd/system/frpc.service
[Unit]
Description=start_frpc
[Service]
ExecStart=/home/host_name/frp/frpc.sh
ExecReload=/home/host_name/frp/frpc.sh
[Install]
WantedBy=multi-user.target
4.3 开启frpc.service服务
# 启动frp
sudo systemctl start frpc
# 开机自启动
sudo systemctl enable frpc
# 重启
sudo systemctl restart frpc
# 停止
sudo systemctl stop frpc
# 查看日志
sudo systemctl status frpc