لماذا لا يفتح الطرق الباب
إما أن الطرق لا يصل إلى الخادم مطلقًا، أو يصل إليه بشكل لا تقبله الخدمة الخفية، أو يفتح الباب لعنوان لا تستخدمه. راجع القائمة من الأعلى إلى الأسفل — فهي مرتبة حسب مدى شيوع كل سبب.
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حزم SYN المعاد إرسالها: عندما لا يتلقى طرق TCP إجابة، يعيد نظام تشغيل العميل إرسال حزمة SYN نفسها. يعيد knockd 0.8 ضبط التسلسل عند هذا التكرار. يرسل Secret Knock كل طرق TCP كحزمة SYN واحدة ويوقف المحاولة فورًا؛ وقد لا تفعل برامج العميل الأخرى ذلك.
- 2التوقيت: يجب أن تصل كل الخطوات ضمن seq_timeout وبالترتيب. أضف تأخيرًا قصيرًا قبل خطوة إذا كان موجّه بينهما يعيد ترتيب الحزم.
- 3البروتوكول: يجب إرسال خطوة UDP كـ UDP وخطوة TCP كـ TCP — تحقّق من كل خطوة مقارنةً بـ knockd.conf.
- 4يجعل tcpflags = syn knockd يتجاهل حزم TCP التي لا تحمل علامة SYN. ومن دونه، تُحتسب أيضًا الحزم الأخرى لاتصال بالمنفذ نفسه كإصابات، وقد تفسد التسلسل.
4. fwknop: المفاتيح والساعات وإعادة الإرسال
- 1يجب أن يتطابق المفتاحان مع access.conf: مفتاح Rijndael ومفتاح HMAC، مع الملخّص نفسه (SHA-256 افتراضيًا).
- 2يرفض fwknopd الحزم الأقدم من MAX_SPA_PACKET_AGE (120 ثانية افتراضيًا)، لذا فإن ساعة جهاز بعيدة كثيرًا عن الوقت الصحيح تجعل كل حزمة تبدو قديمة.
- 3يمكن استخدام كل حزمة SPA مرة واحدة؛ ويُسقط fwknopd الحزمة المعاد إرسالها عن قصد.
- 4إذا كنت تطرق عبر HTTP، فيجب أن يقبل شيء ما اتصالات TCP على ذلك المنفذ، وإلا فلن يُرسل الطلب مطلقًا.
5. يفتح الباب، لكن SSH لا يزال يفشل
- 1ترتيب القواعد: يجب أن تأتي القاعدة التي تضيفها الخدمة الخفية قبل القاعدة التي تُسقط المنفذ — إذ إن iptables -A يضيفها بعد قاعدة DROP موجودة، فلا تتطابق أبدًا.
- 2النافذة: أغلق cmd_timeout أو FW_ACCESS_TIMEOUT الباب قبل اتصال SSH. اتصل ضمن النافذة؛ وتستمر الجلسات القائمة في العمل إذا كان جدار الحماية يقبل الاتصالات القائمة.
- 3يخبرك فحص المنفذ في Secret Knock بعد الطرق بما إذا كان المنفذ قد أجاب أصلًا، بشكل منفصل عن مصادقة SSH.
جميع الأمثلة على GitHub → كل إعدادات التكوين في هذه الصفحة، جاهزة للنسخ: github.com/mobilcomm/secretknock-examples (ملك عام).
أسئلة
كيف أرى ما الذي أرسله التطبيق فعليًا؟
يعرض سجل الباب كل عملية طرق مع وقتها ونتيجتها وعائلة العناوين، ويعرض المحرر عملية الطرق نفسها كأمر طرفية يمكنك تشغيله من كمبيوتر للمقارنة.