内网穿透原理简介
两个毫无联系的内网无法访问对面的服务,但是可以访问相同的外网服务,此时就可以利用这个外网服务器做数据包的转发来实现访问。这样一来会有一个新的问题,公网服务器怎么定位内网需要转发的目标服务器,这里可以利用内网目标服务器主动发起连接的通道做数据包的转发以达到网络穿透的目的。
下载FRP
可以在GitHub仓库中选择合适版本、系统、架构的包,一定要选择带amd64的包,下面列出主流三大操作系统的包: https://github.com/fatedier/frp/releases/
linux: https://github.com/fatedier/frp/releases/download/v0.37.0/frp_0.37.0_linux_amd64.tar.gz
mac os:https://github.com/fatedier/frp/releases/download/v0.37.0/frp_0.37.0_darwin_amd64.tar.gz
windows:https://github.com/fatedier/frp/releases/download/v0.37.0/frp_0.37.0_windows_amd64.zip
linux通过wget下载包:C
wget https://github.com/fatedier/frp/releases/download/v0.37.0/frp_0.37.0_linux_amd64.tar.gz
下载完后创建安装目录并解压到这个目录:C
mkdir /etc/frp && tar -zxvf frp_0.37.0_linux_amd64.tar.gz -C /etc/frp
服务端客户端配置
修改服务端frps.ini配置文件,在frp包中有默认模板文件,使用下面内容即可满足启动要求:C
[common]
bind_addr=0.0.0.0
bind_port=20001
dashboard_user=user
dashboard_pwd=password
dashboard_port=20002
tcp_mux=true
token=32303231-3036-3035-e6b5b7e5ae87e4bfa1e681af
修改客户端frpc.ini配置文件,在frp包中有默认模板文件,使用下面内容即可满足启动要求:C
[common]
server_addr=remote_ip
server_port=20001
token=32303231-3036-3035-e6b5b7e5ae87e4bfa1e681af
[ssh]
type=tcp
local_ip=127.0.0.1
local_port=8001
remote_port=8001
启动测试
两端配置文件配置完成后可以开始启动服务测试是否能够穿透到内网,以下列命令为例。启动成功后,用 remote_ip remote_mapping_port 来访问本地对口,例如上面配置就访问:remote_ip:8001
。如果向映射多个端口用ip-ip或ip,ip的形式来映射多个端口。
服务端:C
/etc/frp/frp_0.37.0_linux_amd64/frps -c /etc/frp/frps.ini
客户端:C
frpc.exe -c frpc.ini
服务端设置系统启动方式
编辑服务文件,在frps的包里有一个systemd文件夹,文件夹下有服务端和客户端的模板,可以复制一份也可以直接更改。主要修改[Service]标识头下的ExecStart,也就是手动启动的命令。C
vi /etc/frp/frp_0.37.0_linux_amd64/systemd/frps.service
[Service]
Type=simple
User=nobody
Restart=on-failure
RestartSec=5s
ExecStart=/etc/frp/frp_0.37.0_linux_amd64/frps -c /etc/frp/frps.ini
复制服务文件到系统控制路径下C
cp /etc/frp/frp_0.37.0_linux_amd64/systemd/frps.service /lib/systemd/system/
查看是否能够通过systemctl查看到frps服务C
systemctl status frps
● frps.service - Frp Server Service
Loaded: loaded (/lib/systemd/system/frps.service; disabled; vendor preset: enabled)
Active: inactive (dead)
启动 frps 服务C
systemctl start frps
# 查看frps服务状态
systemctl status frps
● frps.service - Frp Server Service
Loaded: loaded (/lib/systemd/system/frps.service; disabled; vendor preset: enabled)
Active: active (running) since Sat 2021-06-05 22:15:23 CST; 10s ago
Main PID: 598806 (frps)
Tasks: 4 (limit: 2274)
Memory: 17.4M
CGroup: /system.slice/frps.service
└─598806 /etc/frp/frp_0.37.0_linux_amd64/frps -c /etc/frp/frps.ini
# 也可以用ps查看服务状态
ps aux | grep frps
nobody 598806 0.2 1.0 717060 21384 ? Ssl 22:15 0:00 /etc/frp/frp_0.37.0_linux_amd64/frps -
评论(0)