终于做到了同时上内网和外网

今天在网络上所获得了历史性的突破!!!

我终于可以同时上内网和外网啦!!!!(火星

起因:

阿什十经常把本陆的网络当作rbq,虽然频率不高但是偶然来一个偶捏该还是很烦的。这意味着我需要:

  1. 先把偶捏该的文件给下好
  2. 断开外网,连接学校的内网
  3. 把偶捏该的内容通过ftp传上去
  4. 重新接回内网

但是在3这个过程,可谓是非常的痛苦。

如果在这时我正在进行着看视频、下东西这种耗流量大的活动的话,就会产生很多不必要的流量消耗。(不知道为啥会消耗流量的请去看上一篇《失去网络的第三天》

所以我就想着能不能有一种办法让我同时上内网和外网,这样我就不用切来切去了。

过程:

经过百度之后,我发现其实这并不是什么特别难的事情(大概)

首先,我需要同时连上内网和外网。这个很简单,我用网线连内网,用无线连外网就行了。

百度给出的方案是修改系统内的路由表。

百度第一个结果就有的超棒(?)解决方案

打开cmd(记得要管理员权限),输入route print之后,就能看到路由表的内容。

由于我这里已经修改完了,所以没有修改之前的图。不过在我的路由表里面,是差不多这个样子的:

(横杠是我自己加的打码效果,横杠占的地方都应该是数字(ip地址))

IPv4 路由表
===========================================================================
活动路由:
网络目标                  网络掩码          网关                     接口          跃点数
0.0.0.0                    0.0.0.0      192.168.1.1         192.168.1.106      36
0.0.0.0                    0.0.0.0      10.2-.2-.2–        10.25.–.-      36
10.2-.–.-                  255.255.255.0   在链路上            10.25.–.-      291
10.2-.25.-                255.255.255.255  在链路上           10.25.–.-      291
10.2-.2-.2–             255.255.255.255  在链路上          10.25.–.-     291

网络目标:你要访问的地址的目标。如果这个地址是0,就说明0~255这个范围的地址都会被分配到这个路由项上。

网络掩码:子网掩码,转换为二进制之后,和1重合的为公网段,和0重合的为内网段(这个百度一下就知道了)。

网关:负责转发的路由的ip地址。“在链路上”表示主机直接访问目标网络,没有转发。

接口:自己的IP地址,这个ip地址对应着对应网卡的ip。

例如说,在这里我的ip有两个,192.168.1.106 和 10.25.–.- ,

其中192.168.1.106是我在连接外网的路由器得到的内网ip地址,10.25.–.- 是我连接内网得到的ip地址。

网络目标为0.0.0.0,意味着所有的ip地址都会被放进这个目标项内。

但是在这个路由表内也存在着其他的项,所以符合其他项要求的地址就会按照其他项设置的那样被转发。

而所有其他项都不符合的地址就会被放入0.0.0.0中。

我这里存在两个0.0.0.0,所以会产生冲突。

在我这里的情况是,操作系统采用第一个路由表的规则:

网络目标                  网络掩码          网关                     接口          跃点数

0.0.0.0                    0.0.0.0      192.168.1.1         192.168.1.106      36

操作系统会选择用192.168.1.1这个网关来传输,也就是用外网访问。

所以第一个要做的就是删掉冲突的路由项。

route delete 0.0.0.0

输入之后,所有0.0.0.0的项都会被删除,如果没其他例外的话,这时候绝大多数应用都应该已经断网了【

所以为了重新上网,需要把路由项给加回去,在这里我要加上使用外网传输的路由项:

route add 0.0.0.0 mask 0.0.0.0 192.168.1.1

命令解释:route add [网络目标] (mask [网络掩码]) [网关]

如果没出问题的话,这时候应用应该已经恢复网络了。

到了这个阶段,使用外网作为默认转发已经设置好了。接下来要配置内网。

在我校的内网中,主要用到的ip段为 10.*.*.* 和 192.168.*.*

所以需要加上这两个段

route add 10.0.0.0 mask 255.0.0.0 10.2-.2-.2–

route add 192.168.0.0 mask 255.255.0.0 10.2-.2-.2–

(这里10.2-.2-.2–是刚才查询路由表得到的内网的网关地址)

如果没出问题的话,这时候就已经可以直接访问内网了。

但是到这里还没结束,目前为止我们加的都是活动路由,如果重新连接,路由表的信息就会重置。

所以可以加一个持久化的参数,也就是-p,例如:

route add -p 10.0.0.0 mask 255.0.0.0 10.2-.2-.2–

这样路由项就被持久化了,在”永久路由”这一项里能看到刚加入的持久路由项。

如果以后想删除的话,执行一下delete就行:

route delete 10.0.0.0

就可以全部删掉。

一般来说,到这里就没问题了。(如果还有问题的话,可能是对DNS服务器的访问出了问题,直接看下面的DNS部分就好)

接下来是一些配置过程中的小插曲:

在配完 10.0.0.0 的路由表之后,我访问了阿什十的树莓派作为测试。

结果成功。

接下来我很开心地打开了学校的公告页,结果:

诶诶诶诶——???

卧槽这是怎么回事?!

照理说我已经成功配好路由表了,应该成功才对的啊??

断开外网内网ping了一下地址,得到公告页的ip地址,然后我再次配好路由表直接访问ip地址……

成功了!

域名不能访问但是ip可以直接访问——应该是dns的问题!

于是我就想,只要改一下dns映射就好了。

(现在回头看觉得自己很蠢的一点是,其实浏览器都已经给出DNS_PROBE_FINISHED_NO_INTERNET这个提示了……)

然后我就去傻傻地百度了自定义dns映射的方法,结果找不到【。

然后傻傻的我突然想起来,改HOST本身不就是自定义dns映射吗【。

于是我打开了host,加上了域名对ip的映射,结果成功访问。

到这里,我觉得所有问题应该都解决了。于是我又开心地打开某个内网种子分享平台的链接——

啊,进不去。

对了,我只在host添加了一个地址项目,需要把这个也加入才行。

于是切了内网,通过ping命令得到了ip,不过奇怪的是全部都是响应超时。

我没有管这些,继续访问ip——

卧槽?

啊?

这这这这是怎么回事??

这会不会是因为ping到的这个ip不是最终的地址,只是个转接的路由地址?(没有理论的胡乱分析

接下来采用tracert命令尝试跟踪这个地址,结果跟踪到到一半就无响应了。

哇,这就很蛋疼了。

我尝试断开外网切成纯外网,可还是无法直接访问这个ip。

不死心的我打开了wireshark准备抓包,看看到底是怎么一回事。

成功地通过域名打开了这个站点,然后我开始搜索wireshark的结果……

嗯???

什么???就是这个地址返回的响应???

也就是说,这个地址确确实实响应了HTTP请求,这个地址就是最终的地址,不会是用于转发的地址。

这也……太……

实在想不出来要怎么解决这个问题,所以决定死马当活马医,直接在host表加上这个域名对这个ip的映射。

结果——

卧槽?成功了?

最后,我得出来的结论是:

ping和tracert命令都返回超时 -> 这个站点屏蔽了ping和tracert命令采用的 请求,只允许了一些协议(例如http)的请求。

直接访问ip得到404 -> 这个站点禁止通过ip直接访问,可能是因为有多个服务在这同一个主机上运行,所以需要通过域名指定访问的是哪个服务。

到了这里,问题应该就已经完美解决了吧。

然后我看到了密密麻麻的内网站点…………

等等,如果我要通过修改host来增加域名匹配的话,那我 每一个站点都需要加一项??

……

这绝对不是一个好办法。

接刚才的上面,遇到DNS问题的可以直接看这里:

增加DNS服务器路由项:

思考一下问题本质。

为什么无法获得域名对应的ip地址?

在路由表修改好之后,我用ping工具ping了一下内网的域名。

这很明显是一个外网地址……

也就是说,这个域名并没有通过内网dns服务器解析,而是通过外网dns服务器解析,所以无法解析到正确的ip地址。

那么,只要让网络正常访问内网的dns服务器就好了吧?

那么,把内网dns的地址添加到路由表用内网网关行不行呢?

试一下。

首先,用ipconfig /all看一下内网的dns服务器地址:

然后,把这个服务器地址添加到路由表里面。

添加成功。

现在打开一个没有添加到host的内网站点试一下。

成——功——了——

到这里,就是真正的成功了……吗?

bonus:让指定的网卡访问指定的ip地址:

其实大体上的确已经没什么问题了,做完dns服务器的路由项的确可以完成日常的大部分的任务,可是在我这里有一个特殊的情况。

本校屏蔽了本校学生自己弄的树洞地址,也就是说,只要走内网去访问树洞地址的话,会被墙。

那是不是再加一个路由表项就行了呢?

试试。

route add —.—.—.— mask 255.255.255.255 192.168.1.1

看来是添加成功了,我们访问一下试试。

啊,不行呢。

嗯……这到底是为什么呢。

再看一下路由表:

可以看到,虽然配置了网关地址,但是本地发出请求时用的还是内网的地址。

所以按照路由表,它会寻找内网的192.168.1.1作为网关。

……这明显就是错的。

我需要在本地请求的时候使用外网的本地ip发出请求,这该怎么做才行呢?

路由表能不能做到这一点?

好像还真行。

输入:

route –help

可以看到里面有一个参数 IF 可以指定是哪个接口的路由项,或许可以借用这个命令指定无线网卡访问这个地址。

先查一下路由表:

route print

可以看到,每个设备都有一个代号:

在这里,我的外网(无线)代号是19。

所以添加路由项的时候这么输入:

route add 218.247.–.– mask 255.255.255.255 192.168.1.1 IF 19 -p

命令解释:route add [目标地址] (mask 网络掩码) [目标路由] (IF 接口号) (-p 持久化)

修改成功,测试一下。

看来现在已经能成功访问了。

到这里,就是真的皆大欢喜,完全解决了。

带来的附带增益:

本来,我是为了给阿什使传文件才弄这个的。

但是这么做却有一个意想不到的副效果。

1. 远程连接也不会消耗流量

前一篇文章有提到,本校的无线网络几乎覆盖全校,所以我可以通过任何一台连接了校园网的网络远程到我的电脑上,前提是我的电脑连接上了校园网。

但是校园网访问外部网络是限流的,如果我要远程,意味着我要珍惜我的流量……不能任意下载东西,不能看网课。

这就很难受了,在外不看网课(可能)会死的。

但是在配置完这个之后,就没问题了。

校内的内网主机ip段基本都是10和172开头,所以远程连接会走内网连接到我的电脑上,然后我通过远程连接操控我的电脑访问外面的网站的时候,走的是无线的外网。

这样就完美解决了远程连接电脑消耗流量的问题!

2. 可以直接访问种子分享平台

本校的种子分享平台是内网,而且封杀了非内网的点,所以只有访问内网才能下平台上的资源。

_(:з」∠)_平台上的东西还是蛮多的,有时候我懒得在自己去百度找的时候就会直接上平台搜。因为是内网,所以速度也非常的快。

但是每次这么做我都要先切换到内网,然后下载,在下载期间如果干了其他访问外网的事,就会消耗流量,所以非常的麻烦。

但是在这么一配置之后,就不存在这些问题了。

本校学生的内网ip绝大多数都是10和172开头的,所以p2p也可以开心地走内网,我同时访问外网也不冲突。

这真的是意想不到的收获…………

作者: 梁小顺

脑子不太好用的普通人。 顺带一提性格也有点古怪。 在老妈子和厌世肥宅中来回切换。

《终于做到了同时上内网和外网》有4个想法

  1. 这几天大家都忙着配网啊(为互联网30岁祝寿了
    这边刚刚配好了从我的 VPS 连接中学的路由器之间的 WireGuard 代理和 tinc 隧道
    你们学校的人性化网络体验早有耳闻,Azure 免流都被限速也是太狠了(

回复 tonoko 取消回复

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据