Bài số 4: Cấu hình router tự động bằng giao thức chọn đường RIP

Sử dụng hình trạng kết nối mạng như trong bài 1, thay vì cấu hình tĩnh các đường định tuyến gián tiếp trong các bảng routing của từng router, bài này sử dụng phần mềm quagga cài đặt trên các router để tự động cập nhật bảng routing theo giao thức RIP. Các bước thực hiện như sau:

  • Bước 1: Cài đặt quagga trên các router
  • Bước 2: cấu hình các service zebraripd
  • Bước 3: Vận hành hệ thống & kiểm tra kết nối
  • Bước 4: kiểm tra tính đáp ứng kết nối mạng của RIP

Bước 1: Cài đặt quagga trên các router

Có nhiều phần mềm router hỗ trợ giao thức RIP trong đó quagga là phần mềm routing phổ biến nhất trên Linux. Cài đặt quagga sử dụng yum rất đơn giản:

> yum install quagga
Dependencies Resolved

==========================================================================================
Package                  Arch            Version                    Repository        Size
==========================================================================================
Installing:
quagga                   x86_64          0.99.15-7.el6_3.2          base             1.1 M
Installing for dependencies:
lm_sensors-libs          x86_64          3.1.1-17.el6               base              38 k
net-snmp                 x86_64          1:5.5-54.el6_7.1           updates          308 k
net-snmp-libs            x86_64          1:5.5-54.el6_7.1           updates          1.5 M

Transaction Summary
==========================================================================================
Install       4 Package(s)

Total download size: 2.9 M
Installed size: 11 M
Is this ok [y/N]: y

Hình vẽ bên dưới mô tả kiến trúc quagga, bao gồm các tiến trình ripd xử lý giao thức RIP, ospfd xử lý giao thức OSPF. bgpd xử lý giao thức BGP-4. Ngoài ra, tiến trình zebra xử lý việc cập nhật các tuyến đường giữa các router vào bảng routing. Khi chạy một tiến trình để tự động xây dựng bảng định tuyến theo một giao thức định tuyến nào đó (ví dụ như RIP), cần chạy tiến trình nền zebra để cập nhật các tuyến đường này vào bảng routing.


Bước 2: cấu hình các service zebraripd

Các file cấu hình nằm của các service quagga đều nằm trong thư mục /etc/quagga:

> nano /etc/quagga/zebra.conf
hostname router1

password zebra
enable password zebra

log file /var/log/quagga/zebra.log

> nano /etc/quagga/ripd.conf
hostname router1
password zebra

! debug rip events
! debug rip packet

router rip
network 192.168.1.0/24
network 192.168.2.0/25
network 192.168.2.129/25
network 192.168.3.0/24

log file /var/log/quagga/ripd.log

Các thông số password trong file cấu hình zebraripd dùng để login vào giao diện Vty và cấu hình online cho các service này. Zebra sử dụng cổng 2601, ripd sử dụng cổng 2602. Sau khi login vào giao diện Vty này, ta có thể cấu hình router hoặc xem trạng thái router với các lệnh của nó:

> telnet 127.0.0.1 2601
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.

Hello, this is Quagga (version 0.99.15).
Copyright 1996-2005 Kunihiro Ishiguro, et al.

 

User Access Verification

Password:
router1> show ip rou
router1> show ip route
Codes: K - kernel route, C - connected, S - static, R - RIP, O - OSPF,
I - ISIS, B - BGP, > - selected route, * - FIB route

C>* 127.0.0.0/8 is directly connected, lo
C>* 192.168.1.0/24 is directly connected, eth1
C>* 192.168.2.0/25 is directly connected, eth2

Trong bài thực hành này, ta sẽ không sử dụng đến Vty để thiết lập thông số cấu hình. Thay vào đó, các router được cấu hình sẵn các mạng có thể sử dụng RIP để cập nhật bảng routing. Tham số network trong file cấu hình ripd.conf cho phép liệt kê các mạng này. Thực hiện cấu hình ripd.confzebra.conf cho tất cả các router và chạy dịch vụ zebra & ripd:
Vận hành:

>  service zebra status
zebra is stopped
> service zebra start
Starting zebra:                                            [  OK  ]
>  service ripd status
zebra is stopped
> service ripd start
Starting zebra:                                            [  OK  ]

Bước 3: Vận hành hệ thống & kiểm tra kết nối

Sau khi chạy service zebraripd trên tất cả các router, các router sẽ tự động trao đổi thông tin bằng giao thức RIP và cập nhật các tuyến đường cần thiết vào bảng routing. Chú ý rằng vì lý do an ninh, phần mềm iptables trong nhân linux mặc định chỉ mở một số cổng truy nhập và cấm tất cả các cồng còn lại. Tạm thời, ta stop tất cả các service iptables trên các router để chúng có thể trao đổi thông tin không hạn chế:

> service iptables stop
iptables: Setting chains to policy ACCEPT: filter          [  OK  ]
iptables: Flushing firewall rules:                         [  OK  ]
iptables: Unloading modules:                               [  OK  ]

Sau khi tắt service iptables, có thể xem file log ripd.log zebra.log để thấy các router trao đổi thông tin với nhau thế nào. Kết quả là bảng rouring trên các router được tự động cập nhật thêm các tuyến đường định tuyến gián tiếp (thay vì chỉ có 2 tuyến đường định tuyến trực tiếp). Ngoài ra, thông số Metric cũng được tự động tính toán:

> route -n
Kernel IP routing table
Destination    Gateway                 Genmask                         Flags   Metric Ref    Use      Iface
192.168.2.0             0.0.0.0                 255.255.255.128                 U       0      0        0              eth2
192.168.2.128           192.168.2.2             255.255.255.128                 UG      2      0        0              eth2
192.168.3.0             192.168.2.2             255.255.255.0                   UG      3      0        0              eth2
192.168.1.0             0.0.0.0                 255.255.255.0                   U       0      0        0              eth1

Sử dụng giao diện Vty của zebra, có thể xem được từng tuyến đường định tuyến được xác định theo giao thức routing nào. Trong ví dụ minh họa bên dưới, tại router R1, ngoài 2 tuyến đường trực tiếp, 2 tuyến đường gián tiếp đến mạng 192.168.2.128/25 và 192.168.3.0/24 được xây dựng bằng giao thức RIP:

> telnet 127.0.0.1 2601
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.

Hello, this is Quagga (version 0.99.15).
Copyright 1996-2005 Kunihiro Ishiguro, et al.

 

User Access Verification

Password:
router1> show ip route
Codes: K - kernel route, C - connected, S - static, R - RIP, O - OSPF,
I - ISIS, B - BGP, > - selected route, * - FIB route

C>* 127.0.0.0/8 is directly connected, lo
C>* 192.168.1.0/24 is directly connected, eth1
C>* 192.168.2.0/25 is directly connected, eth2
R>* 192.168.2.128/25 [120/2] via 192.168.2.2, eth2, 00:04:39
R>* 192.168.3.0/24 [120/3] via 192.168.2.2, eth2, 00:04:39

Để thiết lập thêm tuyến đường mặc định ra Internet tại R1:

> route add default gw 192.168.2.2
> route -n
Kernel IP routing table
Destination             Gateway                 Genmask                 Flags   Metric Ref    Use      Iface
192.168.2.0             0.0.0.0                 255.255.255.128                 U       0      0        0              eth2
192.168.2.128           192.168.2.2             255.255.255.128                 UG      2      0        0              eth2
192.168.3.0             192.168.2.2             255.255.255.0                   UG      3      0        0              eth2
192.168.1.0             0.0.0.0                 255.255.255.0                   U       0      0        0              eth1
0.0.0.0                 192.168.2.2             0.0.0.0                         UG      0      0        0              eth2

Kiểm tra đường đi từ R1 đến R4 và từ R1 ra một máy ngoài Internet:

> ping 192.168.3.2
PING 192.168.3.2 (192.168.3.2) 56(84) bytes of data.
64 bytes from 192.168.3.2: icmp_seq=1 ttl=62 time=2.91 ms
64 bytes from 192.168.3.2: icmp_seq=2 ttl=62 time=1.69 ms
64 bytes from 192.168.3.2: icmp_seq=3 ttl=62 time=1.54 ms
^C
--- 192.168.3.2 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2350ms
rtt min/avg/max/mdev = 1.541/2.050/2.919/0.618 ms

> traceroute -n 192.168.3.2
traceroute to 192.168.3.2 (192.168.3.2), 30 hops max, 60 byte packets
1  192.168.2.2  0.976 ms  3.481 ms  3.404 ms
2  192.168.2.130  3.329 ms  3.255 ms  3.151 ms
3  192.168.3.2  3.047 ms  4.248 ms  4.118 ms

> traceroute -n 10.0.1.100
traceroute to 10.0.1.100 (10.0.1.100), 30 hops max, 60 byte packets
1  192.168.2.2  2.095 ms  2.019 ms  1.941 ms
2  192.168.2.130  3.914 ms  3.843 ms  3.843 ms
3  192.168.3.2  4.560 ms  4.516 ms  4.464 ms
4  * * *
5  * * *
6  * * *

Bước 4: kiểm tra tính đáp ứng kết nối mạng của RIP

Như đã mô tả trong các phần trên, so sánh với định tuyến tĩnh, định tuyến động có ưu điểm là có thể đáp ứng với tình trạng kết nối mạng để tự động cập nhật lại bảng routing. Sử dụng sơ đồ kết nối mạng như bài số 1 nhưng bổ sung thêm kết nối mạng mới 192.168.4.0/24 với 2 kết nối đến R1 và R4 như hình vẽ bên dưới.

Cập nhật thêm kết nối mạng cho các router R1 và R4 và bổ sung mạng 192.168.4.0 vào danh sách mạng có thể định tuyến với RIP (tham số network trong file cấu hình ripd.conf). RIP sẽ tự động cập nhật thêm các bảng routing của R2 như bên dưới:

> route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.2.0     0.0.0.0         255.255.255.128 U     0      0        0 eth6
192.168.2.128   0.0.0.0         255.255.255.128 U     0      0        0 eth7
192.168.4.0     192.168.2.1     255.255.255.0   UG    2      0        0 eth6
192.168.3.0     192.168.2.130   255.255.255.0   UG    2      0        0 eth7
192.168.1.0     192.168.2.1     255.255.255.0   UG    2      0        0 eth6
0.0.0.0         192.168.2.130   0.0.0.0         UG    0      0        0 eth7

Có thể thấy đường định tuyến R2 đến mạng 192.168.4.0/24 được thiết lập đi qua R1 (192.168.2.1) với Metric=2. Thực hiện ngắt kết nối đến 192.168.4.0/24 trên R1 (có thể bằng cách disable interface kết nối đến mạng này), giao thức RIP cho phép các router tự động phát hiện sự thay đổi về trạng thái mạng này và cập nhật lại bảng routing trên R2:

> route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.2.0     0.0.0.0         255.255.255.128 U     0      0        0 eth6
192.168.2.128   0.0.0.0         255.255.255.128 U     0      0        0 eth7
192.168.4.0     192.168.2.130   255.255.255.0   UG    3      0        0 eth7
192.168.3.0     192.168.2.130   255.255.255.0   UG    2      0        0 eth7
192.168.1.0     192.168.2.1     255.255.255.0   UG    2      0        0 eth6
0.0.0.0         192.168.2.130   0.0.0.0         UG    0      0        0 eth7

Có thể thấy đường định tuyến từ R2 đến mạng 192.168.4.0/24 đã được chuyển sang đi qua R3 (192.168.2.130) với Metric=3