赞
踩
内网穿透,即 NAT穿透,网络连接时术语,计算机是局域网内时,外网与内网的计算机节点需要连接通信,有时就会出现不支持内网穿透。——来自百度百科。
简单来说,就是让互联网(外网)的设备能访问局域网(内网)的设备提供的服务,这里的设备通常是电脑。
对开发人员来说,一个典型的应用场景就是针对第三方授权(通常是oauth2.0)和支付回调的开发调试。通过内网穿透工具将第三方SDK的回调地址映射到本机开发环境,从而实现实时调式。
其次是节约部署成本(通常是公网服务器费用)。通过将应用部署在本机,再利用内网穿透工具对外提供服务,这样就能,既节约服务器租用费用,又能提升服务器的硬件配置。
本文适用于第一种情况,即低频率开发调式用。
nps-npc ngrok ew frp
ngrok 这是一个国外的穿透工具,1.0版本是开源的,目前2.0以上版本已经闭源,并且提供免费和收费的服务。
这是一个国内的开源工具,目前最新版本为0.26.0,有比较详尽的中文文档,并且一直在维护更新。
由于frp一直开源,并且维护积极、更新频繁,再加上中文文档加持,本文最终选择了frp作为搭建工具。
注:frp自主搭建需要一个有公网ip的服务器。
frp官网: https://gofrp.org/docs/
下载frp:https://github.com/fatedier/frp (注意: 客户端和服务端版本要一致)
本文服务器系统为CentOS7 64位,选择了frp_0.38.0_linux_adm64.tar.gz;本机系统为Mac OS X,于是选择了frp_0.38.0_darwin_amd64.tar.gz
使用浏览器下载到本机,将frp_0.38.0_linux_amd64.tar.gz上传到服务器, 压缩包frp_0.26.0_darwin_amd64.tar.gz直接在本机解压。
使用wget下载
wget https://github.com/fatedier/frp/releases/download/v0.38.0/frp_0.38.0_linux_amd64.tar.gz
解压
tar -xzvf frp_0.38.0_linux_amd64.tar.gz
使用curl下载
curl -O https://github.com/fatedier/frp/releases/download/v0.38.0/frp_0.38.0_darwin_amd64.tar.gz
解压
tar -xzvf frp_0.38.0_darwin_amd64.tar.gz
注:服务端只需用到frp_0.38.0_linux_amd64目录下的frps相关文件,本机(客户端)只需用到frp_0.38.0_darwin_amd64目录下的frpc相关文件
通过自定义域名访问内网的 Web 服务: https://gofrp.org/docs/examples/vhost-http/
vi frps.ini
注:确保当前已进入工作目录/root/frp_0.38.0_linux_amd64/
[common]
bind_port = 7000
#http服务端口
vhost_http_port = 8086
#https服务端口
vhost_https_port = xxx
# dashboard
dashboard_port = 7500
注: vhost_http_port监听的端口不能被占用,否则会导致frps不能启动,端口可根据实际需要修改;bind_port端口为frp服务端和客户端连接通信的端口,默认为7000。
frps dashboard 通过浏览器查看 frp 的状态以及代理统计信息展示。
Dashboard 尚未针对大量的 proxy 数据展示做优化,如果出现 Dashboard 访问较慢的情况,请不要启用此功能
方法一: 启动命令(这种方式不推荐,因为断开与服务器的SSH连接后,frp也就停止运行了
./frps -c ./frps.ini
方法二: 建议让frp在后台运行:
nohup ./frps -c frps.ini & > frp.log
这样即使关掉了SSH,frp依然在后台运行中。
注:如遇permission denied错误,表明frps可能没有运行权限,则先赋权:
chmod 700 frps
然后再次执行启动命令。
到此,服务端的搭建已经完成。
[common]
# frps的ip地址
server_addr = x.x.x.x
# frps的端口
server_port = 7000
[web]
type = http
#本地http服务端口
local_port = 9999
# 绑定域名
custom_domains = xxx
./frpc -c ./frpc.ini
注:此时frpc会通过7000端口尝试与frps建立通信连接,如果一切顺利,则终端会提示连接成功;但实际情况却显示连接失败,请检查:
服务端 7000端口, 和8086端口(根据自己端口变换) 是否已经开放
到此,客户端的搭建已经完成。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。