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
LAN
vàrouter
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 RIP
và OSPF
RIP
(Routing Information Protocol): sử dụng giải thuậtDistance Vector
(theo nguyên lý bellman-Ford), phiên bảnRIP
version 2:Đơn vị đo khoảng cách dùng trong vạch đường là
hops
Số lượng số bước nhảy tối đa là
15
Chù kỳ cập nhật bảng vạch đường là
30s
(có thể tùy chỉnh)Tầng vận chuyển sử dụng UDP với cổng là
520
==> Phù hợp triển khai trên các định tuyến nội miền có kích thước nhỏ và không phức tạp
OSPF
(Open Shortest Path First): sử dụng giải thuậtLSP
(Link State Packet) dựa trên thuật toán Dijkstra, phiên bảnOSPF
version 2Hội tụ nhanh và không có tình trặng lặp vô tận việc vạch đường
Hỗ trợ mạng kích thước lớn
==> Phù hợp triển khai trên các định tuyến nội miền có kích thước lớn và phức tạp
⚠️ 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ưRIPv2
vàOSPFv2
hoạt động tốt trênIPv4
,IPv6
...Được cài đặt tại đường dẫn
/etc/quagga
trong máy ảoKathara
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
Quagga
Cấu hình 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ư :username và password
Đường dẫn nhật ký (
log file
)
daemons
: chứa khai báo các giao thức vạch đường đượcQuagga
hỗ trợ như :RIPv2
trênIPv4
: đặt tên làripd
OSPFv2
trênIPv4
: đặt tên làospfd
BGP
trênIPv4
vàIPv6
: đặt tên làbgpd
ripd.conf
: chứa nội dung miêu tả hoạt động của giải thuậtRIPv2
Lệnh
router rip
: cho biết router sẽ sử dụngRIPv2
làm vạch đườngLệnh
network
: là phạm vi gửi và nhận gói tin, có thể sử dụngip
khác dưới24
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
Nếu không hiện gì cả ==> dịch vụ chưa được khởi động
ripd watchquagga
==> thiết lập choRIPv2
vàQuagga
đã thành công
watchquagga
==> có sai sót trênripd.conf
nênRIPv2
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
tcpdump
Kiểm tra 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
telnet
Kiểm tra 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ácpackages
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ổng520
Trong trường
Routing Infomation Protocol
đây là bộ định tuyến sử dụng giải thuậtRIPv2
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ácrouter 1
,routere2
vàrouter4
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
:
Cũ | 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
::: ::::
Quagga
Cấu hình 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ậtOSPFv2
thay vìRIPv2
Lệnh
interface
chỉ ra giao diện củarouter
sẽ chạy giải thuậtOSPFv2
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ậtOSFPv2
Nếu không hiện gì hết thì dịch vụ
Quagga
đã xảy ra lỗiNếu hiện
watchquagga
thì có sai sót trênospfd.conf
nênOSFPv2
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ớirouter4
Từ
router2
tớirouter3
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 router2
và router3
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ệnhCRTL+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ácpackages
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ểnTrong mục
OSPF
:Hiện thuật toán
OSPF
đang sử dụng làversion 2
Active Neighbor
là danh sách các bộ định tuyến lân cận hoặc liền kềDesignated Router
là bộ định tuyến liền kề với bộ định tuyến hiện tạiBackup 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
routerISP
tới các router
khác
Từ 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
router
bất kỳ tới routerISP
Từ ping 200.117.68.2 -c 3
==> Thành công
pc2
tới pc3
và ngược lại
Từ 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
pc2
và pc3
tới routerISP
và ngược lại
Từ 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 nhau2 thiết bị
pc2
vàpc3
ping được cho nhaupc2
vàpc3
gửi đượcICMP echo request
chorouterISP
nhưngrouterISP
không gửi đượcICMP echo reply
đếnpc2
và cảpc3
(vìrouterISP
không nằm trong định tuyến nội bộ và chỉ liên kết vớirouter1
)
Hủy hệ thống máy ảo
Sử dụng lệnh kathara lclean
để hủy hệ thống máy ảo: