子网

IP 地址由两部分组成,即网络号( Network ID )和主机号( Host ID )。

网络号标识的是 Internet 上的一个子网,而主机号标识的是子网中的某台主机。

子网掩码用来判断任意两个 IP 地址是否属于同一子网络。

同一网络号下的主机可以直接互通,数据包借助 ARP 协议用 MAC 地址传递。

不同网络号下的主机通信,数据包需要通过网关 (Gateway) 转发。

路由表

linux 主机通过路由表决定数据包的转发配置。

通过 route -n 命令可以查看当前路由设置情况,如下:

[root@SecFox-NBA ~]# route -n

Kernel IP routing table

Destination Gateway Genmask Flags Metric Ref Use Iface

10.70.25.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0

10.70.10.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1

169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth1

0.0.0.0 10.70.10.252 0.0.0.0 UG 0 0 0 eth1

上面的路由表显示,该主机配置了 10.70.25.0 、 10.70.10.0 两个网段的路由;并且配置了默认网关 10.70.10.252 。

主机发送数据包时,按下面的流程进行判断:

1. 当主机要发送 IP 包时,先查阅 IP 包头的目标 IP 地址

2. 如果目标 IP 与本机 IP 的 Network _ID 相同时( 同一子网) ,主机参考自己的ARP 记录,直接利用MAC 传递信息

3. 如果不在同一子网,再分析自己的路由表,查找是否有相符的路由设置;

如果找到了,就将数据包发往该路由配置的网关。

如果没有找到,就直接将该 IP 封包送到默认网关 (default gateway) 上去。

路由表影响因素

有三个途径可以往路由表中添加信息:

1. 网卡配置信息

IPADDR=10.70.25.99

NETMASK=255.255.255.0

GATEWAY=10.70.10.252

上面的配置会根据 IPADDR 和 NETMASK 生成到网络号 10.70.25.0 的路由规则,网关使用 10.70.10.252 。

10.70.25.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0

这一点类似于 windows 下的 tcp/ip 属性配置

2. ip route 命令手动添加、删除

ip route add 10.32.185.0/24 via 10.32.184.1 dev eth0 src 10.32.184.60

ip route 命令的添加的路由,不能永久保存,在系统重启后会丢失。可以将 ip route 命令添加到 rc.local 文件中,达到自动配置的目的。

3. 静态路由配置

配置静态路由可以永久保存路由信息。网络启动时,加载 /etc/sysconfig/static-routes 文件中配置的路由信息,配置信息以 any 打头,如

# 指定网关地址,必须保证网关可达

any net 10.70.10.0 netmask 255.255.255.0 gw 10.70.10.252

# 指定网卡

any net 10.70.5.0 netmask 255.255.255.0 dev eth0

还有另一文件可以配置静态路由 /etc/sysconfig/network-scripts/route-interface ,例如,可将 eth0 的路由信息配置到 /etc/sysconfig/network-scripts/route-eth0 中。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐