[LinuxFocus-icon]
الأولى  |  الخارطة  |  فهرس  |  بحث

أخبار | محفوظات | روابط | عن المجلة
This document is available in: English  Castellano  Deutsch  Francais  Italiano  Nederlands  Turkce  Arabic  

Atif Ghaffar
المؤلف Atif Ghaffar
<aghaffar(at)developer.ch>

نبذة عن الكاتب:

أسكن في سويسرا و أعمل مدير وب و يونكس، انشغالاتي هي لينكس و يونكس و برل و أباش و برامج GPL.، زر موقعي



ترجمه إلى العربية:
Taha Zerrouki <taha(at)linuxfocus.org>

الفهرس:

 

استعمال Apache Proxy Pass للبلوغ إلى خوادم خلف قناع المضيف

أباش

نبذة مختصرة:

لدي شبكة خاصة في البيت تعمل بلينكس و استعمل قناع IP، وكل الأجهزة تبلغ الإنترنت، لكن من الإنترنت لا أبلغ سوى الجهاز الذي يعمل قناعا.
في آخر مقال لي عن أباش شرحت إعادة استعمال عناوين IP و الآن سأشرح كيفية الولوج إلى خادم الوب خلف جدار النار من الإنترنت دون تغيير قواعد الجدار و لا التأثير في أمن الشبكة. سنتعلم استعمال قواعد Apache Proxy Pass من اجل ذلك ( هذا المقال يعنى بالشبكات الصغيرة).



 

المشاكل مع قناع ip

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

 

أباش سينجدني : ProxyPass

بعد التحري و التجربة، اعتمدت على أباش و توجيهته ProxyPass .
ProxyPass يتطلب mod_proxy لتصريفه، أو يصرف كوحدة مع خادم أباش. و إليك تعريف ProxyPass من خلال دليل أباش.

ProxyPass

Syntax: ProxyPass <path> <url>
Default: None
Context: server config, virtual host
Override: Not applicable
Status: Base
Module: mod_proxy
Compatibility: ProxyPass متوفر فقط لـ Apache 1.1 و أكثر.

هذه التوجيهة تسمح للخوادم البعيدة أن تدخل في نطاق الخادم المحلي الذي يعمل كأنه proxy عادي بيد انه يبدو و كأنه مرآة للخوادم البعيدة.
< path > اسم الملف الافتراضي، <url> عنوان الوب للأجهزة البعيدة.

لنفرض أن الخادم المحلي له العنوان http://wibble.org/ إذن

   ProxyPass /mirror/foo/ http://foo.com/
كل طلب محلي للعنوان http://wibble.org/mirror/foo/bar سوف يحول إلى طلب http://foo.com/bar .

 

 

مثال واقعي

قرن خادم الفيديو الداخلي بخادم خارجي
شبكة الإنترنت: hometranet.home 192.168.1.0/255.255.255.0
(كما يوجد انترنت و انترانت و اكسترانت فأنا أسمي شبكتي المنزلية منزل-نت).
الشبكة الخارجية: developer.ch 193.192.254.50

خادم الفيديو الداخلي موجود على الجهاز cam.hometranet.home يخدم
دفق الصور على الرابط http://cam.hometranet.home:5555/cams/sony/stream
و
و يبقي الصور من الكاميرة في http://cam.hometranet.home:5555/cams/sony/image
أريد أن أشاهد النتيجة من خلال هذا العنوان.
http://mozilla.developer.ch/stream
و
http://mozilla.developer.ch/image
هذا يمكن القيام به بكل سهولة بواسطة توجيهة ProxyPass مع أباش بإضافة هذه الأسطر إلى httpd.conf أو srm.conf

ProxyPass /video http://cam.hometranet.home:5555/cams/sony/stream
ProxyPass /video http://cam.hometranet.home:5555/cams/sony/stream
ثم أعد تشغيل خادم الوب (إن كان mod_proxy متوفرا), http://mozilla.developer.ch/image يجيب عن الاستعلامات .
بالنسبة للمستعملين ، كل شيء شفاف و لا يوجد تأثير على العموم على الأمن في الشبكة..
*I used the word almost, because there is no such thing as total security on the internet :)

   

اقتران الخوادم الافتراضية

تستطيع استعمال ProxyPass لتحويل أجهزة افتراضية إلى أجهزة أخرى مثلا..
docs.sun.developer.ch ستقترن بـ solsparc.hometranet.home

NameVirtualHost 193.192.254.50
<VirtualHost 193.192.254.50>
     ServerName sun.docs.developer.ch
     ProxyPass / http://solsparc.hometranet.home/
     TransferLog /net/www/logs/sun.docs.access
     ErrorLog    /net/www/logs/sun.docs.errror
</VirtualServer>
يمكنك التوجيه إلى المضيفات بعنوانيها
<VirtualHost 193.192.254.50>
     ServerName sun.docs.developer.ch
     ProxyPass / http://192.168.1.7/
     TransferLog /net/www/logs/sun.docs.access
     ErrorLog    /net/www/logs/sun.docs.errror
</VirtualServer>
 

تنبيهات

بما أن خادم الوب يرسل طلبات إلى الخادم الداخلي من وراء الزبائن، لا نستطيع معرفة طرق الأجهزة عليك تخزين كل الطلبات في الجهاز الباعث. .
في المثال السابق تأتي الطلبات في sun.docs.developer.ch بدلا من solsparc.hometranet.home
نتائج الدخول sun.docs.developer.ch ( نتائج dummy)

197.0.22.3 - - [05/Nov/1999:22:09:04 +0100] "GET /index.html HTTP/1.0" 304 -
187.0.45.67 - - [05/Nov/1999:22:09:04 +0100] "GET /navi.html HTTP/1.0" 304 -
177.0.5.45 - - [05/Nov/1999:22:09:04 +0100] "GET /entrees.html HTTP/1.0" 304 -
227.0.9.67 - - [05/Nov/1999:22:09:15 +0100] "GET /complets.html HTTP/1.0" 304 -
137.0.7.23 - - [05/Nov/1999:22:09:19 +0100] "GET /menu_poisson.html HTTP/1.0" 200 841
193.192.245.73 - - [05/Nov/1999:22:09:25 +0100] "GET /volailles.html HTTP/1.0" 304 -
192.167.0.1 - - [05/Nov/1999:22:09:44 +0100] "GET /agneau.html HTTP/1.0" 304 -
نتائج الدخول إلى solsparc.hometranet.home
192.168.1.1 - - [05/Nov/1999:22:09:04 +0100] "GET /index.html HTTP/1.0" 304 -
192.168.1.1 - - [05/Nov/1999:22:09:04 +0100] "GET /navi.html HTTP/1.0" 304 -
192.168.1.1 - - [05/Nov/1999:22:09:04 +0100] "GET /entrees.html HTTP/1.0" 304 -
192.168.1.1 - - [05/Nov/1999:22:09:15 +0100] "GET /complets.html HTTP/1.0" 304 -
192.168.1.1 - - [05/Nov/1999:22:09:19 +0100] "GET /menu_poisson.html HTTP/1.0" 200 841
192.168.1.1 - - [05/Nov/1999:22:09:25 +0100] "GET /volailles.html HTTP/1.0" 304 -
192.168.1.1 - - [05/Nov/1999:22:09:44 +0100] "GET /agneau.html HTTP/1.0" 304 -
192.168.1.1 - - [05/Nov/1999:22:09:56 +0100] "GET /desserts_ind.html HTTP/1.0" 304 -
192.168.1.1 - - [05/Nov/1999:22:10:00 +0100] "GET /cocktails.html HTTP/1.0" 304 -
192.168.1.1 - - [05/Nov/1999:22:10:10 +0100] "GET /cgi-bin/commande.cgi HTTP/1.0" 200 2146
نفس الشيء بالنسبة إلى توجيهات عنوان IP و ACL ( قائمة مراقبة الولوج Access Control List) إذا أردت أن تمنع أجهزة أو الحق في الاتصال ببعض عناوين IP هذا يجب أن يكون في الخادم الرئيسي بدلا من الخادم المحلي.

تستطيع استعمال الملفات و توجيهة FileMatch أمثلة:
<VirtualHost 193.192.254.50>
     ServerName sun.docs.developer.ch
     #هذه القاعدة تسمح فقط للمستعملين من نطاق good.host.com
     <Location /private>
          order deny,allow
          deny from all
          allow from good.host.com
     </Location>
     # هذه القاعدة تمنع احتطار متصفح مايكروسوفت.
     BrowserMatch MSIE uncool_browser
     <Location /coolpages>
         order allow,deny
         allow from all
         deny from env=uncool_browser
     </Location>
     # هذه تسمح للمستخدمين ذوي كلمات السر في الملف passwd.httpd
     <Location /coolpages>
         AuthName "only for registered users"
         AuthType Basic
         AuthUserFile "/etc/httpd/passwd.httpd"
         <Limit GET>
              require valid-user
         </Limit>
     </Location>

     ProxyPass / http://192.168.1.7/
     TransferLog /net/www/logs/sun.docs.access
     ErrorLog    /net/www/logs/sun.docs.errror
</VirtualServer>

 

   

مصادر إضافية

[Apache mod_proxy documentation]
http://www.apache.org/docs/mod/mod_proxy.html
[Apache name-based Virtual Host Support]
http://www.apache.org/docs/vhosts/name-based.html
[Apache Virtual Host documentation]
http://www.apache.org/docs/vhosts/index.html
 

 

 

تعقيبك على هذا المقال

لكل مقال صفحة خاصة بالتعقيبات، أرسل تعقيبا أو اطلع على تعقيبات الآخرين.
 صفحة التعقيبات 

الصفحات برعاية طاقم لينكس فوكُس
© Atif Ghaffar, FDL
LinuxFocus.org

اضغط هنا للتنبيه عن خطأ أو لارسال ملاحظاتك إلى لينكس فوكُس
معلومات عن الترجمة:
en --> -- : Atif Ghaffar <aghaffar(at)developer.ch>
en --> ar: Taha Zerrouki <taha(at)linuxfocus.org>

2002-02-23, generated by lfparser version 2.26