前言
由于我的实验室主机处于校园网内网,所以我只有登录校园网才能进行 SSH 远程连接。如果我处在外网中,那我就与我的主机失去联系了。今天我无意中接触到了一个很好用的内网穿透工具——FRP,顿时来了兴趣,花了一段时间将其部署在我的阿里云主机以及实验室主机上。这样我在外网也可以顺利的使用 SSH 远程连接到我的实验室主机了。
准备
- 一台具有公网 IP 的设备:我的阿里云主机
- 一台处于内网中的设备:我的实验室主机
FRP 介绍
FRP 全名:Fast Reverse Proxy。FRP 是一个使用 Go 语言开发的高性能的反向代理应用,可以帮助您轻松地进行内网穿透,对外网提供服务。FRP 支持 TCP、UDP、HTTP、HTTPS等协议类型,并且支持 Web 服务根据域名进行路由转发。
FRP 的作用
- 利用处于内网或防火墙后的机器,对外网环境提供 HTTP 或 HTTPS 服务。
- 对于 HTTP, HTTPS 服务支持基于域名的虚拟主机,支持自定义域名绑定,使多个域名可以共用一个 80 端口。
- 利用处于内网或防火墙后的机器,对外网环境提供 TCP 和 UDP 服务,例如在家里通过 SSH 访问处于公司内网环境内的主机。
FRP 的安装
首先获得 FRP 的下载地址:https://github.com/fatedier/frp/releases
服务端安装
下载 FRP:
wget https://github.com/fatedier/frp/releases/download/v0.29.0/frp_0.29.0_linux_amd64.tar.gz
解压
tar --xzvf frp_0.29.0_linux_amd64.tar.gz
为了便于操作,更改文件夹名
mv frp_0.29.0_linux_amd64/ frp
修改配置
cd frp
vim frps.ini
内容如下
[common]
bind_port = 7000 # frp服务的端口
vhost_http_port = 8889 # frp的http服务的端口
启动服务
./frps -c frps.ini # 前台直接启动,测试看日志方便
我们就成功启动一个监听在 7000 端口的 FRP 服务端。
另外我们也可以在后台启动:
nohup ./frps -c ./frps.ini &
另外如果和我一样使用阿里云主机的话,还需要在安全组配置中打开端口。
客户端安装
和在服务端安装类似
wget https://github.com/fatedier/frp/releases/download/v0.29.0/frp_0.29.0_linux_amd64.tar.gz
tar --xzvf frp_0.29.0_linux_amd64.tar.gz
mv frp_0.29.0_linux_amd64/ frp
cd frp
vim frpc.ini
内容如下:
[common]
server_addr = *.*.*.* # 服务端的公网 IP
server_port = 7000 # 服务端设定的端口号
[ssh] # SSH 配置
type = tcp # 表示转发的类型,我们只用到 TCP
local_ip = 127.0.0.1 # 本地 IP
local_port = 22 # 本地ssh服务端口
remote_port = 6000 # 远程连接时使用的端口
[http]
type = http # 协议格式
local_ip = 127.0.0.1
local_port = 4000 # 本地服务端口
custom_domains = **.** # 域名
同时我们也要将此域名解析到我们的服务端公网 IP
启动服务
./frpc -c ./frpc.ini
同样,可以再后台启动
nohup ./frpc -c ./frpc.ini &
测试
SSH 测试
在一台处于外网的设备的终端上输入:
ssh -p remote_port端口号 客户端的用户名@服务端的公网IP
成功的话,输入密码即可进入系统。
HTTP 测试
在本地启动一个 4000端口的 http 服务,比如调试我的 Hexo 博客。
hexo s
然后在处在外网的设备的浏览器上访问
http://**.**:8889/
即可看到我的博客内容,即页面成功显示内网服务返回的内容。
添加评论
评论
浅笑
回复