需求场景
需要在局域网外连接局域网内的机器;简单说就是你在公司搭建了一个服务器,但是又没有公网ip,还想在公司以外的网络环境下访问家里的服务器,那么实现这个需求的其中一个技术就叫内网穿透
必要的搭建环境
- 服务端: 公网准备一台服务
- 客户端: 内网准备一台服务器
搭建步骤
- frps (frp-server)是frp 软件的服务端,部署在公网的云服务器上
- frpc (frp-client)是frp 软件的客户端,部署在内网的服务器上
服务端搭建
- 下载地址
https://github.com/fatedier/frp/releases
# https://github.com/fatedier/frp/releases/download/v0.51.1/frp_0.51.1_linux_amd64.tar.gz
- 配置服务端
tar zxf frp_0.51.1_linux_amd64.tar.gz && mv frp_0.51.1_linux_amd64 /data/app/frp_server
cd /data/app/frp_server
# 编辑frps.ini
vim frps.ini
[common]
bind_port = 19198
# 配置一个很长复杂的token
token = **********
- 配置frpserver端systemd,使用systemctl管理frpserver应用
[Unit]
Description=frps Server
After=syslog.target network.target
Wants=network.target
[Service]
Type=simple
ExecStart=/data/app/frp_server/frps -c /data/app/frp_server/frps.ini
[Install]
WantedBy=multi-user.target
- 启动和开机启机设置
systemctl start frps.service
systemctl enable frps.service
# 如果修改了配置注意执行reload
systemctl daemon-reload
- 检查是否在监听
ps uax|grep frp&& netstat -tpln|grep frp
root 31340 0.1 1.5 727336 16212 ? Ssl 16:41 0:00 /usr/local/frp_server/frps -c /usr/local/frp_server/frps.ini
tcp6 0 0 :::19198 :::* LISTEN 31340/frps
客户端搭建
- 下载同服务端
wget https://github.com/fatedier/frp/releases/download/v0.51.1/frp_0.51.1_linux_amd64.tar.gz
- 配置客户端
tar zxf frp_0.51.1_linux_amd64.tar.gz && mv frp_0.51.1_linux_amd64 /data/app/frp_client
cd /data/app/frp_client
# 修改客户端配置
vim frpc.ini
[common]
server_addr = ***********
server_port = 19198
token = *********
[ssh]
type = tcp
local_ip = 127.0.0.1
# 本地要映射的端口
local_port = 58006
# 服务端映射的端口
remote_port = 58006
- 配置frpclient端systemd,使用systemctl管理frpclient应用
[Unit]
Description=frps Server
After=syslog.target network.target
Wants=network.target
[Service]
Type=simple
ExecStart=/data/app/frp_client/frpc -c /data/app/frp_client/frpc.ini
[Install]
WantedBy=multi-user.target
- 启动和开机启机设置
systemctl start frps.service
systemctl enable frps.service
# 如果修改了配置注意执行reload
systemctl daemon-reload