إعادة توجيه حركة المرور من IP ومنفذ إلى IP آخر ومنفذ

شيء شائع جدًا عند إدارة الخوادم هو إعادة توجيه حركة المرور.

لنفترض أن لدينا خادمًا به خدمات معينة قيد التشغيل ، ولكن لأي سبب من الأسباب قمنا بتغيير إحدى هذه الخدمات (لا أعرف ، على سبيل المثال pop3 وهو المنفذ 110) إلى خادم آخر. الشيء الطبيعي والأكثر شيوعًا هو تغيير IP في سجل DNS ، ولكن إذا كان شخص ما يستخدم IP بدلاً من المجال الفرعي ، فسوف يتأثر.

ما العمل؟ ... بسيط ، قم بإعادة توجيه حركة المرور التي يتلقاها الخادم عبر هذا المنفذ إلى خادم آخر بنفس المنفذ.

خادم عقدة الشبكة المحلية إيثرنت

كيف نبدأ في إعادة توجيه حركة المرور؟

أول شيء هو أنه يجب علينا تمكين إعادة توجيه على الخادم ، لهذا سنضع ما يلي:

echo "1" > /proc/sys/net/ipv4/ip_forward

يجب تنفيذ جميع الأوامر الموضحة في هذا البرنامج التعليمي بامتيازات إدارية ، أوصي بتنفيذها مباشرة مع المستخدم الجذر.

يمكنك أيضًا استخدام هذا الأمر الآخر ، في حالة عدم عمل الأمر السابق من أجلك (لقد حدث لي مثل هذا على CentOS):
sysctl net.ipv4.ip_forward=1
ثم سنعيد تشغيل الشبكة:

service networking restart

في توزيعات RPM مثل CentOS وغيرها ، سيكون:

service nertwork restart

الآن سننتقل إلى الشيء المهم ، أخبر الخادم من خلاله يبتابليس ما يجب إعادة توجيهه:

iptables -t nat -A PREROUTING -p tcp --dport <puerto receptor> -j DNAT --to-destination <ip final>:<puerto de ip final>

بمعنى آخر ، واتباع المثال الذي ذكرته ، لنفترض أننا نريد إعادة توجيه كل حركة المرور التي يتلقاها خادمنا عبر المنفذ 110 إلى خادم آخر (على سبيل المثال: 10.10.0.2) ، والتي ستستمر في تلقي تلك الحركة من خلال 110 (إنها نفس الخدمة):

iptables -t nat -A PREROUTING -p tcp --dport 110 -j DNAT --to-destination 10.10.0.2:110

سيرى الخادم 10.10.0.2 أن جميع الحزم أو الطلبات تأتي من عنوان IP الخاص بالعميل ، في حالة رغبتهم في استيعاب الطلبات ، أي أن الخادم الثاني يرى أن الطلبات تصل مع IP الخاص بالخادم الأول (وفي الذي نطبقه على إعادة التوجيه) ، سيكون أيضًا وضع هذا السطر الثاني:

iptables -t nat -A POSTROUTING -j MASQUERADE

بعض الأسئلة والأجوبة

في المثال ، استخدمت نفس المنفذ في كلتا المناسبتين (110) ، ومع ذلك يمكنهم إعادة توجيه حركة المرور من منفذ إلى آخر دون مشاكل. على سبيل المثال ، لنفترض أنني أريد إعادة توجيه حركة المرور من المنفذ 80 إلى 443 على خادم آخر ، فسيكون هذا:

iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 10.10.0.2:443

هذا هو يبتابليس، يمكنهم استخدام جميع المعلمات الأخرى التي نعرفها ، على سبيل المثال ، إذا كنا نريد فقط إعادة توجيه حركة المرور من عنوان IP محدد ، فسيكون ذلك بمثابة عناصر إضافية … على سبيل المثال ، سأعيد توجيه حركة المرور القادمة من 10.10.0.51 فقط:

iptables -t nat -A PREROUTING -p tcp -s 10.10.0.51 --dport 80 -j DNAT --to-destination 10.10.0.2:443

او شبكة كاملة (/ 24):

iptables -t nat -A PREROUTING -p tcp -s 10.10.0.0/24 --dport 80 -j DNAT --to-destination 10.10.0.2:443

يمكننا أيضًا تحديد واجهة الشبكة باستخدام -i :

iptables -t nat -A PREROUTING -p tcp -i eth1 --dport 80 -j DNAT --to-destination 10.10.0.2:443

النهاية!

هذا كما قلت سابقًا ، هو iptables ، يمكنك تطبيق ما هو معروف بالفعل حتى يقوم الخادم بما تريده بالضبط

تحيات!

DedicatedServer_SubImage


20 تعليقات ، اترك لك

اترك تعليقك

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها ب *

*

*

  1. المسؤول عن البيانات: ميغيل أنخيل جاتون
  2. الغرض من البيانات: التحكم في الرسائل الاقتحامية ، وإدارة التعليقات.
  3. الشرعية: موافقتك
  4. توصيل البيانات: لن يتم إرسال البيانات إلى أطراف ثالثة إلا بموجب التزام قانوني.
  5. تخزين البيانات: قاعدة البيانات التي تستضيفها شركة Occentus Networks (الاتحاد الأوروبي)
  6. الحقوق: يمكنك في أي وقت تقييد معلوماتك واستعادتها وحذفها.

  1.   فر قال

    يمكننا أيضًا القيام بذلك من جدار حماية يسمح بإعادة توجيه المنفذ ، أليس كذلك؟ (تطبيق القواعد المقابلة).

    1.    KZKG ^ جارا قال

      نعم بالطبع ، في النهاية جدار حماية مثل Pfsense أو غيره ، استخدم iptables من الخلف.

      1.    صائد قال

        على وجه الدقة ، لا يستخدم pfsense iptables ولكن pf ، تذكر أنه bsd من الداخل.

        1.    KZKG ^ جارا قال

          أوه صحيح يا سيئة!

  2.   نيكولا قال

    شكرا جزيلا على النصيحة 🙂

    لدي بعض الشكوك:
    1 - هل التغيير دائم؟ أم أنها تضيع عند إعادة تشغيل الخادم؟
    2 - لدي مثيلات متعددة (مثل A و B و C) على نفس الشبكة الفرعية. على سبيل المثال ، أ أطبق القاعدة لتوجيه حركة المرور إلى عنوان IP خارجي ، والاختبار باستخدام تجعيد الشعر من المثلين B و C ، كل شيء يعمل العجائب. المشكلة هي أنه من المثال أ لا يعمل. حاولت استخدام كل من عنوان IP الخاص بك وواجهة الاسترجاع ، ولم يعمل أي منهما:
    $ iptables -t nat -A PREROUTING -p tcp –dport 8080 -j DNAT –to-destination xxxx: 8080
    $ iptables -t nat -A PREROUTING -p tcp -i lo –dport 8080 -j DNAT إلى الوجهة xxxx: 8080

    $ curl ip-yyyy: 8080 / hello_world
    curl: (7) فشل الاتصال بمنفذ ip-yyyy 8080: تم رفض الاتصال
    مضيف محلي $ curl: 8080 / hello_world
    curl: (7) فشل الاتصال بمنفذ المضيف المحلي 8080: تم رفض الاتصال

    أي فكرة ما هي المشكلة؟

    1.    KZKG ^ جارا قال

      نعم ، يضيع التغيير عند إعادة التشغيل ، سيتعين عليك استخدام iptables-save & iptables-Restore أو شيء من هذا القبيل لتجنب ذلك.
      لم أفهم تمامًا ما تريد القيام به ، المثال أ؟

      1.    نيكولا قال

        لدي خادم لا يدعم سوى الاتصالات من عنوان IP معين (خادم A) ، ولا يمكنني أو أريد إضافة المزيد من ips إلى القائمة البيضاء (لقضايا قابلية التوسع) ، لذلك أريد أن تمر كل حركة المرور إلى الخادم الخارجي قال الخادم (أ).
        من الناحية العملية ، لدي تكوينات عالمية تحدد عنوان IP الذي يجب استخدامه لكل خدمة ، لذلك في هذه الحالة هو شيء مثل "يجب على كل من يريد استخدام الخدمة الخارجية استخدام IP A"
        لقد نجحت في تحقيق ذلك باستخدام الطريقة الموضحة في هذه المقالة ، لكنني واجهت مشكلة أنه عند تطبيقها ، لا يمكن للخادم A الوصول إلى الخدمة باستخدام عنوان IP الخاص به (ولكن جميع الخوادم الأخرى تفعل ذلك).
        أفضل ما وجدته حتى الآن هو إضافة التعيين في ملف الخادم A / etc / hosts ، مشيرًا إلى عنوان IP الخارجي ، وتجاوز الإعداد العام.

  3.   برايبوت قال

    جيد جدًا ، إذا كان لدي خادم بريد آخر ، يمكنني إعادة توجيه حركة المرور من المنفذ 143 من الخادم 1 إلى الخادم 2 وستصلني رسائل البريد الإلكتروني على الخادم 2 ، أليس كذلك؟

    تحياتي

    1.    KZKG ^ جارا قال

      من الناحية النظرية ، نعم ، إنها تعمل على هذا النحو. بالتأكيد ، يجب أن يكون خادم البريد مثبتًا بشكل صحيح على server2 🙂

  4.   MSX قال

    نوع المنشورات التي نحب قراءتها ، شكرا لك!

  5.   ابراهام ايبارا قال

    مقال ممتاز ، لدي مشروع أعمل فيه وأردت أن أطرح عليك سؤالاً ، هناك مفاتيح صناعية بوظيفة NAT (أفترض أنها تستخدم IPTables أدناه) ، لترجمة عنوان IP دون إجراء تغييرات على المعدات ، على سبيل المثال ، لدي خادم 10.10.2.1 التي تتصل بأجهزة الكمبيوتر 10.10.2.X ومن خلال المحول تمت برمجتها بحيث يمكن رؤية جهاز الكمبيوتر الذي يحتوي على العنوان 192.168.2.4 فعليًا من الخادم كـ 10.10.2.5 ، فقد ترجم عنوان IP هذا ليتم رؤيته من أجهزة الكمبيوتر الأخرى التي تحمل هذا العنوان ، أريد أن أفعل ذلك من خادم مع Ubuntu أو توزيعة أخرى ، ما هي قواعد iptables؟

  6.   ورك قال

    معلومات جيدة جدا شكرا لك ^ _ ^

  7.   ييسوس قال

    سلام عليكم.
    لدي مشكلة في محاولة القيام بإعادة التوجيه. أشرح:
    لدي خادم وكيل في Ubuntu ، مع بطاقتي شبكة:
    eth0 = 192.168.1.1 متصل ببقية الشبكة المحلية.
    eth1 = 192.168.2.2 متصل بالموجه.
    أحتاج إلى كل ما يأتي عبر eth0 للمرور عبر eth1 وأيضًا من خلال الوكيل (أستخدم Squid ، المنفذ الافتراضي الخاص به هو 3128) ، ولا يمكنني العثور على المفتاح في تكوين IPTABLES.
    لا أحتاج إلى أي قيود من أي نوع ، فقط أن يبقى السجل في سجل عناوين الويب التي تمت زيارتها.

    آمل أن تتمكن من مساعدتي لأنها مهمة مرهقة للغاية كانت تقلقني لبضعة أيام.

    غراسياس.

  8.   غابرييل قال

    صديقي ، أنا جديد جدًا على الخوادم الأخرى ، ليس لدي أي فكرة ولكني أفهم الموضوع وأتعلم بسرعة ، سؤالي هو التالي لدي خادمان serv_2 و serv_1 اللذين قمت بتوصيلهما بنفس الشبكة الداخلية ، في هذه الخوادم لديّ إعداد سحابة خاص ، أود أن أفعل ما يلي:

    أن نطاقًا معينًا من ips على سبيل المثال rangeip_1 عند وضع عنوان IP للوصول إلى السحاب الخاص (ipowncloud) يتم توجيهه نحو serv_1 وإذا كان نطاقًا آخر ، يتم وضع نفس ipowncloud إلى serv_2 ، وهذا من أجل تحديد موقع الخادمين في مدينتين مختلفتين ونطاقات IP مختلفة لكنهم جميعًا على نفس الشبكة ، سيكون هذا هو الجزء الأول ، والثاني سيكون واضحًا هو مزامنة هذين الخادمين بحيث يكونان مرايا أو أن ينصحوني بذلك من أجل تحسين العرض الفرقة ، من فضلك ، إذا كنت ستشرح لي كيفية القيام بذلك خطوة بخطوة ، وليس وضع المبرمج الفائق = (

  9.   أنطونيو كاريزوسا قال

    مرحبًا ، عفواً ، لديّ مفتاح مسؤول عن الاتصال بجميع الأجهزة التي تتكون منها شبكتي ، وبعد هذا جدار الحماية وأخيراً خروج الإنترنت ، ما يحدث هو أنني أرغب في إعادة التوجيه في التبديل وليس من الضروري الوصول إلى جدار الحماية ما لم تكن الخدمة المطلوبة هي الإنترنت.

  10.   جون قال

    باستخدام هذه الطريقة ، هل يمكنك إعادة توجيه HTTPS إلى HTTP؟

  11.   ماتي قال

    مرحبًا ، ربما يكون الوقت متأخرًا بعض الشيء ، لكنني أردت أن أسألك ، كيف يجب أن أجعل Squid لا يعدل عنوان IP الخاص بالعميل عندما أريد الاتصال بخادم ويب على نفس الشبكة؟

  12.   لافات 32 قال

    لا تعاملني بشكل سيء لسؤالي. هل يمكن القيام بذلك في Windows؟

  13.   مارتن قال

    هذه المعلومات كانت مفيدة لي. كما هو الحال دائمًا ، يمكن الوثوق بكم يا رفاق ، عندما لا أجد شيئًا باللغة الإنجليزية ، ينتهي بي الأمر عادةً بالبحث باللغة الإسبانية ، وفي تلك المناسبات تقريبًا أذهب دائمًا إلى هذا الموقع. شكرًا لكم.

  14.   صبا قال

    لدي جهاز توجيه 4G وهو عميل لشبكة لا أديرها (من الواضح أنني عميل) ... هذا الموجه هو بوابة لتلك الشبكة البعيدة من خلال OpenVPN. بالإضافة إلى ذلك ، يفي جهاز التوجيه المذكور بوظيفة توجيه المنفذ للوصول إلى المنفذ 80 لخادم إحدى تلك الشبكات الفرعية في الحقل.

    كان هذا هو الإعلان الذي اضطررت إلى وضعه في جهاز التوجيه كقاعدة مخصصة لجدار الحماية «-t nat -A POSTROUTING -j MASQUERADE»

    شكرا للمساعدة!