Bài số 3: Bắt gói tin và phân tích hoạt động của lệnh traceroute
Sử dụng cấu hình như bài thực hành số 2, đứng tại router R1 và thực hiện lệnh traceroute đến một trạm ngoài Internet (địa chỉ 10.1.2.3), kết quả cho thấy đường đi từ R1 (địa chỉ 192.168.2.1) phải đi qua router R2 (có địa chỉ 192.168.2.2), R3 (có địa chỉ 192.168.2.130) và R4 (có địa chỉ 192.168.3.2):
[root@R2 ~]# traceroute -n 10.1.2.3
traceroute to 10.1.2.3 (110.1.2.3), 30 hops max, 60 byte packets
1 192.168.2.2 0.977 ms 0.870 ms 1.797 ms
2 192.168.2.130 2.635 ms 2.151 ms 2.071 ms
3 192.168.3.2 3.435 ms 3.121 ms 3.171 ms
Trên router R2, sử dụng lệnh tail để xem các gói tin đi qua mà có liên quan đến địa chỉ IP 10.1.2.3:
> tail -f /var/log/messages | grep 10.1.2.3
Dec 29 06:16:25 mydomain kernel: IN=eth6 OUT= MAC=08:00:27:56:81:0c:08:00:27:96:4a:e6:08:00 SRC=192.168.2.1 DST=10.1.2.3 LEN=60 TOS=0x00 PREC=0x00 TTL=1 ID=16704 PROTO=UDP SPT=47908 DPT=33434 LEN=40
Dec 29 06:16:25 mydomain kernel: IN= OUT=eth6 SRC=192.168.2.2 DST=192.168.2.1 LEN=88 TOS=0x00 PREC=0xC0 TTL=64 ID=53038 PROTO=ICMP TYPE=11 CODE=0 [SRC=192.168.2.1 DST=10.1.2.3 LEN=60 TOS=0x00 PREC=0x00 TTL=1 ID=16704 PROTO=UDP SPT=47908 DPT=33434 LEN=40 ]
Dec 29 06:16:25 mydomain kernel: IN=eth6 OUT= MAC=08:00:27:56:81:0c:08:00:27:96:4a:e6:08:00 SRC=192.168.2.1 DST=10.1.2.3 LEN=60 TOS=0x00 PREC=0x00 TTL=2 ID=16707 PROTO=UDP SPT=54365 DPT=33437 LEN=40
Dec 29 06:16:25 mydomain kernel: IN= OUT=eth7 SRC=192.168.2.1 DST=10.1.2.3 LEN=60 TOS=0x00 PREC=0x00 TTL=1 ID=16707 PROTO=UDP SPT=54365 DPT=33437 LEN=40
Dec 29 06:16:25 mydomain kernel: IN=eth6 OUT= MAC=08:00:27:56:81:0c:08:00:27:96:4a:e6:08:00 SRC=192.168.2.1 DST=10.1.2.3 LEN=60 TOS=0x00 PREC=0x00 TTL=3 ID=16710 PROTO=UDP SPT=57479 DPT=33440 LEN=40
Dec 29 06:16:25 mydomain kernel: IN= OUT=eth7 SRC=192.168.2.1 DST=10.1.2.3 LEN=60 TOS=0x00 PREC=0x00 TTL=2 ID=16710 PROTO=UDP SPT=57479 DPT=33440 LEN=40
Dec 29 06:16:25 mydomain kernel: IN=eth6 OUT= MAC=08:00:27:56:81:0c:08:00:27:96:4a:e6:08:00 SRC=192.168.2.1 DST=10.1.2.3 LEN=60 TOS=0x00 PREC=0x00 TTL=4 ID=16713 PROTO=UDP SPT=53265 DPT=33443 LEN=40
Dec 29 06:16:25 mydomain kernel: IN= OUT=eth7 SRC=192.168.2.1 DST=10.1.2.3 LEN=60 TOS=0x00 PREC=0x00 TTL=3 ID=16713 PROTO=UDP SPT=53265 DPT=33443 LEN=40
…
Dec 29 06:16:25 mydomain kernel: IN=eth7 OUT= MAC=08:00:27:00:54:6b:08:00:27:98:ca:2e:08:00 SRC=192.168.2.130 DST=192.168.2.1 LEN=88 TOS=0x00 PREC=0xC0 TTL=64 ID=41455 PROTO=ICMP TYPE=11 CODE=0 [SRC=192.168.2.1 DST=10.1.2.3 LEN=60 TOS=0x00 PREC=0x00 TTL=1 ID=16707 PROTO=UDP SPT=54365 DPT=33437 LEN=40 ]
Dec 29 06:16:25 mydomain kernel: IN= OUT=eth6 SRC=192.168.2.130 DST=192.168.2.1 LEN=88 TOS=0x00 PREC=0xC0 TTL=63 ID=41456 PROTO=ICMP TYPE=11 CODE=0 [SRC=192.168.2.1 DST=10.1.2.3 LEN=60 TOS=0x00 PREC=0x00 TTL=1 ID=16708 PROTO=UDP SPT=55971 DPT=33438 LEN=40 ]
Dec 29 06:16:25 mydomain kernel: IN=eth7 OUT= MAC=08:00:27:00:54:6b:08:00:27:98:ca:2e:08:00 SRC=192.168.3.2 DST=192.168.2.1 LEN=88 TOS=0x00 PREC=0xC0 TTL=63 ID=12600 PROTO=ICMP TYPE=11 CODE=0 [SRC=192.168.2.1 DST=10.1.2.3 LEN=60 TOS=0x00 PREC=0x00 TTL=1 ID=16710 PROTO=UDP SPT=57479 DPT=33440 LEN=40 ]
Dec 29 06:16:25 mydomain kernel: IN= OUT=eth6 SRC=192.168.3.2 DST=192.168.2.1 LEN=88 TOS=0x00 PREC=0xC0 TTL=62 ID=12600 PROTO=ICMP TYPE=11 CODE=0 [SRC=192.168.2.1 DST=10.1.2.3 LEN=60 TOS=0x00 PREC=0x00 TTL=1 ID=16710 PROTO=UDP SPT=57479 DPT=33440 LEN=40 ]
Dec 29 06:16:28 mydomain kernel: IN=eth7 OUT= MAC=08:00:27:00:54:6b:08:00:27:98:ca:2e:08:00 SRC=192.168.3.2 DST=192.168.2.1 LEN=88 TOS=0x00 PREC=0xC0 TTL=63 ID=12603 PROTO=ICMP TYPE=3 CODE=1 [SRC=192.168.2.1 DST=10.1.2.3 LEN=60 TOS=0x00 PREC=0x00 TTL=5 ID=16726 PROTO=UDP SPT=56957 DPT=33456 LEN=40 ]
Dec 29 06:16:28 mydomain kernel: IN=eth7 OUT= MAC=08:00:27:00:54:6b:08:00:27:98:ca:2e:08:00 SRC=192.168.3.2 DST=192.168.2.1 LEN=88 TOS=0x00 PREC=0xC0 TTL=63 ID=12605 PROTO=ICMP TYPE=3 CODE=1 [SRC=192.168.2.1 DST=10.1.2.3 LEN=60 TOS=0x00 PREC=0x00 TTL=6 ID=16728 PROTO=UDP SPT=60033 DPT=33458 LEN=40 ]
Phân tích dữ liệu log bên trên cho thấy:
- Trạm nguồn R1 (địa chỉ 192.168.2.1) lần lượt gửi đi các gói tin UDP tới trạm đích (địa chỉ 10.1.2.3) với giá trị TTL tăng dần từ 1 trở đi (dòng log số 1).
- Tại trạm trung gian R2 (địa chỉ 192.168.2.2), gói tin UDP có TTL=1hết thời gian sống, thực hiện hủy gói tin này đi và gửi trả lại trạm nguồn (địa chỉ 192.168.2.1) một gói tin ICMP mã số 11 (Time Exceeded). Phần Data của gọi tin ICMP này là thông tin gói tin UDP vừa bị hủy bỏ (dòng log số 2).
- Trong khi chưa nhận được phản hồi trả về thì trạm nguồn cứ tiếp tục gửi các gói tin UDP với TTL tăng dần. Khi đi qua router trung gian R2, TTL được giảm đi 1. Các cặp đôi dòng log (3&4, 5&6, 7&8, v.v..) thể hiện gói tin UDP đi vào R2 và gói tin UDP tương ứng đi ra R2 (cùng trường ID và TTL giảm đi 1).
- Gói tin UDP được R2 chuyển đến R3 (địa chỉ 192.168.2.130). Tại đây, gói tin UDP có TTL=1 đã hết thời gian sống, R3 thực hiện hủy gói tin này đi và gửi trả lại trạm nguồn một gói tin ICMP mã số 11 (Time Exceeded). Phần Data của gọi tin ICMP này là thông tin gói tin UDP vừa bị hủy bỏ. Gói tin này đi vào R2 (dòng log số 10) và chuyển tiếp ra R2 để về R1 (dòng log 11).
- Tương tự, gói tin UDP được R3 chuyển đến R4 (địa chỉ 192.168.3.2). Tại đây, gói tin UDP có TTL=1 đã hết thời gian sống, R4 thực hiện hủy gói tin này đi và gửi trả lại trạm nguồn một gói tin ICMP mã số 11 (Time Exceeded). Phần Data của gọi tin ICMP này là thông tin gói tin UDP vừa bị hủy bỏ. Gói tin này đi vào R2 (dòng log số 12) và chuyển tiếp ra R2 để về R1 (dòng log 13).
- Với các gói tin UDP gửi đi mà TTL=5,6,7, v.v.., khi đến R4 (địa chỉ 192.168.3.2) sẽ không tìm được đường đi tiếp theo (do trạm 10.1.2.3 không tồn tại) nên được R4 gửi trả về gói tin ICMP với Type=3 (Destination Unreachable)