Linux 静态路由实验

Linux 静态路由实验

CentOS6.9 和 CentOS7.3 上完成测试

简介

Linux主机通过启用路由转发,配置路由表后就可以当做路由器使用,当然这需要主机上有多张网卡。

路由管理命令
在CentOS系统上路由表的管理命令主要有routeip route这两个命令

  1. 查看路由表
    route -n
    ip route showip route listip route

  2. 增加路由条目
    增加主机路由
    route add -host 3.3.3.3 gw 10.1.2.2 dev eth1
    ip route add 6.6.6.6 via 10.1.4.1 dev ens33
    增加网络路由
    route add -net 10.1.3.0/24 gw 10.1.2.2 dev eth1
    ip route add 10.1.4.0/24 via 10.1.2.2 dev eth1
    增加默认路由
    route add default gw 10.1.4.1 dev ens33
    ip route add default via 10.1.4.1 dev ens33

  3. 删除路由条目
    删除主机路由
    route del -host 5.5.5.5 gw 10.1.4.1
    ip route del 6.6.6.6
    删除默认路由
    route del default
    ip route del default

静态路由配置文件
以上路由管理命令所配置的路由条目均不能永久保存,重启系统后将消失,只有将路由条目写入路由配置文件中才能永久保存

路由配置文件
/etc/sysconfig/network-scripts/route-IFACE

  • IFACE为对应的网卡名,如将路由条目配置到eth0上,则IFACE即为eth0
  • 配置文件格式有两种风格
    (1)Destion via Gateway
    10.1.1.0/24 via 10.1.3.2
    (2)每三行定义一条路由
    ADDRESS#=Destion
    NETMASK#=Mask
    GATEWAY#=Gateway

实验一 静态路由

Alt text

实验目的:使用Linux系统做路由器使用,通过配置Linux实现两台主机Client1和Client2间的通信

环境搭建
本实验环境是在vmware虚拟机上模拟的,在vmware上新建5台Linux系统,建议Linux系统最小化安装,节省硬盘空间和内存。

如下图所示创建5个虚拟网络,从VMnet11–VMnet14, 创建此虚拟网络的目的是实现各路由器之间的连接,类似于交换机的功能

Alt text

各主机网卡地址规划

  • Client1
    网卡连接到VMnet11上
    10.1.1.100/24

  • R1
    网卡eth0连接到VMnet11上
    eth0 : 10.1.1.1/24
    网卡eth1连接到VMnet12上
    eth1 : 10.1.2.1/24

  • R2
    网卡eth0连接到VMnet12上
    eth0 : 10.1.2.2/24
    网卡eth1连接到VMnet13上
    eth1 : 10.1.3.2/24

  • R3
    网卡eth0连接到VMnet13上
    eth0 : 10.1.3.1/24
    网卡eth1连接到VMnet14上
    eth1 : 10.1.4.1/24

  • Client4
    网卡连接到VMnet14上
    10.1.4.100/24

关闭防火墙功能
使用iptables -F清除所有主机上的路由条目,或直接关闭防火墙功能
CentOS6 上关闭防火墙使用命令service iptables stop,CentOS7上用systemctl stop firewalld.service

配置各主机路由

  1. Client1
    添加网关10.1.1.1
#查看当前路由表,默认自动添加了本机网络路由条目
[root@CentOS6 ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.1.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0

# 添加网关10.1.1.1 即默认路由
[root@CentOS6 ~]# route add default gw 10.1.1.1 dev eth0

# 查看添加后的路由
[root@CentOS6 ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.1.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
0.0.0.0 10.1.1.1 0.0.0.0 UG 0 0 0 eth0
  1. R1
    添加10.1.3.0/24和10.1.4.0/24网段的路由条目

启用Linux的路由转发功能

[root@zhubiao ~]# echo 1 > /proc/sys/net/ipv4/ip_forward

添加路由条目

# 当前路由表
[root@zhubiao ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.1.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
10.1.2.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1

# 添加10.1.3.0/2410.1.4.0/24网段的路由条目
[root@zhubiao ~]# route add -net 10.1.3.0/24 gw 10.1.2.2 dev eth1
[root@zhubiao ~]# ip route add 10.1.4.0/24 via 10.1.2.2 dev eth1

# 查看添加后的路由条目
[root@zhubiao ~]# ip route show
10.1.4.0/24 via 10.1.2.2 dev eth1
10.1.1.0/24 dev eth0 proto kernel scope link src 10.1.1.1
10.1.2.0/24 dev eth1 proto kernel scope link src 10.1.2.1
10.1.3.0/24 via 10.1.2.2 dev eth1
  1. R2
    添加10.1.1.0/24和10.1.4.0/24网段的路由条目

启用Linux的路由转发功能

[root@zhubiao ~]# echo 1 > /proc/sys/net/ipv4/ip_forward

添加路由条目

# 当前路由条目
[root@zhubiao ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.1.2.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
10.1.3.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1

# 添加10.1.1.0/2410.1.4.0/24网段的路由条目
[root@zhubiao ~]# route add -net 10.1.1.0 netmask 255.255.255.0 gw 10.1.2.1 dev eth0
[root@zhubiao ~]# route add -net 10.1.4.0/24 gw 10.1.3.1 dev eth1

# 添加后的路由表
[root@zhubiao ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.1.4.0 10.1.3.1 255.255.255.0 UG 0 0 0 eth1
10.1.1.0 10.1.2.1 255.255.255.0 UG 0 0 0 eth0
10.1.2.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
10.1.3.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
  1. R3
    添加10.1.1.0/24和10.1.2.0/24网段的路由条目

启用Linux的路由转发功能

[root@zhubiao ~]# echo 1 > /proc/sys/net/ipv4/ip_forward

添加路由条目

# 当前路由表
[root@zhubiao ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.1.4.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
10.1.3.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0

# 添加10.1.1.0/2410.1.2.0/24网段的路由条目
# 这里我们省略了dev DEVICE,系统根据我们指定的下一跳地址,自动将路由条目添加到与之直连的接口上
[root@zhubiao ~]# ip route add 10.1.1.0/24 via 10.1.3.2
[root@zhubiao ~]# ip route add 10.1.2.0/24 via 10.1.3.2
[root@zhubiao ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.1.4.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
10.1.1.0 10.1.3.2 255.255.255.0 UG 0 0 0 eth0
10.1.2.0 10.1.3.2 255.255.255.0 UG 0 0 0 eth0
10.1.3.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
  1. Client2
    添加网关10.1.4.1
# 当前路由表
[root@localhost ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.1.4.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33

# 添加默认网关
[root@localhost ~]# route add default gw 10.1.4.1

# 查看
[root@localhost ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.1.4.1 0.0.0.0 UG 0 0 0 ens33
10.1.4.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33

注意:上面所配置的路由条目均是临时的,重启网络服务或系统后将丢失,若需长期使用均需写入对应的/etc/sysconfig/network-scripts/route-IFACE文件中

测试
使用ping命令测试Client1主机是否能ping通Client2

[root@CentOS6 ~]# ping -c 2 10.1.4.100
PING 10.1.4.100 (10.1.4.100) 56(84) bytes of data.
64 bytes from 10.1.4.100: icmp_seq=1 ttl=61 time=5.00 ms <= ttl=6164-61=3,说明经过了3个路由
64 bytes from 10.1.4.100: icmp_seq=2 ttl=61 time=1.82 ms

--- 10.1.4.100 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1003ms
rtt min/avg/max/mdev = 1.829/3.418/5.007/1.589 ms

查看Client1到Client2经过的路由

[root@CentOS6 ~]# tracepath -n 10.1.4.100
1?: [LOCALHOST] pmtu 1500
1: 10.1.1.1 1.127ms
1: 10.1.1.1 0.725ms <=到网关
2: 10.1.2.2 1.222ms <=下一跳到R2的eth0接口
3: 10.1.3.1 1.426ms <=下一跳到R3的eth0接口
4: 10.1.4.100 3.455ms reached
Resume: pmtu 1500 hops 4 back 4