自建Ngrok服务器实现内网穿透远程访问教程
版权申诉
192 浏览量
更新于2024-09-08
收藏 219KB PDF 举报
"Linux环境下使用Ngrok搭建内网穿透服务器,实现远程访问内网计算机的教程"
在当前的数字化时代,远程访问和管理内网中的计算机变得越来越重要,尤其是在没有公网IP或者受到网络限制的情况下。Ngrok作为一个强大的内网穿透工具,能够帮助我们创建安全的隧道,使得公网可以访问到内网中的服务。本教程将指导你如何在Linux系统上搭建自己的Ngrok服务器。
首先,确保你拥有一个域名,这个域名不需要进行备案。然后,你需要对这个域名进行DNS解析,设置两条记录:一条是将域名(例如:xxx.com)直接指向你的服务器IP地址(xxx.xx.xx.xx),另一条是将通配符星号(*.xxx.com)也指向同一IP。这样,任何子域名都可以通过这个IP地址访问。
Ngrok的核心原理是反向代理,它创建了一个从公共互联网到本地运行的Web服务的安全通道,同时还能捕获和分析通过隧道的所有网络流量,便于后续的检查和回放。
以下是详细的搭建步骤:
1. **安装必备软件**
- 安装GNU编译器套件,用于编译源码:`yum install gcc -y`
- 安装Git,用于下载Ngrok源码:`yum install git -y`
- 安装Go语言环境,因为Ngrok是用Go编写的:`yum install mercurial git bzr subversion golang golang-pkg-windows-amd64 golang-pkg-windows-386 -y`
2. **安装lrzsz和screen**
- lrzsz用于文件上传和下载:`yum install lrzsz -y`
- screen提供多窗口会话管理:`yum install screen -y`
3. **下载Ngrok源码**
- 使用Git克隆Ngrok的官方仓库到指定目录,例如`/opt`:`git clone https://github.com/inconshreveable/ngrok.git`
4. **生成Ngrok证书**
- 配置你的域名环境变量,例如:`export ngrok_domain="jmps.cloudlinks.cn"`
- 进入ngrok目录,并生成根证书和设备证书:
- `cd ngrok`
- 用以下命令依次生成证书:
```
export NGROK_DOMAIN="jmps.cloudlinks.cn"
openssl genrsa -out rootCA.key 2048
openssl req -x509 -new -nodes -key rootCA.key -subj "/CN=$NGROK_DOMAIN" -days 5000 -out rootCA.pem
openssl genrsa -out device.key 2048
openssl req -new -key device.key -subj "/CN=$NGROK_DOMAIN" -out device.csr
openssl x509 -req -in device.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out device.crt -days 5000
```
5. **拷贝证书并启动Ngrok服务器**
- 将生成的证书移动到Ngrok源码目录下的相应位置,替换原有证书,确保路径正确。
- 编译Ngrok源码以生成可执行文件:`go build`
- 使用可执行文件启动Ngrok服务器,指定配置文件和证书路径。
完成上述步骤后,你的Ngrok服务器就已经搭建好了。你可以通过公网域名加上Ngrok的端口号来访问内网中的服务。例如,如果你将远程桌面服务配置为8080端口,那么可以通过`http(s)://yourdomain.com:8080`来远程访问。
值得注意的是,为了保障安全,你应该定期更新你的证书,并且确保你的服务器有足够的安全措施,防止未授权的访问。此外,如果你需要长时间稳定的服务,建议使用高可用的服务器集群来部署Ngrok。
通过自行搭建Ngrok服务器,不仅可以避免使用第三方服务的费用,还可以更好地控制你的数据安全,同时享受到内网穿透带来的便利。这是一项对于IT管理员和技术爱好者非常实用的技能。
2021-05-27 上传
2024-11-07 上传
2024-11-07 上传
2024-11-07 上传
2023-08-08 上传
Bill165313109
- 粉丝: 0
- 资源: 9
最新资源
- Python中快速友好的MessagePack序列化库msgspec
- 大学生社团管理系统设计与实现
- 基于Netbeans和JavaFX的宿舍管理系统开发与实践
- NodeJS打造Discord机器人:kazzcord功能全解析
- 小学教学与管理一体化:校务管理系统v***
- AppDeploy neXtGen:无需代理的Windows AD集成软件自动分发
- 基于SSM和JSP技术的网上商城系统开发
- 探索ANOIRA16的GitHub托管测试网站之路
- 语音性别识别:机器学习模型的精确度提升策略
- 利用MATLAB代码让古董486电脑焕发新生
- Erlang VM上的分布式生命游戏实现与Elixir设计
- 一键下载管理 - Go to Downloads-crx插件
- Java SSM框架开发的客户关系管理系统
- 使用SQL数据库和Django开发应用程序指南
- Spring Security实战指南:详细示例与应用
- Quarkus项目测试展示柜:Cucumber与FitNesse实践