Thực hành buổi 4

📝 ĐỀ BÀI

Kiến thức

Định tuyến nội miền

  • Là nhóm các mạng LANrouter có chung chính sách quản trị.

  • Các giải thuật mà router sử dụng để vạch đường gọi là IGP (Interior GateWay Protocol).

💡 Giải thuật RIPOSPF

⚠️ LƯU Ý

  • Trong kathara để sử dụng định tuyến nội miền sử dụng công cụ có sẵn là Quagga: là dịch vụ chứa các giải thuật vạch đường như RIPv2OSPFv2 hoạt động tốt trên IPv4, IPv6...

  • Được cài đặt tại đường dẫn /etc/quagga trong máy ảo Kathara

1.Bài tập 12

💡 MÔ HÌNH

Xây dựng hệ thống mạng với mô hình như sau :

Tạo thư mục và các file

mkdir ~/Desktop/BaiTap12
cd ~/Desktop/BaiTap12
mkdir router1 router2 router3 router4 
touch lab.conf router1.startup router2.startup router3.startup router4.startup

Thiết lập các file

:::: tabs

::: tab lab.conf

router1[0]=H
router1[1]=G
router1[2]=E
router1[3]=A

router2[0]=E
router2[1]=F
router2[2]=B

router3[0]=F
router3[1]=G
router3[2]=I
router3[3]=C

router4[0]=D
router4[1]=I
router4[2]=H

:::

::: tab router1.startup

ifconfig eth0 100.1.0.13/30 up
ifconfig eth1 100.1.0.9/30 up
ifconfig eth2 100.1.0.1/30 up
ifconfig eth3 100.1.1.1/24 up
/etc/init.d/quagga start

:::

::: tab router2.startup

ifconfig eth0 100.1.0.2/30 up
ifconfig eth1 100.1.2.1/24 up
ifconfig eth2 100.1.2.1/24 up
/etc/init.d/quagga start

:::

::: tab router3.startup

ifconfig eth0 100.1.0.6/30 up
ifconfig eth1 100.1.0.10/30 up
ifconfig eth2 100.1.0.17/30 up
ifconfig eth3 100.1.3.1/24 up
/etc/init.d/quagga start

:::

::: tab router4.startup

ifconfig eth0 100.1.4.1/24 up
ifconfig eth1 100.1.0.18/30 up
ifconfig eth2 100.1.0.14/30 up
/etc/init.d/quagga start

::: ::::

💡 Giải thích

Lệnh etc/init.d/quagga start: để khởi động dịch vụ Quagga

Cấu hình Quagga

Trong mỗi thư viện router hãy tạo thư mục và cấu hình như sau :

-- router1
   -- etc
      -- quagga
       + daemons
       + ripd.conf
       + zebra.conf

:::: tabs

::: tab daemons

zebra=yes
ripd=yes

:::

::: tab zebra.conf

hostname zebra
password zebra
enable password zebra
log file /var/log/zebra/zebra.log

:::

::: tab rip.conf

hostname ripd
password zebra
enable password zebra

router rip
network 100.1.0.0/16
redistribute connected
log file /var/log/zebra/ripd.log

::: ::::

💡 GIẢI THÍCH

  • zebra.conf: chứa nội dung miêu tả cho công cụ Quagga như :

    1. username và password

    2. Đường dẫn nhật ký (log file)

  • daemons: chứa khai báo các giao thức vạch đường được Quagga hỗ trợ như :

    1. RIPv2 trên IPv4: đặt tên là ripd

    2. OSPFv2 trên IPv4: đặt tên là ospfd

    3. BGP trên IPv4IPv6: đặt tên là bgpd

  • ripd.conf: chứa nội dung miêu tả hoạt động của giải thuật RIPv2

    1. Lệnh router rip: cho biết router sẽ sử dụng RIPv2 làm vạch đường

    2. Lệnh network: là phạm vi gửi và nhận gói tin, có thể sử dụng ip khác dưới 24

    3. Lệnh redistribute connected: cho phép router đóng gói các thông tin về những nhánh mạng

💡 MẸO

Sử dụng lệnh sau để copy qua các router còn lại

cp -r router1/etc router2
cp -r router1/etc router3
cp -r router1/etc router4

Sử dụng lệnh tree để xem cấu trúc file (cài bằng lệnh sau: sudo apt install tree)

Khởi động máy ảo

Sử dụng dụng lệnh sau để khởi tạo các máy ảo Kathara vừa khởi tạo :

kathara lstart

Vậy là bạn đã sử dụng dịch vụ Quagga thành công.

Sử dụng lệnh sau để kiểm tra dịch vụ Quagga

/etc/init.d/quagga status
  1. Nếu không hiện gì cả ==> dịch vụ chưa được khởi động

  2. ripd watchquagga ==> thiết lập cho RIPv2Quagga đã thành công

  3. watchquagga ==> có sai sót trên ripd.conf nên RIPv2 không hoạt động

Nhận xét máy ảo

Sử dụng lệnh route để kiểm tra vạch đường trên cách máy ảo :

Kiểm tra ping

Từ router1 hãy ping tới router4 và từ router2 đến router4 bằng lệnh sau:

# thực hiện trên pc1
ping 100.1.4.1 -c 5 
# thực hiện trên pc2
ping 100.1.0.10 -c 5

Kiểm tra tcpdump

Sử dụng lệnh tcpdump sau đây trên router1 để kiểm tra đường đi các gói tin

tcmpdump -i any -w /shared/BaiTap12_router1.pcap

⚠️ LƯU Ý

Sử dụng CRTL+C để dừng sau tầm 20s

Kiểm tra telnet

Trên router bất kỳ sử dụng lệnh sau để đăng nhập vào dịch vụ RIPv2:

telnet localhost ripd

Password : zebra

Sau đó trên giao diện ripd, sử dụng lệnh:

show ip rip

Phân tích pcap bằng WireShark

Mở gói BaiTap12_router1.pcap trong thư mục shared bằng WireShark và chọn gói tin có địa chỉ 100.1.0.10 (router3)

💡 NHẬN XÉT

  • Địa chỉ IP đích của khung này là 224.0.0.9, nó là địa chỉ Multicast (vì các packages gửi đến những đích mà nó cùng giao thức mạng với nguồn)

  • Gói tin sử dụng giao thức trên tầng vận chuyển là user datagram, và hoạt động ở cổng 520

  • Trong trường Routing Infomation Protocol đây là bộ định tuyến sử dụng giải thuật RIPv2

  • Ngoài gói tin RIPv2 có địa chỉ 100.1.0.10 thì router3 còn nhận dữ liệu của các router 1, routere2router4

Tắt một nhánh mạng

Trên router1 thực hiện tắt nhánh mạng eth1 bằng lệnh

ifconfig eth1 down

Điều này sẽ làm cho mô hình mạng như sau:

Trên router1 thực hiện ping tới router3 bằng lệnh

ping 100.1.0.10 -c 7

Không thành công vì lúc này đã mất đường liên kết tới router3

Thực hiện kiểm tra bảng vạch đường bằng route của router1:

Mới

==> Cụ thể không còn liên kết nào ở eth1 như trên, giao diện eth2 của router1 sẽ thay thế giao diện eth1 đã bị tắt đi

KẾT LUẬN

Giải thuật RIPv2 trên router tự động cập nhật lại đường đi khi cấu trúc mạng thay đổi để đảm bảo dữ liệu đường truyền tải với đường đi ngắn nhất và không bị mất mát dữ liệu

Hủy máy ảo

Sử dụng lệnh kathara sau để hủy hệ thống máy ảo

kathara lclean

2.Bài tập 13

💡 MÔ HÌNH

Xây dựng máy ảo theo mô hình sau đây :

Tạo thư mục và các file

Xây dựng mô hình mạng như dưới đây:

Bằng các lệnh sau :

mkdir ~/Desktop/BaiTap13
cd ~/Desktop/BaiTap13
mkdir router1 router2 router3 router4
touch lab.conf router1.startup router2.startup router3.startup router4.startup

Thiết lập các file

Cấu hình và thiết lập các file như sau:

:::: tabs

::: tab lab.conf

router1[0]=H
router1[1]=G
router1[2]=E
router1[3]=A

router2[0]=E
router2[1]=F
router2[2]=B

router3[0]=F
router3[1]=G
router3[2]=I
router3[3]=C

router4[0]=D
router4[1]=I
router4[2]=H

:::

::: tab router1.startup

ifconfig eth0 100.1.0.13/30 up
ifconfig eth1 100.1.0.9/30 up
ifconfig eth2 100.1.0.1/30 up
ifconfig eth3 100.1.1.1/24 up
/etc/init.d/quagga start 

:::

::: tab router2.startup

ifconfig eth0 100.1.0.2/30 up
ifconfig eth1 100.1.0.5/30 up
ifconfig eth2 100.1.2.1/24 up
/etc/init.d/quagga start

:::

::: tab router3.startup

ifconfig eth0 100.1.0.6/30 up
ifconfig eth1 100.1.0.10/30 up
ifconfig eth2 100.1.0.17/30 up
ifconfig eth3 100.1.3.1/24 up
/etc/init.d/quagga start 

:::

::: tab router4.startup

ifconfig eth0 100.1.4.1/24 up
ifconfig eth1 100.1.0.18/30 up
ifconfig eth2 100.1.0.14/30 up
/etc/init.d/quagga start

::: ::::

Cấu hình Quagga

Trong mỗi thư viện router hãy tạo thư mục như sau:

:::: tabs

::: tab daemons

zebra=yes
ospfd=yes

:::

::: tab zebra.conf

hostname zebra
password zebra
enable password zebra
log file /var/log/zebra/zebra.log

:::

::: tab ospfd.conf

hostname ospfd
password zebra
enable password zebra

interface eth0
ospf cost 30

interface eth1
ospf cost 80

interface eth2
ospf cost 20

router ospf
network 100.1.0.0/16 area 0.0.0.0
redistribute connected

log file /var/log/zebra/ospfd.log

::: ::::

💡 MẸO

Sử dụng lệnh sau để copy qua các router còn lại

cp -r router1/etc router2
cp -r router1/etc router3
cp -r router1/etc router4

Sử dụng tree để kiểm tra cấu trúc của các thư mục

💡 GIẢI TÍCH

  • Tạo file ospfd.conf thay vì ripd.conf vì chúng ta sử dụng giải thuật OSPFv2 thay vì RIPv2

  • Lệnh interface chỉ ra giao diện của router sẽ chạy giải thuật OSPFv2

Khởi động máy ảo

Sử dụng lệnh kathara lstart để khởi động hệ thống máy ảo vừa tạo:

==> Không có lỗi gì xảy ra trên mỗi router, các cấu hình đã chuẩn

Sử dụng lệnh sau trên từng router để kiểm tra dịch vụ Quagga vừa tạo:

/etc/init.d/quagga status

⚠️ LƯU Ý

  • Nếu hiện ospfd watchquagga zebra: dịch vụ Quagga đã được sử dụng và đang dùng giải thuật OSFPv2

  • Nếu không hiện gì hết thì dịch vụ Quagga đã xảy ra lỗi

  • Nếu hiện watchquagga thì có sai sót trên ospfd.conf nên OSFPv2 không hoạt động

Nhận xét máy ảo

Kiểm tra vạch đường

Sử dụng lệnh route trên từng router để kiểm tra bảng vạch đường:

Kiểm tra sự liên thông

Thực hiện kiểm tra sự liên thông giữa các router bằng lệnh ping

  • Từ router1 tới router4

  • Từ router2 tới router3

Bằng lệnh sau đây:

# thực hiện trên router1
ping 100.1.4.1 -c 5
# thực hiện trên router 2
ping 100.1.0.10 

==> Kiểm tra thành công

Kiểm tra đường đi

Trên router1 thực hiện các lệnh như sau:

traceroute 100.1.0.5  # eth1 của router2
traceroute 100.1.0.17 # eth2 của router3
traceroute 100.1.0.10 # eth1 của router3

💡 NHẬN XÉT

Nhờ giải thuật OSPFv2 tăng khả năng mở rộng và hội tụ nhanh mà router1 đi qua các nhánh mạng của router2router3 không có nhánh mạng trung gian nào

Bắt các gói tin

Trên router thực hiện lệnh sau đây để bắt các gói tin

tcpdump -i any -w /shared/BaiTap13_router1.pcap

Dừng lại sau 30s bằng lệnh CRTL+C

Mở thư mục BaiTap12_router1.pcap vừa tạo bằng WireShark và chọn IP nguồn 100.1.0.2:

💡 NHẬN XÉT

  • Địa chỉ IP của khung này là 224.0.0.5, và đây là địa chỉ Multicast (vì các packages gửi đến những đích mà nó cùng giao thức mạng với nguồn)

  • Gói tin này dùng giao thức Open Shortest Path First trên tầng vận chuyển

  • Trong mục OSPF:

    1. Hiện thuật toán OSPF đang sử dụng là version 2

    2. Active Neighbor là danh sách các bộ định tuyến lân cận hoặc liền kề

    3. Designated Router là bộ định tuyến liền kề với bộ định tuyến hiện tại

    4. Backup Designated Router phục vụ như một chế độ chờ để nhận cập nhật các bộ định tuyến hiện tại

Tắt một nhánh mạng

Trên router1 hãy tắt nhánh mạng eth1 bằng lệnh sau:

ifconfig eth1 down

Sau đó hãy ping tới router3 bằng lệnh: ping 100.1.0.10 -c 5

==> Ping vẫn thành công, tuy bảng vạch đường đã thay đổi và không còn eth1

💡 NHẬN XÉT

Giải thuật OSPFv2 trên router tự động cập nhật lại đường bằng một đường đi mới, để đảm bằng tính liên thông của các router và chi phí ngắn nhất để từ router đến các router còn lại.

Hủy hệ thống máy ảo

Sử dụng lệnh kathara lclean để hủy hệ thống máy ảo:

3.Bài tập 14

💡 MÔ HÌNH

Xây dụng hệ thống mạng theo mô hình sau:

Tạo thư mục và các file

Tạo các thư mục và file theo mô hình như sau:

Bằng cách lệnh sau:

mkdir ~/Desktop/BaiTap14
cd ~/Desktop/BaiTap14
mkdir pc2 pc3 router1 router2 router3 routerisp
touch lab.conf pc2.startup pc3.startup router1.startup router2.startup router3.startup routerisp.startup

Thiết lập các file

Cấu hình và thiết lập các thư mục vừa tạo như sau:

:::: tabs

::: tab lab.conf

pc2[0]=B
pc3[0]=C

router1[0]=A
router1[1]=D
router1[2]=E

router2[0]=B
router2[1]=D
router2[2]=F

router3[0]=C
router3[1]=E
router3[2]=F

routerisp[0]=A

:::

::: tab router1.startup

ifconfig eth0 200.117.68.1/30 up
ifconfig eth1 10.0.1.1/30 up
ifconfig eth2 10.0.1.5/30 up
/etc/init.d/quagga start 

:::

::: tab router2.startup

ifconfig eth0 192.168.1.1/24 up
ifconfig eth1 10.0.1.2/30 up
ifconfig eth2 10.0.1.9/30 up
/etc/init.d/quagga start 

:::

::: tab router3.startup

ifconfig eth0 192.168.2.1/24 up
ifconfig eth1 10.0.1.6/30 up
ifconfig eth2 10.0.1.10/30 up
/etc/init.d/quagga start 

:::

::: tab routerisp.startup

ifconfig eth0 200.117.68.2/30 up
route add default gw 200.117.68.1

:::

::: tab pc2.startup

ifconfig eth0 192.168.1.200/24 up
route add default gw 192.168.1.1

:::

::: tab pc3.startup

ifconfig eth0 192.168.2.111/24 up
route add default gw 192.168.2.1

::: ::::

Cấu hình Quagga

Trong mỗi thư viện router hãy tạo mục như sau:

:::: tabs

::: tab daemons

zebra=yes
ripd=yes

:::

::: tab zebra.conf

hostname zebra
password zebra
enable password zebra

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

:::

::: tab ripd.conf

hostname ripd
password zebra
enable password zebra

router rip
network 10.0.1.0/28
redistribute connected

log file /var/log/zebra/ripd.log

::: ::::

⚠️ LƯU Ý

Như mô hình đề bài thì routerISP không thuộc phạm vị dịch vụ Quagga nên ta bỏ không cấu hình Quagga cho routerISP

💡 MẸO

Sử dụng lệnh sau để copy qua các router còn lại

cp -r router1/etc router2
cp -r router1/etc router3

Khởi động máy ảo

Sử dụng lệnh kathara lstart để khởi tạo hệ thống máy ảo:

==> Không báo lỗi, đã thành công chạy hệ thống máy ảo

Sử dụng lệnh sau đây trên từng router để kiềm tra dịch vụ Quagga:

/etc/init.d/quagga status

Kiểm tra máy ảo

Tính liên thông của các router

Từ routerISP tới các router khác

ping 200.117.68.1 -c 5 #router1
ping 192.168.1.1 -c 5 #router2
ping 192.168.2.1 -c 5 #router3

==> Thành công

Từ router bất kỳ tới routerISP

ping 200.117.68.2 -c 3

==> Thành công

Từ pc2 tới pc3 và ngược lại

ping 192.168.2.111 -c 3 #từ pc2 sang pc3
ping 192.168.1.200 -c 3 #từ pc3 sang pc2

==> Thành công

Từ pc2pc3 tới routerISP và ngược lại

ping 200.217.68.2 -c 5 #gõ trên pc2 và pc3
ping 192.168.2.111 #gõ trên routerISP
ping 192.168.1.200 #gõ trên routerISP

💡 NHẬN XÉT

  • Các router trong hệ thống ping được cho nhau

  • 2 thiết bị pc2pc3 ping được cho nhau

  • pc2pc3 gửi được ICMP echo request cho routerISP nhưng routerISP không gửi được ICMP echo reply đến pc2 và cả pc3 (routerISP không nằm trong định tuyến nội bộ và chỉ liên kết với router1)

Hủy hệ thống máy ảo

Sử dụng lệnh kathara lclean để hủy hệ thống máy ảo:

Cập nhật lúc :
Tác giả: Zenfection, Zenfection