子网
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 中。