टाइमस्टैम्प सक्षम होने पर कुछ SYN पैकेट का कोई जवाब नहीं


9

मेरे पास एक टीसीपी सर्वर है जो एक मशीन ("सर्वर") पर सुन रहा है जो उबुन्टु 12.04.3 (कर्नेल 3.8.0-31-जेनेरिक) चल रहा है। यह 2 विभिन्न क्लाइंट मशीनों से कनेक्शन प्राप्त करता है। मशीन A उबंटू 12.04.4 (3.11.0-17-जेनेरिक) और मशीन बी उबंटू 11.10 (3.0.0-32-सर्वर) चला रही है।

यदि सर्वर पर टीसीपी टाइमस्टैम्प सक्षम हैं (sysctl net.ipv4.tcp_timestamps = 1) तो कभी-कभी मशीन A से SYN पैकेट को "अनदेखा" किया जाता है। सर्वर पर (गैर-विवादास्पद मोड में) tcpdump का उपयोग करके मैं SYNs को ओके और सही चेकसम के साथ देख सकता हूं - बस कोई प्रतिक्रिया नहीं है - कोई SYN / ACK और कोई RST नहीं। मशीन A, SYN को त्यागने से पहले कई बार पीछे ले जाता है। मशीन ए पर चलने वाला क्लाइंट सॉफ्टवेयर (इस मामले में wget) तुरंत एक नए कनेक्शन के साथ रिटायर हो जाता है और तत्काल SYN / ACK प्राप्त करता है।

मशीन बी में एक ही सर्वर के साथ कोई समस्या नहीं है और यह ट्रैफ़िक सामान्य दिखता है - यह मशीन ए के समान टीसीपी विकल्पों का उपयोग कर रहा है (साथ ही मैं कैप्चर फ़ाइलों से जो भी देखता हूं)। सर्वर पर टीसीपी टाइमस्टैम्प को अक्षम करने से सब कुछ काम हो जाता है जैसा कि इसे करना चाहिए।

नजरअंदाज किए गए SYN पैकेट में टाइमस्टैम्प मेरे लिए मान्य हैं, लेकिन मुझे यकीन नहीं है कि वे समस्या क्यों पैदा कर रहे हैं या यदि वे अंतर्निहित कारण हैं।

मैंने यहाँ anonyimised pcap डाल दी है https://www.dropbox.com/s/onimdkbyx9lim70/server-machineA.pcap । इसे सर्वर पर (10.76.0.74) शो मशीन A (10.4.0.76) पर सफलतापूर्वक HTTP GET (पैकेट 1 से 10) का प्रदर्शन किया गया था और फिर 1 सेकंड बाद उसी URL को फिर से लाने की कोशिश कर रहा था (पैकेट 11 से 17) इसके SYNs को नजरअंदाज कर दिया गया है। पैकेट 18 से 27 दूसरी सफलता है।

मुझे संदेह है कि यह एक ऐसी ही समस्या है जिसका वर्णन " क्यों एक सर्वर एक SYN पैकेट के जवाब में SYN / ACK पैकेट नहीं भेजता है " और टाइमस्टैम्प को अक्षम करने के लिए एक वर्कअराउंड है जिसे मैं समझना चाहता हूं कि क्या हो रहा है। क्या यह सिर्फ एक बग है?

कोई स्थानीय फ़ायरवॉल नहीं चल रहा है। सर्वर कुछ टीसीपी कनेक्शन (लगभग किसी भी समय 32K) को संभालता है, लेकिन इसमें बहुत सारी मुफ्त मेमोरी / सीपीयू हैं। पीक में दिखाए गए परीक्षण के समय मशीन ए और सर्वर के बीच कोई अन्य टीसीपी कनेक्शन नहीं था। ऐसा कोई संकेत नहीं है कि सर्वर एप्लिकेशन की स्वीकार कतार अचानक भर रही है (इसके अलावा दोनों क्लाइंट को प्रभावित करना चाहिए जिन्हें मैं मानता हूं)। जैसा कि सर्वर पर लिए गए फलक में पैकेट ठीक दिखते हैं, ऐसा नहीं लगता कि कोई हस्तक्षेप करने वाला नेटवर्क डिवाइस चीजों को तोड़ रहा है।

मैंने मूल रूप से इसे ubuntu मंचों में पोस्ट किया है, लेकिन संकेत में यह अधिक उपयुक्त स्थान हो सकता है। एक सुराग के ऋण के लिए उम्मीद है।

जवाबों:


5

मेरे मामले में निम्नलिखित कमांड ने लिनक्स सर्वर से लापता SYN / ACK उत्तरों के साथ समस्या तय की:

sysctl -w net.ipv4.tcp_tw_recycle=0

मुझे लगता है कि यह टीसीपी टाइमस्टैम्प को अक्षम करने की तुलना में अधिक सही है, क्योंकि टीसीपी टाइमस्टैम्प सभी (पीएडब्ल्यूएस, विंडो स्केलिंग, आदि) के बाद उपयोगी हैं।

दस्तावेज़ में tcp_tw_recycleस्पष्ट रूप से कहा गया है कि इसे सक्षम करने की अनुशंसा नहीं की जाती है, क्योंकि कई NAT राउटर टाइमस्टैम्प को संरक्षित करते हैं और इस तरह PAWS में किक करता है, क्योंकि समान IP से टाइमस्टैम्प संगत नहीं हैं।

   tcp_tw_recycle (Boolean; default: disabled; since Linux 2.4)
          Enable fast recycling of TIME_WAIT sockets.  Enabling this
          option is not recommended for devices communicating with the
          general Internet or using NAT (Network Address Translation).
          Since some NAT gateways pass through IP timestamp values, one
          IP can appear to have non-increasing timestamps.  See RFC 1323
          (PAWS), RFC 6191.

विचाराधीन मशीनों को अपग्रेड किया गया है और मेरा मानना ​​है कि समस्या अब नहीं रही है इसलिए मैं अब यह कोशिश नहीं कर सकता। हालांकि इस मामले में क्लाइंट और सर्वर के बीच कोई NAT शामिल नहीं था। यह अभी भी मेरे जैसे संदिग्ध बग लगता है।
उपयोगकर्ता 133831
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.