使用 FRP 实现内网穿透

一般来说国内家用网络没有独立IP,而且可能你还在几层内网里面,这个时候如果想在外面访问自己家里搭建的网站服务,直接用 IP 访问显然不太现实,这个时候就可以使用 FRP 或者 ngrok 这样的工具来实现内网穿透。
这里我选择使用的是 FRP,NGROK 配置十分繁琐,而 FRP 的话一般来说几分钟就可以搞定。(虽然我是搞了三个小时,原因是防火墙的问题...)
首先我们需要去下载 FRP 的服务端与客户端,这个作者已经打包好了,在这个地址就可以下载:https://github.com/fatedier/frp/releases。基本囊括了主流的平台,我这里采用的服务端是 CentOs 7.x 所以我下载了 Linux x64 的版本,但是每个平台的使用方法都一样,所以不会很麻烦。
具体的使用方法可以在 GITHUB 的 README 处看到。这里我仅讲述基本步骤,首先将下载完成的服务端解压,然后编辑 frps.ini文件,进行如下配置:

[common]
# 监听的服务器地址
bind_addr = 0.0.0.0
# 监听的端口
bind_port = 7000
# HTTP 映射端口
vhost_http_port = 8080
# 仪表盘监听地址
dashboard_addr = 0.0.0.0
# 仪表盘监听端口
dashboard_port = 7500
# 仪表盘管理用户
dashboard_user = admin
# 仪表盘管理用户密码
dashboard_pwd = admin
# FRP 连接密钥
privilege_token = 12345678
# 授权过期时间
authentication_timeout = 900

之后运行服务端:

./frps -c /frps.ini

服务端运行成功之后,客户端配置(frpc.ini)如下:

[common]
# 填写你服务器的 IP
server_addr = *.*.*.*
# 填写服务器监听的端口
server_port = 7000
# 填写连接密钥
privilege_token = 12345678
[web]
# 协议类型
type = http
# 本地需要映射的服务的端口,这里是我站点的端口
local_port = 5001
# 本地需要映射的服务IP
local_ip = 10.0.0.2
# 域名,这里需要将这个域名解析至你的服务器
custom_domains = www.yourname.com

之后我们使用 www.yourname.com:8080 就可以访问了。
当然我在这里使用了反向代理,直接将 8080 映射到 80 端口,所以我直接可以通过 www.yourname.com 来访问我的站点。
要使用 FRP 实现内网穿透你需要准备一台服务器/VPS,当然你也可以使用免费的FRP 服务器来映射。
这里列出这些免费的 FRP 服务器:

[common]
server_addr = nat.ee
server_port = 7000
privilege_token = www.nat.ee
user = 自定义用户名称
[自定义服务名称]
type = http
local_port = 80
local_ip = 127.0.0.1
custom_domains = 自定义域.nat.ee