因为要将内网的服务暴露在外网进行访问,需要使用Frp来做内网穿透。
记录一下搭建过程
服务器环境
腾讯云
操作系统:TencentOS Server 2.4
CPU:1核
内存:2G
公网带宽:1Mbps
搭建过程
frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。
下载最新稳定版
在release页面下载最新稳定版,将下载下来的包上传至服务器。
我选择将下载下来的包解压到/opt
目录:
观察解压后的文件
frps
是服务端运行文件frpc
是客户端运行文件systemd
文件夹,里面包含frps.service
等文件,可用于配置systemctl
启动,将frp
服务设置为Linux
守护线程、开机启动。frps.service [Unit]
Description=Frp Server Service
After=network.target
[Service]
Type=simple
User=nobody
Restart=on-failure
RestartSec=5s
ExecStart=/usr/bin/frps -c /etc/frp/frps.ini
LimitNOFILE=1048576
[Install]
WantedBy=multi-user.target
执行相关命令
注意到frps.service
中有这么一句:ExecStart=/usr/bin/frps -c /etc/frp/frps.ini
,官方默认的执行位置在/usr/bin/frps
配置文件路径是/etc/frp/frps.ini
。
因此,为了方便以后升级,执行以下命令:
ln -s /opt/frp/frps /usr/bin/frps |
将
frps.service
文件复制到/etc/systemd/system
执行命令
systemctl start frps
以启动frps
服务端执行命令
systemctl status frps
以查看运行状态执行命令
systemctl enable frps
设置开机启动
客户端
frpc
也是类似的配置
其他配置
通过自定义域名访问内网的 Web 服务
这个示例通过简单配置 HTTP 类型的代理让用户访问到内网的 Web 服务。
HTTP 类型的代理相比于 TCP 类型,不仅在服务端只需要监听一个额外的端口 vhost_http_port
用于接收 HTTP 请求,还额外提供了基于 HTTP 协议的诸多功能。
修改 frps.ini 文件,设置监听 HTTP 请求端口为 8080:
[common]
bind_port = 7000
vhost_http_port = 8080修改 frpc.ini 文件,假设 frps 所在的服务器的 IP 为 x.x.x.x,
local_port
为本地机器上 Web 服务监听的端口, 绑定自定义域名为custom_domains
。[common]
server_addr = x.x.x.x
server_port = 7000
[web]
type = http
local_port = 80
custom_domains = www.yourdomain.com
[web2]
type = http
local_port = 8080
custom_domains = www.yourdomain2.com分别启动 frps 和 frpc。
将
www.yourdomain.com
和www.yourdomain2.com
的域名 A 记录解析到 IPx.x.x.x
,如果服务器已经有对应的域名,也可以将 CNAME 记录解析到服务器原先的域名。或者可以通过修改 HTTP 请求的 Host 字段来实现同样的效果。通过浏览器访问
http://www.yourdomain.com:8080
即可访问到处于内网机器上 80 端口的服务,访问http://www.yourdomain2.com:8080
则访问到内网机器上 8080 端口的服务。