使用比NGROK更强的FRP进行内网穿透
准备工作
由于开发很多时候需要用到暴露到外网的服务,而开发环境使用的不是固定IP,也用过各种动态IP更新方法,不过稳定性和解析不同步的问题一直存在,之前也用过 NGROK,但更新新版后服务端停止更新了,后来发现 FRP 的配置也类似,而且不需要自己进行编译,发行包里面有各平台的可执行文件,遂更换到 FRP,用了一段时间后发现服务还挺稳定,分享一下。
什么是NGROK
官网 https://ngrok.com/
ngrok 开源版的只有1.0的服务端,2.0 只能使用官网的公共服务
什么是FRP
官网 https://gofrp.org/
Github https://github.com/fatedier/frp
frp 支持多种代理类型,可用于SSH,HTTP,HTTPS,RDP等多种端口转发,需要自有服务器
安装
下载
来到发行版 https://github.com/fatedier/frp/releases
以 CentOS 7 x64 为例,目前的发行版本为0.39.1,下载 frp_0.39.1_linux_amd64.tar.gz
解压
tar zxvf frp_0.39.1_linux_amd64.tar.gz
压缩包包含文件
frpc
frpc_full.ini
frpc.ini
frps
frps_full.ini
frps.ini
LICENSE
systemd(DIR)
服务端(外网服务器)配置
服务器端需要的文件
frps
frps.ini
frps_full.ini 可用于配置和语法参考
编辑 frps.ini 文件
[common]
# 绑定IP,非必填,默认为 0.0.0.0
bind_addr = 0.0.0.0
# 绑定通讯端口
bind_port = 7000
# 绑定 http 端口
vhost_http_port = 8000
# 验证模式非必填,以下配置为 token 验证,如果配置了验证,客户端则必须一致
authentication_method = token
token = TOKEN
启动服务
./frps -c ./frps.ini
客户端(内网服务器)配置
客户端需要文件
frpc
frpc.ini
frpc_full.ini 可用于配置和语法参考
拿几个配置说明一下,有需要其他用法的可以留言
编辑 frpc.ini 文件
# 通用配置
[common]
# 服务器IP
server_addr = 10.0.0.1
# 服务器通讯端口
server_port = 7000
# 服务器 HTTP 通讯端口
vhost_http_port = 8000
# 验证配置,与服务端保持一致
authentication_method = token
token = TOKEN
# 以下是远程 web 转发到本地,demo.example.com 解析到 10.0.0.1 的服务器上,经隧道转发到本机 80 端口
[demo_1]
type = http
local_port = 80
custom_domains = demo.example.com
# 以下是远程 web 转发所有的泛解析子域名 *.demo.example.com 到本地80端口
[demo_all]
type = http
local_port = 80
custom_domains = *.demo.example.com
# 以下是远程 TCP 端口转发到本地 SSH 和 RDP 端口
[SSH_22]
type = tcp
# 内网 SSH 机器IP
local_ip = 172.16.0.1
# 内网 SSH 机器端口
local_port = 22
# 远程服务端的端口,即访问 10.0.0.1:60022 的时候转发到内网 172.16.0.1:22
remote_port = 60022
# 以下是远程 TCP 端口转发到本地 SSH 和 RDP 端口
[RDP_3389]
type = tcp
# 内网 SSH 机器IP
local_ip = 172.16.0.2
# 内网 SSH 机器端口
local_port = 3389
# 远程服务端的端口,即访问 10.0.0.1:63389 的时候转发到内网 172.16.0.2:3389
remote_port = 63389
# 转发 Unix 域套接字
[unix_domain_socket]
type = tcp
remote_port = 6000
plugin = unix_domain_socket
plugin_unix_path = /var/run/docker.sock
配置服务
服务端(外网服务器)
进入解压后的文件夹
复制 frps 到 /usr/bin/frps
复制 frps.ini 到 /etc/frp/frps.ini
复制 ./systemd/frps.service 文件到 /usr/lib/systemd/system/frps.service
使用服务相当于调用 /usr/bin/frps -c /etc/frp/frps.ini
,所以配置文件请编辑 /etc/frp/frps.ini
# 复制文件
cp frps /usr/bin/frps
cp frps.ini /etc/frp/frps.ini
cp ./systemd/frps.service /usr/lib/systemd/system/frps.service
# 重新加载服务配置文件
systemctl daemon-reload
# 启动 frp 服务端
systemctl start frps
# 如果有需要,可以设置开机启动
systemctl enable frps
客户端(内网服务器)
进入解压后的文件夹
复制 frpc 到 /usr/bin/frpc
复制 frpc.ini 到 /etc/frp/frpc.ini
复制 ./systemd/frpc.service 文件到 /usr/lib/systemd/system/frpc.service
使用服务相当于调用 /usr/bin/frpc -c /etc/frp/frpc.ini
,所以配置文件请编辑 /etc/frp/frpc.ini
# 复制文件
cp frpc /usr/bin/frpc
cp frpc.ini /etc/frp/frpc.ini
cp ./systemd/frpc.service /usr/lib/systemd/system/frpc.service
# 重新加载服务配置文件
systemctl daemon-reload
# 启动 frp 客户端
systemctl start frpc
# 如果有需要,可以设置开机启动
systemctl enable frpc
其他
更多服务请参照官网文档
版权声明:
作者:Kiyo
链接:https://www.wkiyo.cn/html/2022-03/i1151.html
来源:Kiyo's space
文章版权归作者所有,未经允许请勿转载。
共有 0 条评论