Bagaimana cara melihat PMTU yang di-cache di Linux (dan semua OS lainnya)

13

Ketika saya melakukan ping situs remote dengan set bit DF dan ukuran paket yang terlalu besar untuk router saya, pesan "fragmentasi diperlukan" ICMP pertama dikirim dari router. Setelah itu pesan datang dari localhost saya.

Netstat -rC (di Linux) memungkinkan saya untuk melihat cache tabel routing, tetapi

1) Tampaknya menunjukkan MTU di bawah kolom yang disebut MSS (yang saya harapkan akan menjadi TCP MSS tautan yang lebih rendah)

2) Selalu menunjukkan nilai 1500

Localhost saya harus men-caching PMTU di suatu tempat sehingga dapat menghasilkan pesan yang diperlukan fragmentasi. Tapi bagaimana saya melihatnya?

Berikut adalah contoh di komputer saya (-n di netstat menghambat pencarian DNS terbalik):

[root@vbcentos ~]# ping -c 4 -M do -s 1431 212.58.244.69
PING 212.58.244.69 (212.58.244.69) 1431(1459) bytes of data.
From 217.155.134.6 icmp_seq=1 Frag needed and DF set (mtu = 1458)
From 217.155.134.4 icmp_seq=2 Frag needed and DF set (mtu = 1458)
From 217.155.134.4 icmp_seq=2 Frag needed and DF set (mtu = 1458)
From 217.155.134.4 icmp_seq=2 Frag needed and DF set (mtu = 1458)

--- 212.58.244.69 ping statistics ---
1 packets transmitted, 0 received, +4 errors, 100% packet loss, time 1002ms

[root@vbcentos ~]# netstat -rCn
Kernel IP routing cache
Source          Destination     Gateway         Flags   MSS Window  irtt Iface
217.155.134.3   217.155.134.4   217.155.134.4   il        0 0          0 lo
217.155.134.4   212.58.244.69   217.155.134.6          1500 0          0 eth0
217.155.134.4   217.155.134.4   217.155.134.4   l     16436 0          0 lo
217.155.134.3   217.155.134.255 217.155.134.255 ibl       0 0          0 lo
217.155.134.4   212.58.244.69   217.155.134.6          1500 0          0 eth0
217.155.134.6   217.155.134.4   217.155.134.4   il        0 0          0 lo
212.58.244.69   217.155.134.4   217.155.134.4   l         0 0          0 lo
[root@vbcentos ~]#

EDIT: Sesuai saran:

ip route get to 212.58.244.69

memberi

212.58.244.69 via 217.155.134.6 dev eth1  src 217.155.134.4
    cache  mtu 1500 advmss 1460 hoplimit 64

Yang juga tampak salah karena MSS hanya 40 kurang dari MTU, yang merupakan antarmuka MTU daripada PMTU

Neik
sumber
1
Pada Fedora 22, netstat -rCntidak mengembalikan apa pun, tetapi watch ip route get to $HOSTmenunjukkan apa yang terjadi, termasuk cache TTL. ip route show cachedmenunjukkan mungkin juga menampilkan sesuatu tetapi tidak.
David Tonhofer

Jawaban:

7

Mungkin

ip route get to 212.58.244.69
sciurus
sumber
Pertanyaan yang diedit untuk menambahkan ini.
Neik
1

Di bawah Windows, gunakan perintah netsh untuk melihat "cache tujuan" yang menyimpan informasi ini. Misalnya (dengan asumsi IPv4):

netsh interface ipv4 show destinationcache
dbr
sumber
1

MSS harus 40 byte kurang dari MTU Anda (tidak termasuk header byte IPv4 (20 byte) dan tcp (20)). Jadi itu benar.

Pesan ICMP fragmentasi yang dibutuhkan dikirim oleh router, bukan server Anda.

Gabe
sumber