首頁 > 軟體

Linux模擬路由器實驗

2020-06-16 17:08:33

實驗目標:
將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
12345678910111213 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
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
//每條路由是只負責去的路徑,由對方負責回來的路徑。對本段而言回的路由就是對端去的路由

檢視各個裝置的路由表
[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介面

[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  //以上兩條路由是直連網路

[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

[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    //至此經過的路由器有三個了,到達目的網路閘道器

[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
[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

下面是在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地址都是指向鄰接路由器,所以可以考慮把他們的兩條合併成一條預設路由。從而減少路由條目

 


IT145.com E-mail:sddin#qq.com