Chúng ta hãy thực hiện một số khám phá MTU giữa hai máy chủ Debian được phân tách bằng bộ định tuyến Debian chạy các quy tắc iptables do Shorewall tạo. Mỗi trong hai máy chủ sử dụng một liên kết Ethernet duy nhất trong khi bộ định tuyến sử dụng các Vlan được gắn thẻ qua hai liên kết Ethernet tổng hợp.
Sử dụng kẻ lừa đảo :
root@kitandara:/home/jm# scamper -I "trace -M 10.64.0.2"
traceroute from 10.1.0.5 to 10.64.0.2
1 10.1.0.1 0.180 ms [mtu: 6128]
2 10.64.0.2 0.243 ms [mtu: 6128]
Tốt: 6128 byte là kết quả mong đợi (bộ điều hợp Ethernet Realtek giá rẻ không thể xử lý các khung khổng lồ có kích thước khá).
Bây giờ, hãy để iperf thực hiện kiểm tra thông lượng và cho chúng tôi biết về MTU bằng cách này:
root@kitandara:/home/jm# iperf -c 10.64.0.2 -N -m
------------------------------------------------------------
Client connecting to 10.64.0.2, TCP port 5001
TCP window size: 66.2 KByte (default)
------------------------------------------------------------
[ 3] local 10.1.0.5 port 59828 connected with 10.64.0.2 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.0 sec 1011 MBytes 848 Mbits/sec
[ 3] MSS size 6076 bytes (MTU 6116 bytes, unknown interface)
6116 byte? Tại sao ?
Và bây giờ đối với một cái gì đó hoàn toàn khác, hãy xem lưu lượng truy cập của phiên này thực sự chứa gì:
root@kitandara:/home/jm# tshark -i eth0 -R "(ip.dst == 10.64.0.2) || (ip.src == 10.64.0.2)" | head
Capturing on eth0
1.308557 10.1.0.5 -> 10.64.0.2 TCP 74 60310 > 5001 [SYN] Seq=0 Win=5340 Len=0 MSS=534 SACK_PERM=1 TSval=101928961 TSecr=0 WS=16
1.308801 10.64.0.2 -> 10.1.0.5 TCP 74 5001 > 60310 [SYN, ACK] Seq=0 Ack=1 Win=18328 Len=0 MSS=6088 SACK_PERM=1 TSval=3764064056 TSecr=101928961 WS=64
6088 byte MSS, có nghĩa là 6128 MTU ... Tốt. Nhưng tại sao iperf lại công bố MTU 6116 byte?
Tại thời điểm đó, tính kỹ lưỡng yêu cầu xem xét kỹ hơn những gì xảy ra trong phiên truy tìm kẻ lừa đảo:
root@kitandara:/home/jm# tshark -i eth0 -R "(ip.dst == 10.64.0.2) || (ip.src == 10.64.0.2)"
Capturing on eth0
0.000000 10.1.0.5 -> 10.64.0.2 UDP 58 Source port: 43870 Destination port: 33435
0.000175 10.1.0.1 -> 10.1.0.5 ICMP 86 Time-to-live exceeded (Time to live exceeded in transit)
0.050358 10.1.0.5 -> 10.64.0.2 UDP 58 Source port: 43870 Destination port: 33436
0.050592 10.64.0.2 -> 10.1.0.5 ICMP 86 Destination unreachable (Port unreachable)
0.099790 10.1.0.5 -> 10.64.0.2 UDP 6142 Source port: 43870 Destination port: 33437
0.100912 10.64.0.2 -> 10.1.0.5 ICMP 590 Destination unreachable (Port unreachable)
Tất cả các gói đó có udp.length là 24 ngoại trừ hai gói cuối cùng có udp.length là 6108 ... Nhưng sau đó, kẻ lừa đảo nói với chúng ta rằng MTU đường dẫn là 6128 như thế nào?
6108, 6116, 6128 ... Rất nhiều MTU để lựa chọn!