路由表route

Windows维护路由表,利用route命令,VPN完美异地组网

参考:https://itdog.one/747
视频:https://www.bilibili.com/video/BV1hS4y1i7oC/?spm_id_from=333.337.search-card.all.click&vd_source=cc0e43b449de7e8663ca1f89dd5fea7d

说到很多问题都能用route命令解决说明它很重要,但观众一定在想为什么这么重要的东西似乎完全没听过,这不应该啊。因为只有PC处于多网络的背景下,route命令才有可能会用到。它的作用是规划多网络下的数据传输,俗称路由表,因此route命令的本质是围绕windows路由表做增删改查的命令。

什么是多网络环境

比如我家庭PC有2张网卡,1张千兆1张万兆。

在这里插入图片描述

千兆的接入互联网,万兆的和家庭服务器直连,因为直连数据是本端ip直达对端ip的,数据不过路由器,所以是完全独立于家庭路由器之外的网络,虽然是个微型局域网但同样属于PC接入了2个网络。现实极少有人多插一张网卡, 但有线+无线一样能做到分别加入2个局域网。不少运维到现场都是笔记本插甲方内网网线,然后WIFI连手机热点实现同时上内外网。

再比如我公司办公室PC虽然只有1张网卡,但是通过PPTP、L2TP等方式让windows生成一个虚拟网卡,也等同接入了2个网络。

在这里插入图片描述

以上两个例子为了表明一个道理,多网络环境并不一定是物理网卡组建的,甚至很多第三方加速器软件,连虚拟网卡都不生成的。只要PC在链路上拥有访问多个局域网的权限,那么route命令就有用武之地,因为多网络下windows自己生成的路由表经常很蠢。比如前面举例的笔记本网线插内网,wifi连手机热点,时常出现只能上外网或只能上内网的情况。

这里我做个情景演示

录屏这台PC是我公司办公室电脑,目前WIFI没连,唯一工作的网络连接就是插了公司网线的物理网口。一般来说大公司网络都是内外网隔离的,要么只能上内网要么只能上外网,但我是管理员所以我这台106网段的电脑可以同时上内外网。比如我现在就能访问内网107网段下的海康监控平台。

在这里插入图片描述

在这里插入图片描述

接着通过互联网进行PPTP拨号,当连上家里的PPTP Server后就实现了远程异地组网,此时PPTP的网络连接就会让这台PC加入我的家庭局域网。

在这里插入图片描述

在这里插入图片描述

比如现在可以直接用内网IP打开家里的路由器页面,也可以用内网ip打开家里的NAS,可以看到我家是99网段。

在这里插入图片描述

虽然讲道理PC有两个网络连接,就理所应当该拥有同时访问这2个网络的能力。但现实是如果不维护路由表大概率只有糟心,稍后我会初始化路由表做案例演示,为方便对比先看看我维护好的路由表。

打开cmd 输入命令

route print -4

可以看到ipv4下的路由表规则还是比较多的。

在这里插入图片描述

重置ipv4网络

打开cmd执行

netsh int ipv4 reset

我非常建议当路由表彻底搞坏后选择重置网络,而不是用-f命令去清空路由表。

route -f

如果路由表彻底清空是任何网络能力都没有的,而重置网络路由表会保留基本的上内外网规则。

重置后需要重启电脑,开机后再次查看路由表 route print -4 可以看到规则简化了很多。

在这里插入图片描述

再次确认一下网络背景

办公室PC的物理网口ip没有变还是106网段,并且访问公司107网段的海康威视监控平台毫无问题。然后连接PPTP让这台PC加入我家的局域网,用家里内网ip访问NAS也毫无问题。至此看上去毫无破绽,但回过头你会发现公司内网的访问权限没有了!

如果现在放弃家庭局域网,断开PPTP连接,公司内网秒恢复。这局面就是前文所述的情况,表面看2个网络都连接通常,但实际不能同时使用只能二选一。那为什么维护路由表能解决这问题呢,因为路由表核心参数是网关。

在这里插入图片描述

网关是什么

可以理解成流量代理人,流量代理人又意味着啥,意味着网关设置成106.1客户端流量的下一跳地址必然是106.1。因为客户端的网络请求可以有无数个目标,客户端自己也不知道怎么抵达目的地,有了网关的概念,客户端就不需要想那么长远只要无脑把请求甩给下一跳网关即可。

比如本机ip是192.168.106.118 同事可能是106.117 但相同点在于大家网关都是106.1 这就意味着我和同事电脑上的所有网络指令最终都由106.1这个设备处理,至于106.1怎么处理那是它的事客户端无权干事。

可能有疑问从公司墙里出来的网线插电脑上,墙后边这跟网线可能跳了好几个交换机,那这些交换机是什么角色。告诉大家一个很简单的理解方式,你就把交换机当导线,无论过多少交换机你都当没有这会事,因为交换机不受理你的流量请求,三层交换机除外。用这个知识点带入一下,那我公司的106.1是个什么设备?要么是路由器要么是三层交换机。当然跳出本阶段的知识点,其实也有可能是防火墙之类的其他网络设备。

回归主题捋一下逻辑,这台PC任何网络请求都会交给106.1来处理。所以什么网站能上什么网站不能上由106.1这个设备决定。这条逻辑怎么体现出来呢,打开路由表。

在这里插入图片描述

0.0.0.0 代表全体网络目标,意思也就是所有默认的网络请求都会交给106.1处理。这条命令也碰巧解释了为什么路由表这么重要的东西似乎不维护也不影响使用,因为当电脑只有一个网络连接的时候,windows本机的路由表几乎没有意义因为这台电脑所有网络请求只能交给106.1处理。

但现在连接上PPTP后,能不能访问家里局域网由谁决定,由PPTP的网关决定。

在这里插入图片描述

上图不显示网关因为是虚拟连接,有点超纲,但这个连接的实质网关和ip相同。本机IP和网关相同的场景非常少见,一般只有在路由器上会出现,所以这个PPTP的连接你可以理解为接入了一个虚拟路由器,所有流量交给虚拟路由器PPTP处理了。

当PC拥有2个网络连接后,流量请求到底是交给106.1处理还是交给 PPTP 处理就成了Windows的难题。在路由表中的体现就是有2条0.0.0.0的全局网络规则,解决办法是告诉电脑XXXX网段是公司内网,这些流量应该由106.1处理。XXXX网段是家庭局域网,这些流量应该交给 PPTP 处理。而这个分配操作就叫维护路由表

在这里插入图片描述

所以现在视线移回路由表,网络目标和子网掩码 指的是你流量访问的目的地。

在这里插入图片描述

网关指访问目标的流量由那个网关处理

在这里插入图片描述

可以看到接口就刚好代表了本机在这个网关下的ip地址

在这里插入图片描述

跃点数越小优先级越高,所以相同规则实际执行的是跃点数小的哪个,目前PPTP的跃点数小,说明我连上PPTP后,流量默认是由PPTP处理而非106.1处理。

在这里插入图片描述

这顺带就解答了,为什么连上PPTP后公司内网上不了。因为默认流量全由PPTP处理,而PPTP走的家庭局域网,在家庭局域网里访问公司内网地址自然是无法抵达的。

所以现在需要把公司内网的路由维护上。

route add -p 192.168.107.0 mask 255.255.255.0 192.168.106.1
route add 是添加路由的命令
-p 代表这条路由永久有效
-p后面跟上要访问的目标地址107.0代表107网段下的全部地址
接着输入掩码
最后用核心参数网关结尾

在这里插入图片描述

执行成功后,客户但所有访问107网段的流量就都会由106.1这个网关处理。

多网络规划思路

聪明的小伙伴至此可能会发现一个问题,凭什么连上PPTP后所有流量默认走PPTP。既然在公司正确路子就应该是默认流量从公司走,特殊的家庭局域网流量才走PPTP。

这样理解确实没错,因为这样网络效率最高,并且家里网段少用route add维护一两个网段就齐活。
但我这么做有2个原因:

①互联网请求走家里网络虽然流量绕圈子了,效率低,但绕回家后我的流量就能上谷歌了。

②走PPTP顺带流量就做了加密,可以保护自己的浏览记录不被公司的网络审计软件扒光。

最后拓展内容

如果你就是要默认流量走公司,最简单的办法直接改跃点数。

在这里插入图片描述

对于虚拟连接改跃点数是可能没用,因为还有一个强制优先级的设置。勾上这个选项意味着强制本机默认流量走PPTP,如果不勾则默认流量走本地连接。

在这里插入图片描述

实测一下网关切换选项

首先删掉刚添加的107网段路由将路由表恢复成默认状态。

route delete 192.168.107.0

在这里插入图片描述

应用设置并重启PPTP连接,然后测试连接公司内网无问题,连接家里NAS出现无法访问。

现象表明目前默认路由全指向了106.1导致访问家庭局域网的流量没指对网关,所以在路由表中把家庭局域网流量甩给PPTP的网关即可。

route add -p 192.168.99.0 mask 255.255.255.0 192.168.98.1

在这里插入图片描述

至此成功将默认流量从PPTP切换到106.1处理,并且实现同时上公司内网与家庭局域网。

在这里插入图片描述

网关的网关

本期内容理解后就对基础网络结构有了认知,简单概述客户端流量的下一跳永远都是网关设备,而网关设备接收到客户端的流量请求后又会在自己的路由表中查询数据包下一跳该传给谁,比如内网跨网段的数据应该甩给那个网关,而通向互联网的数据又该甩给那个网关。而下一个网关接收到数据后也依靠路由表执行着相同的操作,直到数据包抵达目的地则访问成功或彻底找不到下一跳网关访问失败。

命令整理

查看全部路由表:route print
查看IPV4路由表:route print -4
重置IPV4网络:netsh int ipv4 reset
清空路由表:route -f
添加路由:route add -p [目标网络地址] mask [子网掩码] [指定的网关]
添加路由示例①:route add -p 0.0.0.0 mask 0.0.0.0 192.168.1.1
添加路由示例②:route add -p 192.168.107.0 mask 255.255.255.0 192.168.106.1
删除路由:route delete [目标网络地址]
删除路由示例:route delete 192.168.107.0

Linux route路由表

什么是交换?什么是路由?什么是路由表?

1、交换是指同网络访问(两台机器连在同一交换机上,配置同网段的不同IP就可以直接通讯)
2、路由就是跨网络访问(路径选择)
3、路由表是记录路由信息的表,在Linux中首先是一张可见的,可更改的表,它的作用就是当数据包发到Linux的时候,系统(或者说内核)就根据这张表中定义好的信息来决定这个数据包接下来该怎么走

route 命令

选项:
-v :	显示详细信息。
-n :	不执行 DNS 反向查找(即不解析名称),直接显示数字形式的 IP 地址。
-enetstat 格式显示路由表。
-C :	打印 Linux 内核的路由缓存。
add :	增加路由记录 / del :删除路由记录
			-net :		目的地址是一个网络。
			-host :	目的地址是一台主机。
			netmask :	目的地址的网络掩码。
			gw :		路由数据包通过的网关。
			metric :	设置路由跃点。
			dev:	    为路由指定的网络接口

字段分析

使用 route or route -n 命令查看内核路由表:

route
Destination     Gateway         Genmask         	Flags 	Metric 		Ref    	 Use Iface
default         _gateway        0.0.0.0         	UG    	100    		0        0 ens33
default         _gateway        0.0.0.0         	UG    	1000   		0        0 br0
192.168.10.0    0.0.0.0         255.255.255.0   	U     	0      		0        0 br0
192.168.29.0    0.0.0.0         255.255.255.0   	U     	0      		0        0 ens33
_gateway        0.0.0.0         255.255.255.255 	UH    	100    		0        0 ens33

route -n
Destination     Gateway         Genmask         	Flags 	Metric 		Ref      Use Iface
0.0.0.0         192.168.29.2    0.0.0.0         	UG    	100    		0        0 ens33
0.0.0.0         192.168.10.1    0.0.0.0         	UG    	1000   		0        0 br0
192.168.10.0    0.0.0.0         255.255.255.0   	U     	0      		0        0 br0
192.168.29.0    0.0.0.0         255.255.255.0   	U     	0      		0        0 ens33
192.168.29.2    0.0.0.0         255.255.255.255 	UH    	100    		0        0 ens33

字段分类说明:

字段说明
Destination目标网络或目标主机。Destination 为 default(0.0.0.0)时,表示这个是默认网关,所有数据都发到这个网关(这里是 10.139.128.1)。
Gateway网关地址,0.0.0.0 表示当前记录对应的 Destination 跟本机在同一个网段,通信时不需要经过网关(同一个局域网内2台主机通信不需要经过网关)。
GenmaskDestination 字段的网络掩码,Destination 是主机时需要设置为 255.255.255.255 ,是默认路由时会设置为 0.0.0.0 。
Flags见下文说明。
Metric跃点,指到达指定网络所需的中转数,是大型局域网和广域网设置所必需的 (不在 Linux 内核中使用)。
Ref路由项引用次数 (不在 Linux 内核中使用)。
Use此路由项被路由软件查找的次数。
Iface网卡名字,例如 eth0 ;要去往这个网段需要使用哪一个网络接口。也就是 eth0 这张网卡。

可以看到 Flags 下面有许多字母组合,他们分别的含义是:

U (route is up) :该路由处于活跃;
H (target is a host) :目标是一部主机 (IP) 而非网域(子网掩码是 255.255.255.255);
G (use gateway) :需要透过外部的主机 (gateway) 来转递封包(一般指向默认网关);
R (reinstate route for dynamic routing) :使用动态路由时,恢复路由资讯的旗标;
D (dynamically installed by daemon or redirect) :已经由服务或转 port 功能设定为动态路由
M (modified from routing daemon or redirect) :路由已经被修改了;
! (reject route) :这个路由将不会被接受(用来抵挡不安全的网域)。

路由种类

路由类型子网掩码Flag字段描述
主机路由(单个)255.255.255.255UH指向单个 IP 地址或主机名的路由记录
网络路由(网段)255.255.255.0U代表主机可以到达的网络,比如说目的地址是 192.168.10.xxx
默认路由(所有)0.0.0.0UG当主机不能在路由表中查找到目标主机的 IP 时,数据包就发到默认路由上

例子

1、主机路由:

主机路由是路由选择表中指向单个IP地址或主机名的路由记录。主机路由的Flags字段为H。
在下面示例中,本地主机通过IP地址192.168.1.1的路由器到达IP地址为10.89.0.10的主机。

添加主机路由时,需要指定网络 ID 和主机 ID,此时需要设置 netmask 255.255.255.255。

Destination 	Gateway 		Genmask 			Flags 	Metric 	Ref 	Use 	Iface
10.89.0.10 		192.168.1.1 	255.255.255.255 	UH 		0 		0 		0 		eth0

2、网络路由:

网络路由是代表主机可以到达的网络。网络路由的Flags字段为N。例如,在下面的示例中,本地主机将发送到网络192.19.12的数据包转发到IP地址为192.168.1.1的路由器。

添加网络路由时,只需指定网络 ID,通过 netmask 设置掩码长度。

Destination 	Gateway 		Genmask 		Flags 	Metric 		Ref 	Use 	Iface
192.19.12 		192.168.1.1 	255.255.255.0 	UN 		0 			0 		0 		eth0

3、默认路由:

当主机不能在路由表中查找到目标主机的IP地址或网络路由时,数据包就被发送到默认路由(默认网关)上。默认路由的Flags字段为G。

例如,在下面的示例中,默认路由是IP地址为192.168.1.1的路由器。

Destination 	Gateway 		Genmask 		Flags 	Metric 		Ref 	Use 	Iface
0.0.0.0 		192.168.1.1 	0.0.0.0 		UG 		202 		0 		0 		eth0

添加路由

1、添加主机路由

route add -net 10.0.0.10 netmask 255.255.255.255 gw 10.139.128.1 dev eth0
route -n
Destination     Gateway         Genmask         	Flags 	Metric 		Ref    	 Use 	Iface
10.0.0.10       10.139.128.1    255.255.255.255 	UGH   	0      		0        0 		eth0
...

2、添加网络路由

route add -net 10.0.0.0 netmask 255.255.255.0 gw 10.139.128.1 dev eth0
route -n
Destination     Gateway         Genmask         	Flags 	Metric 		Ref    	Use 	Iface
10.0.0.0        10.139.128.1    255.255.255.0   	UG    	0      		0       0 		eth0
...

3、添加设置默认网关跃点为 80

route add default gw 192.168.1.1 metric 80
route -n
Destination     Gateway         Genmask         	Flags 	Metric 		Ref    	Use 	Iface
0.0.0.0         192.168.1.1     0.0.0.0         	UG    	0      		0      	0 		eth0
...

4、删除路由

route del default gw 192.168.1.1 metric 80
添加到主机的路由
# route add -host 192.168.1.2 dev eth0:0
# route add -host 10.20.30.148 gw 10.20.30.40
  
添加到网络的路由
# route add -net 10.20.30.40 netmask 255.255.255.248 eth0
# route add -net 10.20.30.48 netmask 255.255.255.248 gw 10.20.30.41
# route add -net 192.168.1.0/24 eth1
  
添加默认路由
# route add default gw 192.168.1.1
  
删除路由
# route del -host 192.168.1.2 dev eth0:0
# route del -host 10.20.30.148 gw 10.20.30.40
# route del -net 10.20.30.40 netmask 255.255.255.248 eth0
# route del -net 10.20.30.48 netmask 255.255.255.248 gw 10.20.30.41
# route del -net 192.168.1.0/24 eth1
# route del default gw 192.168.1.1       //route del default   删除所有的默认路由
 
添加一条默认路由
# route add default gw 10.0.0.1      //默认只在内存中生效
开机自启动可以追加到/etc/rc.local文件里
# echo "route add default gw 10.0.0.1" >>/etc/rc.local
 
添加一条静态路由
# route add -net 192.168.2.0/24 gw 192.168.2.254
要永久生效的话要这样做:
# echo "any net 192.168.2.0/24 gw 192.168.2.254" >>/etc/sysconfig/static-routes
 
添加到一台主机的静态路由
# route add -host 192.168.2.2 gw 192.168.2.254
要永久生效的话要这样做:
# echo "any  host 192.168.2.2 gw 192.168.2.254 " >>/etc/sysconfig/static-routes
注:Linux 默认没有这个文件 ,得手动创建一个

linux环境下使用route指令设置多个网络连接的优先级(修改metric跃点数)

https://blog.csdn.net/doujingwei0825/article/details/128418671?spm=1001.2014.3001.5502

4g/wifi/以太网多网卡路由配置实例

嵌入式Linux多网卡路由表配置

ubuntu双网卡实现内网和外网访问实例

https://blog.csdn.net/qqcc0000/article/details/101436663?spm=1001.2014.3001.5502

其他相关博文

【博客611】linux路由表机制

Linux路由转发+多网卡配置(route命令)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

行稳方能走远

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值