概念解析

IP地址

IP地址是指为了能在网络上准确地找到一台计算机。
IP地址是一个32位的二进制数,被分割为4个“8位二进制数”。IP地址通常用“点分十进制”表示成(a.b.c.d)的形式,其中,a,b,c,d都是0~255之间的十进制整数。

子网掩码

网掩码不能单独存在,它必须结合IP地址一起使用。
使用子网掩码划分子网后,子网内可以通信,跨子网不能通信,子网间通信应该使用路由器,并正确配置静态路由信息。

默认网关

默认网关地址一般是指网络出口的IP地址,也就是说网络中的计算机通过那台机器出去。一般将网关设为路由器或modem的IP地址。
比如一台电脑设置的网关是192.168.1.1,那么一般我们访问192.168.1.1就能进入路由器的网管界面,并且可以看到路由的LAN配置的IP地址192.168.1.1。

子网掩码和网段

概念

我们判断两个ip是不是在同一个网段(可以互通),不能只看ip,而是要配合子网掩码进行判断。
比如192.168.1.1和192.168.1.2其实也是可能不是同一个网段(互相ping不通)的。

例子1

以下两个ip是同一网段:

ip地址:192.168.1.1 子网掩码:255.255.255.0
ip地址:192.168.1.2 子网掩码:255.255.255.0

例子2

以下两个ip不是同一网段:

ip地址:192.168.1.1 子网掩码:255.255.255.0
ip地址:192.168.1.2 子网掩码:255.255.0.0

计算规则

将ip和子网掩码进行计算,如果算出来的网络号一致,则说明是同一网段。
在线计算地址:在线计算

网络号就是如图里面的网络:
1686120412911

其中需要先用下面的把子网掩码计算为掩码位:
1686120516180

参考

如何判断两个IP地址是否在同一个网段?弱电人都要会的

静态路由

在路由器上配置静态路由

image

如图:

  1. R2路由连接在R1路由上,其WAN配置的是R1路由提供的IP地址192.168.0.100,LAN配置为192.168.1.1,子网掩码为255.255.255.0。
  2. R1的WAN配置的是外部互联网供应商提供的供网参数,LAN配置为192.168.0.1,子网掩码为255.255.255.0。
  3. PC2和PC1属于不同网段(注意,此处虽然都为子网掩码255.255.255.0,但是其在不同路由,不能算一个网段)
  4. PC1要能通PC2,则需要在R1上添加静态路由:
    image-1686128137471
    配置的意思是把目标IP为192.168.1.0,子网掩码为255.255.255.0的网段的ip转发到wan为192.168.0.100的设备(路由器)处理。

目标IP为192.168.1.0,子网掩码为255.255.255.0的网段,通过上面子网掩码的在线计算,可以知道范围是192.168.1.0-192.168.1.255。(一般是192.168.1.1开始,不过上面PC2的ip是192.168.1.0,那此处就按0开始)

  1. PC2对应的路由不用做另外处理,其在上图这个架构中就可以访问PC1的,PC1之所以不能访问到PC2是因为,PC2的IP经过路由器NAT(网络地址转换)后,对外显示的是192.168.0.100。

在服务器上配置静态路由

除了在路由器上配置,我们还可以在服务器(电脑,非路由器)上配置静态路由,让服务器自身的数据包自动转发到配置的网关地址进行处理,前提是服务器能否ping通网关。

linux下添加路由:
route add -net 10.131.58.0 netmask 255.255.255.0 gw 172.40.1.1
route add -net 10.131.58.0/24 gw 172.40.1.1

windows下添加路由:
route add -p 10.131.58.0 mask 255.255.255.0 172.40.1.1
route add -p 10.131.58.0/24 172.40.1.1

意思是把目标IP为10.131.58.0,子网掩码为255.255.255.0的网段的ip转发到wan为172.40.1.1的设备(网关)上。

上面的在路由器上配置静态路由就可以不用在R1上配置了,可以在PC1机上配置:
route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.0.100

在上面的架构中,通过配置,PC1就可以ping通R2路由的网关的。

使用静态路由指定特定网段使用特定网卡

添加静态路由一般都是有特殊网络需求的时候才会使用,比如说双网卡同时工作,一部分流量要走一个出口,另一部分流量要走另一个出口,那么这个时候需要添加静态路由还人为的指定特定流量路由的下一跳,普通流量走默认路由即可。

比如我们服务器有两个网卡:
A网卡的配置是192.168.5.82/24,网关为192.168.5.1
B网卡的配置是10.20.30.239/24,网关为10.20.30.1

我们需要访问10.120.13.50这个ip,只有使用网卡B才能ping通,如果我们不配置相关的静态路由,就会导致服务器不知道使用什么网卡去访问,就会导致偶尔用A网卡,偶尔用B网卡,出现的结果就是偶尔能ping通偶尔不行。

这里可能有疑问,为什么10.120.13.50这个ip的网段和10.20.30.239这个服务器的ip看着就是不同网段,为什么可以通过10.20.30.1网关就可以访问上,这里猜测是路由器或交换机做了转发处理。

为此,我们需要给服务器配置静态路由,指定访问特定网段的IP走特定的网关和网卡才行,我们可以这样配置(linux,windows的话同理):

route add -net 10.120.13.50 netmask 255.255.255.0 gw 10.20.30.1 em4

其中em4为指定的网卡的名称

实操

通过上面的知识,我们可以搭建一个测试环境用来测试,下面的具体搭建的环境架构:
网络拓扑 (1)

1.上面的图有如下情况
电脑B:不用添加静态路由,直接ping 192.168.1.175可通
电脑A:需要添加静态路由才能ping通192.168.123.12
2.电脑A配置静态路由:
windows:route -p add 192.168.123.0 mask 255.255.255.0 192.168.1.177
linux:route add -net 192.168.123.0 netmask 255.255.255.0 gw 192.168.1.177 dev em2

dev em2 为指定具体的网卡,可以不写

注意,得写成192.168.123.0,不能是192.168.123.XXX(XXX为其他数字),不然windows下会添加成功ping不通,linux会添加路由失败

3.配置完成后,测试可以ping通,tcp/udp也可以正常访问。
4.如果不想在电脑上配置静态路由,我们可以在路由器A上添加静态路由,也可以使电脑A ping通电脑B:
1686554518490

参考

不同网段的路由器,如何互通?