实验目标:
将3台主机设置成路由器
实现两台终端能够相互通信
网络结构如下:
准备工作:
1、批量复制虚拟机文件,创建多个系统,提前把mac地址修改
2、关闭防火墙
service iptables stop //centos6版本
systemctl stop firewalld.service //centos7版本
3、关闭selinux
setenforce 0 //关闭
getenforce //查看
4、在三台“路由器”上启用路由转发功能
echo 1 > /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv4/ip_forward
操作过程:
第1步:配置网卡地址,测试直连
配置ip地址
ifconfig 接口 ip地址/掩码
或者
ip addr add ip地址/掩码 dev 接口
检查ip配置
ip add
或者
ifconfig
1
2
3
4
5
6
7
8
9
10
11
12
13
|
PC-A:
ifconfig
eth2 10.10.1.1
/24
R_x:
ifconfig
eth1 10.10.1.254
/24
//PC-A
的网关
ifconfig
eth2 10.10.12.1
/24
//
与R_y直连
R_y:
ifconfig
eth0 10.10.12.2
/24
//
与R_x直连
ifconfig
eth2 10.10.23.1
/24
//
与R_z直连
R_z:
ifconfig
eth0 10.10.23.2
/24
//
与R_y直连
ifconfig
eth1 10.10.2.254
/24
//PC-B
的网关
PC-B:
ifconfig
eth1 10.10.1.1
/24
|
测试直连地址使用工具:ping
如果直连不通,后续就无法操作,一定要保证ip配置正确
网卡的配置文件存放在下述目录中:
/etc/sysconfig/network-scripts/
如果想要永久生效可以修改目录中对应的网卡文件
第2步:添加路由,测试
配置路由
ip route add 目的网段/掩码 via 下一跳ip地址
或者
route add -net 目的网段/掩码 dev 本机出接口
意思就是要想到达某一网络,就要从本机指定接口出去,或者指定的邻接路由器接口ip地址,而这就是下一跳
查看路由信息
route -n
或者
ip route
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
PC-A:
ip route default via 10.10.1.254
//
主机A不管去哪里的网络,都会把数据包交给网关10.10.1.254也就是R_x
R_x:
ip route add 10.10.2.0
/24
via 10.10.12.2
ip route add 10.10.23.0
/24
via 10.10.12.2
//
要想到达目标网络,本段必须有去的路由,但是并不关心回的路由,因为那是由对端设备负责的
R_y:
ip route add 10.10.1.0
/24
via 10.10.12.1
ip route add 10.10.2.0
/24
via 10.10.23.2
R_z:
ip route add 10.10.1.0
/24
via 10.10.23.1
ip route add 10.10.12.0
/24
via 10.10.23.1
PC-B:
ip route default via 10.10.2.254
//
每条路由是只负责去的路径,由对方负责回来的路径。对本段而言回的路由就是对端去的路由
|
查看各个设备的路由表
1
2
3
4
|
[root@PC_A ~]
#ip route
192.168.1.0
/24
dev eth1 proto kernel scope link src 192.168.1.100 metric 1
10.10.1.0
/24
dev eth2 proto kernel scope link src 10.10.1.1
default via 10.10.1.254 dev eth2
//
主机A有一条默认路由,去往目标的数据包全部交给eth2接口
|
1
2
3
4
5
|
[root@R_x ~]
#ip route
10.10.23.0
/24
via 10.10.12.2 dev eth2
10.10.2.0
/24
via 10.10.12.2 dev eth2
//
路由器R_x到达目的网络的路径是10.10.12.2,也就是R_y
10.10.1.0
/24
dev eth1 proto kernel scope link src 10.10.1.254
10.10.12.0
/24
dev eth2 proto kernel scope link src 10.10.12.1
//
以上两条路由是直连网络
|
1
2
3
4
5
|
[root@R_y ~]
#ip route
10.10.23.0
/24
dev eth2 proto kernel scope link src 10.10.23.1
10.10.2.0
/24
via 10.10.23.2 dev eth2
10.10.1.0
/24
via 10.10.12.1 dev eth0
//
由于R_y是3台路由器的中间一台,所以需要配置到两端的路由,因此下一跳也不一样
10.10.12.0
/24
dev eth0 proto kernel scope link src 10.10.12.2
|
1
2
3
4
5
|
[root@R_z ~]
#ip route
10.10.23.0
/24
dev eth0 proto kernel scope link src 10.10.23.2
10.10.2.0
/24
dev eth1 proto kernel scope link src 10.10.2.254
10.10.1.0
/24
via 10.10.23.1 dev eth0
10.10.12.0
/24
via 10.10.23.1 dev eth0
//
至此经过的路由器有三个了,到达目的网络网关
|
1
2
3
4
5
|
[root@PC-B ~]
#ip route
default via 10.10.2.254 dev eth1
//
到达目的主机B
10.10.2.0
/24
dev eth1 proto kernel scope link src 10.10.2.1
192.168.2.0
/24
dev eth0 proto kernel scope link src 192.168.2.100
192.168.122.0
/24
dev virbr0 proto kernel scope link src 192.168.122.1
|
出现的192.168.x.x网络可以忽略
测试:
配置没问题的话,到这一步PC-A就能够ping通PC-B
1
2
3
4
5
6
7
8
9
10
|
[root@PC_A ~]
#ping -c 5 10.10.2.1
PING 10.10.2.1 (10.10.2.1) 56(84) bytes of data.
64 bytes from 10.10.2.1: icmp_seq=1 ttl=61
time
=0.752 ms
//ttl
之所以是61,是经过3个路由器R_x、R_y、R_z,ttl值原是64,经过1个路由器减一
64 bytes from 10.10.2.1: icmp_seq=2 ttl=61
time
=0.983 ms
64 bytes from 10.10.2.1: icmp_seq=3 ttl=61
time
=1.74 ms
64 bytes from 10.10.2.1: icmp_seq=4 ttl=61
time
=2.12 ms
64 bytes from 10.10.2.1: icmp_seq=5 ttl=61
time
=1.34 ms
--- 10.10.2.1
ping
statistics ---
5 packets transmitted, 5 received, 0% packet loss,
time
4007ms
rtt min
/avg/max/mdev
= 0.752
/1
.389
/2
.123
/0
.498 ms
|
1
2
3
4
5
6
7
8
|
下面是在PC-A上
traceroute
到PC-B的路径
[root@PC_A ~]
#traceroute 10.10.2.1
traceroute
to 10.10.2.1 (10.10.2.1), 30 hops max, 60 byte packets
1 10.10.1.254 (10.10.1.254) 0.195 ms 0.066 ms 0.051 ms
//
先到网关R_x
2 10.10.12.2 (10.10.12.2) 0.816 ms 0.795 ms 0.764 ms
//
再到R_y
3 10.10.23.2 (10.10.23.2) 0.730 ms 0.701 ms 0.670 ms
//
然后到达R_z
4 10.10.2.1 (10.10.2.1) 0.920 ms 0.893 ms 0.862 ms
//
最后到达PC-B
//
能到PC-B说明已经通了,如果在PC-B上
traceroute
得到的结果正好与此相反
|
拓展:
在R_x和R_z两台路由器上,由于他们的下一跳ip地址都是指向邻接路由器,所以可以考虑把他们的两条合并成一条默认路由。从而减少路由条目
本文转自 a_pan 51CTO博客,原文链接:http://blog.51cto.com/panpangao/1957681