“ 演示如何利用内网穿透工具FRP,实现域名拜访内网Web服务;外网SSH拜访内网主机;图文形容FRP基本原理。”
成果
前提条件
- 有固定公网IP地址的主机(下文命名为public)
- 可拜访公网的内网主机(下文命名为internal)
下载安装
在public主机和internal主机上别离下载对应零碎的frp程序压缩包。作者的公网主机和内网主机均为CentOS零碎,因而在两台主机上均执行如下命令进行下载安装。(其余零碎的安装包能够通过Github搜寻frp仓库的发布页面进行下载)
wget https://github.com/fatedier/frp/releases/download/v0.37.0/frp_0.37.0_linux_amd64.tar.gztar -zxf frp_0.37.0_linux_amd64.tar.gz -C $HOME# 倡议批改解压后的文件夹名称mv $HOME/frp_0.37.0_linux_amd64 $HOME/frp# 建设软连贯不便后续调用执行ln -s $HOME/frp/frpc /usr/local/bin/frpcln -s $HOME/frp/frpc /usr/local/bin/frpc
拜访内网Web服务
想要通过浏览器以 http://公网ip:8000 的形式,拜访内网主机_80端口_上的Web服务,仅须要:
- 在public主机上批改配置文件frps.ini为:
[common]bind_port = 7000vhost_http_port = 8000
- 在internal主机上批改配置文件frpc.ini为:
[common]server_addr = x.x.x.xserver_port = 7000[web]type = httplocal_port = 80custom_domains = your_domain
别离在内网主机启动frpc客户端程序,公网主机启动frps服务端程序:
# internal主机上frpc -c ./frpc.ini# public主机上frps -c ./frps.ini
(留神配置文件中的端口须要保障可拜访,其中x.x.x.x为你的公网主机IP地址)
此时即可通过 _http://公网ip:8000_ 拜访你部署在内网中的Web服务了。
SSH拜访内网
在public主机上批改 frps.ini 文件,仅需设置 frp 服务器用户接管客户端连贯的端口:
[common]bind_port = 7000
在须要被拜访的internal主机上批改 frpc.ini 文件,假如 frps 所在服务器的公网 IP 为 x.x.x.x:
[common]server_addr = x.x.x.xserver_port = 7000[ssh]type = tcplocal_ip = 127.0.0.1local_port = 22remote_port = 6000
(SSH 服务通常监听在 22 端口)
local\_ip:内网主机须要裸露到公网的服务地址
local\_port:内网主机须要裸露到公网的配置端口
remote\_port:frp 服务端监听的端口
(拜访remote\_port端口的流量将会被转发到本地服务对应的端口)
别离在内网主机上启动frp客户端程序,公网主机上启动frps服务端程序:
# internal主机上frpc -c ./frpc.ini# public主机上frps -c ./frps.ini
此时即可通过 SSH 拜访内网机器,假如用户名为 test:
ssh -oPort=6000 test@x.x.x.x
(frp 会将申请 x.x.x.x:6000 的流量转发到内网机器的 22 端口)
FRP基本原理
几点劣势
- 在可通过内网穿透技术施展闲置电脑的余热,简略部署即可轻松取得公网可拜访的Web服务(不倡议在生产环境中这么做)
- 没有VPN一样可能拜访内网,且部署老本更低