疫情期间大家都在讨论 远程办公
的实现,推荐看下黄东旭大佬 写的 《PingCAP的5年远程办公实践》,以下内网映射工具作为常用补充。
来讲讲为啥要做内网映射
从公网中访问自己的内网设备一直是个麻烦事情,尤其是做微信开发等。设备可能处于路由器后,或者运营商因为IP地址短缺不给你分配公网IP地址。如果我们想直接访问到这些设备,一般非常麻烦。
- 求网管大佬在路由器上给自己内网加个
端口映射
- 购买
花生壳
等动态域名解析软件 - 使用 natapp 等免费(也有付费的)的提供的内网映射服务
- 基于
ngrok/frp
自建内网映射服务
为什么放弃 ngrok
,使用 frp
我们在2016年提供了一个ngrok
的免费服务,并且分享了搭建的步骤可以参考《Angrok 一个内网穿透服务》 ,搭建步骤对于一般的用户非常不友好,后边也就停止了相关的服务转向了 frp
。
Github 的关注度对比
穿透协议支持
frp 支持 http ssh tcp udp ftp 等协议
开始动手
准备工作
搭建一个完整的frp服务,我们需要
- 公网IP 的 ECS 一台
- 域名 (若不需要解析则不需要)
安装 frp (frps)
服务端
- 下载 frp 安装包
https://github.com/fatedier/frp/releases/download/v0.31.1/frp_0.31.1_darwin_amd64.tar.gz
- 解压压缩包,修改
frps.ini
[common]
bind_port = 7000 # frps 服务启动,占用的端口
vhost_http_port = 80 # frps 服务监听转发的端口
- 启动
frps
服务
./frps -c ./frps.ini
安装 frp(frpc)
客户端
- 在目标内网设备机器,安装客户端。 根据操作系统下载不同版本
自定义域名访问内网服务
- 修改
frpc.ini
[common]
server_addr = ECS的公网IP
server_port = 7000
[随意但必须唯一]
type = http
local_port = 本地目标服务的端口
custom_domains = 自定义的域名
- 启动客户端
./frpc -c ./frpc.ini
- 访问 自定义域名即可访问内网的服务
使用ssh访问公司内网机器
- 修改
frpc.ini
[common]
server_port = 7000
[随意但必须唯一]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 10022
- 启动客户端
./frpc -c ./frpc.ini
- 通过 ssh 访问内网机器
ssh -p 10022 root@x.x.x.x