演示如何利用内网穿透工具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一样可能拜访内网,且部署老本更低