Ubuntu 12.04.3 (çekirdek 3.8.0-31-jenerik) çalıştıran bir makinede ("sunucu") dinleyen bir TCP sunucum var. 2 farklı istemci makineden bağlantı alır. Makine A Ubuntu 12.04.4 (3.11.0-17-jenerik) çalıştırıyor ve Makine B Ubuntu 11.10 (3.0.0-32-sunucu) çalıştırıyor.
Sunucuda TCP zaman damgaları etkinleştirilirse (sysctl net.ipv4.tcp_timestamps = 1), bazen A makinesinden alınan SYN paketleri "yoksayılır". Sunucuda tcpdump kullanarak (karışık olmayan modda) SYN'lerin TAMAM geldiğini ve doğru sağlama toplamı ile görebiliyorum - sadece yanıt yok - SYN / ACK ve RST yok. Makine A pes etmeden önce SYN'yi birkaç kez iletir. A makinesinde çalışan istemci yazılımı (bu durumda wget) hemen yeni bir bağlantıyla yeniden dener ve başarılı olur ve anında bir SYN / ACK alır.
Makine B'nin aynı sunucu ile hiçbir sorunu yok ve trafiği normal görünüyor - makine A ile aynı TCP seçeneklerini kullanıyor (yakalama dosyalarından gördüğüm kadarıyla). Sunucudaki TCP zaman damgalarını devre dışı bırakmak, her şeyin gerektiği gibi çalışmasını sağlar.
Yoksayılan SYN paketlerindeki zaman damgaları benim için geçerli görünüyor ancak bu yüzden neden sorunlara neden olduklarını veya altta yatan neden olup olmadıklarını bilmiyorum.
Buraya anonim bir pcap koydum https://www.dropbox.com/s/onimdkbyx9lim70/server-machineA.pcap . Sunucuda (10.76.0.74) A makinesinin (10.4.0.76) başarıyla bir HTTP GET (paketler 1 ila 10) gerçekleştirdiğini ve ardından 1 saniye sonra aynı URL'yi tekrar almaya çalıştığını (11 ila 17 paketleri) gösterdi. SYN'leri yoksayıldı. Paket 18 ila 27 başka bir başarıdır.
Bunun " Neden bir sunucu bir SYN paketine yanıt olarak bir SYN / ACK paketi göndermeyesiniz " bölümünde açıklananlara benzer bir sorun olduğundan ve zaman damgalarını devre dışı bırakmanın geçici bir çözüm olduğunu anlıyorum. Bu sadece bir hata mı?
Çalışan yerel güvenlik duvarı yok. Sunucu oldukça az sayıda TCP bağlantısı (bir seferde yaklaşık 32K) kullanır ancak bol miktarda boş bellek / CPU'ya sahiptir. Pcap'ta gösterilen test sırasında A makinesi ile sunucu arasında başka TCP bağlantısı yoktu. Sunucu uygulamasının kabul kuyruğunun aniden dolduğuna dair bir işaret yoktur (bunun yanında her iki istemciyi de etkilemesi gerekir). Paketler sunucuda alınan bir pcap Tamam görünüyor gibi araya giren bir ağ cihazı şeyleri kırıyor gibi görünmüyor.
Aslında bunu ubuntu forumlarında yayınladım, ancak gezide bu daha uygun bir yer olabilir. Bir ipucu ödünç almayı umuyorum.