手把手教你免费内网穿透【2020.7.13 已失效】
rui_er
2020-05-07 11:25:51
> 你是否有过很想把内网的网页放到公网让大家也可以访问?你是否很想把搭建的 OJ 放到公网?今天,我来教大家内网穿透的具体操作步骤。
# 0 准备工作
首先,你需要准备如下材料:
- 一台电脑
- 一个 localhost 网页(即 `localhost:xxx` 或 `127.0.0.1:xxx`)
- (选)一个可以解析的域名(国内服务器需要备案)
# 1 注册 Ngrok 账号
去 [Ngrok 官网](http://www.ngrok.cc)点击注册,注册一个新账号并登录,此时应该看到如下界面:
![](https://cdn.luogu.com.cn/upload/image_hosting/r8aynzvv.png)
其中“开通隧道”处应为 `0 / 0 / 0`,这里有数字是因为我已经进行了后续操作。
# 2 开通隧道
点击左侧导航栏“隧道管理→开通隧道”,划到最下面“美国 Ngrok 免费服务器”,点击按钮“立即购买”。当然如果你是土豪选择买一个付费隧道也可以。
# 3 配置隧道
做完上面的操作后看到如下界面:
![](https://cdn.luogu.com.cn/upload/image_hosting/zqpy4ny1.png)
**隧道名称**栏可以随便填,只是方便记忆。**隧道协议**选择 http。**前置域名**填写一个由字母、数字、减号、下划线组成的字符串,是你想要的域名前缀地址,最后你的网站会在这个子域名显示。**本地端口**是你本地的访问地址,一般是 `localhost:80 / 127.0.0.1:80`,不用改;否则把冒号后面的端口号改成你的端口。**http 验证用户名**和 **http 验证密码**空着即可。
配置完上面的内容,点击“确认添加”即可。
# 4 设置自定义域名
例如这里我的前置域名写的是 `akioi`,那么一会访问地址就会在前置域名那栏那个网址。**如果您不想把网站放到自己的域名,请忽略此步骤。**
![](https://cdn.luogu.com.cn/upload/image_hosting/ummv7g6l.png)
域名类型选择“使用自定义域名”,在自定义域名里面填写你想放到的网址,划到最下面“确认修改”。
在自定义域名添加 CNAME 解析指向 ngrok 服务器,具体的在编辑界面写了,可以看。
# 5 开通映射服务
这里作者主要讲解 Windows 与 Linux 的开通方法,其他系统也可以上网百度的到。
回到隧道管理界面,看到
![](https://cdn.luogu.com.cn/upload/image_hosting/op7nzm60.png)
点击“客户端下载”,选择自己的操作系统,下载,将 zip 文件解压。
## 5.1 Linux
作者本人是用 Linux 虚拟机搭建了一个 OJ,所以使用的是 Linux 的方法。
打开命令行,cd 到解压后的文件夹里,有一个 sunny 文件。此时输入命令 `./sunny clientid <xxx>`,其中 `<xxx>` 换成你的隧道 id(见上图),看到 `Tunnel Status Online` 就代表成功了。
![](https://cdn.luogu.com.cn/upload/image_hosting/a03y6ap4.png)
## 5.2 Windows
打开 cmd,cd 到文件夹,输入指令 `ngrok -authtoken <id> -subdomain <subdomain> <port>`,其中 `<id>,<subdomain>,<port>` 分别是隧道 id、二级域名和端口,判定成功的条件和 Linux 一样。
# 6 尽情享用吧!
作者通过这种方式把虚拟机 `http://127.0.0.1:80` 映射到了 `http://oj.ak-ioi.cf`。你也可以在你的自定义域名或默认域名找到你的网站。
# 7 常见错误
- Q:我配置了隧道为什么访问不了?
- A:配置完隧道还要开通服务才能显示哦~
- Q:为什么 Tunnel Status 显示 Reconnecting?
- A:因为 ngrok 的服务不太稳定,大概等一小会就好了;如果没有好,可以检查一下自己的网络连接。**具体可以看 ngrok 官方 wiki。**
- **Q:官方 wiki 没有包含我的问题怎么办?**
- **A:可以先到洛谷私信 rui_er,如果他也不会可以加入 ngrok QQ 群提问。**
# 8 优点缺点
优点有免费、简单;但是缺点是连接可能不太稳定,且延时较大。不过瑕不掩瑜,不影响整体运行。
~~欢迎大家到我的 [OJ](http://oj.ak-ioi.cf) 来参观!~~