Linux (ve diğer tüm işletim sistemleri) altında önbelleğe alınmış PMTU'yu nasıl görüntülerim


13

DF biti ayarlanmış ve yönlendiricim için çok büyük bir paket boyutu olan uzak bir siteye ping attığımda, ilk ICMP "parçalanma gerekli" mesajı yönlendiriciden gönderilir. Bundan sonra mesaj localhost'tan geliyor.

Netstat -rC (Linux'ta) yönlendirme tablosu önbelleğini görmeme izin veriyor, ancak

1) MTU'ları MSS adlı bir sütunun altında gösterdiği anlaşılıyor (bu bağlantının alt TCP MSS'si olmasını beklerim)

2) Değeri her zaman 1500 olarak gösterir

Yerel ana bilgisayarım PMTU'yu bir yerde önbelleğe almalıdır, böylece gerekli parçalanma mesajını oluşturabilir. Ama bunu nasıl görüyorum?

İşte benim makine bir örnek (netstat üzerinde -n ters DNS aramaları engeller):

[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: Öneri başına:

ip route get to 212.58.244.69

verir

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

MSS, PMTU yerine mtu arabirimi olan mtu'dan sadece 40 daha az olduğu için de yanlış görünüyor.


1
Fedora 22'de netstat -rCnhiçbir şey döndürmez, ancak watch ip route get to $HOSTönbellek TTL'si dahil olmak üzere neler olduğunu gösterir. ip route show cachedmuhtemelen bir şey çıktı gösterir ama değil gösterir.
David Tonhofer

Yanıtlar:


7

Olabilir

ip route get to 212.58.244.69

Bunu eklemek için soru düzenlendi.
Neik

1

Windows altında, bu bilgileri içeren "hedef önbelleği" görüntülemek için netsh komutunu kullanın. Örneğin (IPv4 varsayarak):

netsh interface ipv4 show destinationcache

1

MSS, MTU'nuzdan 40 bayt daha az olmalıdır (IPv4 (20 bayt) ve tcp (20) bayt başlıklarını içermez). Bu doğru.

ICMP parçalanması gerekli mesajı sunucunuz tarafından değil, yönlendirici tarafından gönderilir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.