कॉन्टेंट पर जाएँ
Secret Knock

पोर्ट दस्तक दरवाज़ा क्यों नहीं खोलती

या तो दस्तक सर्वर तक पहुँचती ही नहीं है, ऐसे स्वरूप में पहुँचती है जिसे डेमन स्वीकार नहीं करता, या उस पते के लिए दरवाज़ा खोलती है जिसका आप उपयोग नहीं कर रहे हैं। सूची को ऊपर से नीचे तक देखें — इसे प्रत्येक कारण के सामने आने की आवृत्ति के क्रम में रखा गया है।

1. दरवाज़ा किसी दूसरे पते के लिए खुला

फ़ायरवॉल उस स्रोत पते के लिए पोर्ट खोलता है जो सर्वर ने देखा था। यदि आपने IPv6 से दस्तक दी और SSH फिर IPv4 से कनेक्ट होता है — या इसका उलटा — तो दरवाज़ा उस पते के लिए खुला है जिसका आप उपयोग नहीं कर रहे हैं। मोबाइल डेटा, कैरियर NAT और VPN भी पता बदलते हैं।

होम स्क्रीन पर Secret Knock द्वारा दिखाए गए पते ("आप … से दस्तक देते हैं") की तुलना सर्वर के लॉग में मौजूद पते से करें, और यदि वे अलग हैं, तो दरवाज़े के लिए IPv4 या IPv6 को निश्चित करें।

2. पैकेट सर्वर तक नहीं पहुँचते

होटल, कार्यालय और मोबाइल नेटवर्क कभी-कभी असामान्य पोर्ट ब्लॉक करते हैं, और सर्वर के सामने मौजूद क्लाउड फ़ायरवॉल पैकेटों को knockd या fwknopd के देखने से पहले ही छोड़ देता है। दस्तक देते समय सर्वर पर ट्रैफ़िक देखें:

# knockd (UseSyslog): every recognised step and the command it ran
sudo journalctl -u knockd -f

# Do the packets reach the server at all? (use your interface and ports)
sudo tcpdump -ni eth0 'tcp port 7311 or tcp port 8822 or udp port 9133'

# fwknopd in the foreground with verbose output
sudo fwknopd -f -v
सर्वर पर

3. अनुक्रम गलत स्वरूप में पहुँचता है

  1. 1दोबारा भेजे गए SYN: जब किसी TCP दस्तक को कोई जवाब नहीं मिलता, तो क्लाइंट का ऑपरेटिंग सिस्टम वही SYN फिर से भेजता है। knockd 0.8 ऐसी पुनरावृत्ति पर अनुक्रम रीसेट कर देता है। Secret Knock प्रत्येक TCP दस्तक को एकल SYN के रूप में भेजता है और प्रयास को तुरंत रोक देता है; हो सकता है अन्य क्लाइंट ऐसा न करें।
  2. 2समय: सभी चरण seq_timeout के भीतर और क्रम में पहुँचने चाहिए। यदि बीच में कोई राउटर पैकेटों का क्रम बदलता है, तो किसी चरण से पहले थोड़ी देरी जोड़ें।
  3. 3प्रोटोकॉल: UDP चरण UDP के रूप में और TCP चरण TCP के रूप में भेजा जाना चाहिए — प्रत्येक चरण को knockd.conf से जाँचें।
  4. 4tcpflags = syn के कारण knockd, SYN फ़्लैग के बिना TCP पैकेटों को अनदेखा करता है। इसके बिना, उसी पोर्ट के कनेक्शन के अन्य पैकेट भी हिट के रूप में गिने जाते हैं और अनुक्रम को बाधित कर सकते हैं।

4. fwknop: कुंजियाँ, घड़ियाँ और पुनः चलाए गए पैकेट

  1. 1दोनों कुंजियाँ access.conf से मेल खानी चाहिए: Rijndael कुंजी और HMAC कुंजी, समान डाइजेस्ट के साथ (डिफ़ॉल्ट रूप से SHA-256)।
  2. 2fwknopd, MAX_SPA_PACKET_AGE से पुराने पैकेट अस्वीकार करता है (डिफ़ॉल्ट रूप से 120 सेकंड), इसलिए डिवाइस की घड़ी बहुत गलत होने पर हर पैकेट पुराना दिखाई देता है।
  3. 3हर SPA पैकेट का उपयोग केवल एक बार किया जा सकता है; fwknopd दोबारा चलाए गए पैकेट को जानबूझकर छोड़ देता है।
  4. 4यदि आप HTTP पर दस्तक देते हैं, तो उस पोर्ट पर किसी चीज़ को TCP कनेक्शन स्वीकार करना होगा, वरना अनुरोध कभी भेजा ही नहीं जाएगा।

5. दरवाज़ा खुलता है, लेकिन SSH फिर भी विफल होता है

  1. 1नियम क्रम: डेमन द्वारा जोड़ा गया नियम, पोर्ट को छोड़ने वाले नियम से पहले होना चाहिए — iptables -A किसी मौजूदा DROP के बाद जोड़ता है और कभी मेल नहीं खाता।
  2. 2समय-सीमा: SSH के कनेक्ट होने से पहले cmd_timeout या FW_ACCESS_TIMEOUT ने दरवाज़ा बंद कर दिया। समय-सीमा के भीतर कनेक्ट करें; यदि आपका फ़ायरवॉल स्थापित कनेक्शन स्वीकार करता है, तो स्थापित सत्र काम करते रहेंगे।
  3. 3दस्तक के बाद Secret Knock की पोर्ट जाँच बताती है कि पोर्ट ने बिल्कुल जवाब दिया या नहीं, SSH प्रमाणीकरण से अलग।

GitHub पर सभी उदाहरण → इस पेज पर हर कॉन्फ़िगरेशन, कॉपी करने के लिए तैयार: github.com/mobilcomm/secretknock-examples (सार्वजनिक डोमेन)।

सवाल

मैं कैसे देखूँ कि ऐप ने वास्तव में क्या भेजा?

दरवाज़े का इतिहास हर दस्तक को उसके समय, परिणाम और पता परिवार के साथ दिखाता है, और संपादक उसी दस्तक को टर्मिनल कमांड के रूप में दिखाता है जिसे आप तुलना के लिए कंप्यूटर से चला सकते हैं।

आपके सेटअप के लिए गाइड