Frp内网穿透
Frp 是一个可用于内网穿透的高性能的反向代理应用,支持 tcp, udp 协议,为 http 和 https 应用协议提供了额外的能力,且尝试性支持了点对点穿透。
项目地址:https://github.com/fatedier/frp
安装Frp
FRP 采用 Go 语言开发,支持 Windows、Linux、MacOS、ARM等多平台部署。
这里我用的是Centos 8,为了方便管理我们把解压后的目录重命名为 frp
wget https://github.com/fatedier/frp/releases/download/v0.33.0/frp_0.33.0_linux_amd64.tar.gz
tar xzvf frp_0.33.0_linux_amd64.tar.gz
mv frp_0.33.0_linux_amd64 frp
FRP 服务端配置
配置 FRP 服务端的前提条件是需要一台具有公网 IP
的设备。
FRP 默认给出两个服务端配置文件,一个是简版的 frps.ini,另一个是完整版本 frps_full.ini。
通过frps.ini这个配置可以快速的搭建起一个 FRP 服务端。
$ cat frps.ini
[common]
bind_port = 7000
默认配置中监听的是 7000 端口,可根据自己实际情况修改。
启动 FRP 服务端
$ ./frps -c ./frps.ini
2020/05/08 01:02:31 [I] [service.go:178] frps tcp listen on 0.0.0.0:7000
2020/05/08 01:02:31 [I] [root.go:209] start frps success
FRP 客户端配置
编辑 frpc.ini
$ vim frpc.ini
[common]
#server_addr 为 FRP 服务端的公网 IP
server_addr = 192.168.50.11
#server_port 为 FRP 服务端监听的端口
server_port = 7000
# Linu SSH服务
[ssh]
#网络协议
type = tcp
#填写客户端主机IP
local_ip = 192.168.50.12
#Linux远程端口
local_port = 22
#代理到服务端的端口这里我用6000
remote_port = 6000
# Windows远程服务器
[rdp]
#网络协议
type = tcp
#填写客户端主机IP
local_ip = 192.168.50.13
#Windows远程端口,默认是3389
local_port = 3389
#代理到服务端的端口这里我用23389
remote_port = 23389
启动 FRP 客户端
$ ./frpc -c ./frpc.ini
2020/05/07 23:18:53 [I] [service.go:282] [adbfac88ab64d72f] login to server success, get run id [adbfac88ab64d72f], server udp port [0]
2020/05/07 23:18:53 [I] [proxy_manager.go:144] [adbfac88ab64d72f] proxy added: [ssh]
2020/05/07 23:18:53 [I] [control.go:179] [adbfac88ab64d72f] [ssh] start proxy success
我们查看服务端的提示
2020/05/08 07:18:49 [I] [service.go:178] frps tcp listen on 0.0.0.0:7000
2020/05/08 07:18:49 [I] [root.go:209] start frps success
2020/05/08 07:18:55 [I] [service.go:432] [adbfac88ab64d72f] client login info: ip [192.168.50.12:39836] version [0.33.0] hostname [] os [linux] arch [amd64]
2020/05/08 07:18:55 [I] [tcp.go:63] [adbfac88ab64d72f] [ssh] tcp proxy listen port [6000]
2020/05/08 07:18:55 [I] [control.go:445] [adbfac88ab64d72f] new proxy [ssh] success
可以看到我们的SSH服务已经成功连接到服务端的6000端口。
$ ssh root@192.168.50.11 -p 6000
The authenticity of host '[192.168.50.11]:6000 ([192.168.50.11]:6000)' can't be established.
ECDSA key fingerprint is SHA256:jwBjW8YC0VaFaTRTJaB8EJDuAZFZ6MBlh6pJbSVjngU.
Are you sure you want to continue connecting (yes/no)?
可以看到已经可以成功连接到服务器。
将服务添加至systemctl
这里以frp服务端为例
将frp/systemd
目录下的frps.service
复制到/etc/systemd/system/
目录下
$ cp /frp/systemd/frps.service /etc/systemd/system
复制配置文件和二进制文件到相对应的目录
$ cp /frps /usr/bin
$ cp /frps.ini /etc/frp
重新加载服务配置
$ systemctl daemon-reload
设置为开机启动
$ systemctl enable frps.service
到这里就完成了Frp服务的所有配置,这样就能随时随地的访问我们家中的电脑了。