الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

ما هو المقصود بالVPN

مغلق
بدأه مصعب غيلان في 28 سبتمبر 2006 · 10 رد · 3,044 مشاهدة · في منتدى الشبكات العام
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته

بصراحة يا شباب انا الى الان لم استطع فهم كيف يتم ارتباط الاجهزة ببعضها البعض عبر الانترنت عن طريق الـ VPN

ما اريد معرفته هنا ليس كيفية الربط بين الاجهزة ولكن ما اريد معرفته هنا هو كيف يتم الترابط

او بمعنى اخر كيف يتم ارسال الباكت من المرسل الى المستلم بالتفصيل مع وجود NAT وPAT في شبكات الانترنت

#2

وعليكم السلام ورحمة الله وبركاته

أتمنى ان يجيب هذا الرد على تساؤلاتك حول كيفية عمل VPN.. التقنيات المستخدمة للـVPN عديدة ولو تبحث في جوجل ستجد العديد والعديد..

هذا الرد يتكلم عن كيفية عمل IPSec والذي يعتبر احد تقنيات VPN واكثرها اشنتشارا ودعما بين الأجهزة المختلفة. بعد قراءة هذا الرد، ستكون الفكرة واضحة بالنسبة لك..

حتى تطبق VPN انت لا تحتاج NAT او PAT.. لماذا؟

قبل ان تجيب، فكر قليلا في سبب اختراع الـNAT او الـPAT.. السبب هو ان الـprivate ip address استحالة يمر في سحابة الإنترنت.. لهذا السبب يتم تبديل الـprivate source ip بـ public source ip حتى ينتقل إلى الجهة المطلوبة في الإنترنت.. وعند عودة الpacket إلى الجهاز الذي قام بعملية الـNAT او الـPAT، سيقوم بعملية عكسية وهي تبديل الـdestination public ip address مع الـpviate destination ip address.. بهذه الطريقة الـclient لا يحس بعملية الـNAT او الPAT..

لو تفهم طريقة عمل الـVPN ستجد ان عملية الـNAT او الPAT ليست ضرورية.. هذه عملية الـVPN :-

نفرض عندك شبكة صغيرة كما في الرسمة التالية، وتريد الربط بين شبكة محلية A مع شبكة محلية B من خلال إحدى حلول الـVPN ولنقل على سبيل المثال IPSec وهو كما يلي:

vpntopologycl5.gif

ونفرض ان الجهاز X يريد التخاطب مع الجهاز Y..

كيف سيتمكن X من التخاطب مع Y؟

في البداية، سيرسل X بكت (packet) إلى Y.. وسيكون على هذه الصورة المبسطة (توجد حقول أخرى لم اذكرها من باب التبسيط):

basicpacketzl0.png

انظر الى source ip و destination ip.. لاحظ انهم private ولا يصلح ان يمروا في الإنترنت..

الـNAT يقوم بتبديل عنوان الـsource ip فقط.. لكن الIPSec يقوم بشيء آخر ويغنيك عن الـNAT.. فعندما يمر هذا الpacket إلى الـrouter B المبرمج لتطبيق IPSec، سيقوم بتغليف هذا الpacket داخل packet آخر ويكون على الشكل التالي:

basicipsecpacketjp6.gif

لاحظ أن الpacket صاحب الـprivate address مغلف داخل packet آخر صاحب public ip address كما هو مبين باللون الأحمر..

بهذه الطريقة سينتقل الـpacket من X إلى Y عبر سحابة الإنترنت.. القضية شبيهة بشاحنة تنقل بضائع..

عندما يستقبل الrouter A التابع لـnetwork A سيقوم بعملية عكسية، وهو إلغاء الـpacket الأحمر (الشاحنة) واسترجاع البكت الأساسي (الاسود -- البضاعة).. وبعدها سيقوم بإرسال البكت إلى الجهة المعنية، وهو host Y.. والجميل في هذه الخاصية ان Host X يتخاطب مع Host Y من دون أن يشعر أنه يمر بالإنترنت، بل يحس كما لو كان يتصل بأي جهاز تابع لشبكة محلية..

هل هذا فقط VPN؟

لا.. الذي قرأته حتى الآن هو "VN" ويعني Virtual Network.. وينقصه حرف P حتى يكون Virtual Private Network.. الذي نحتاجه هو فقط آلية تشفير للبكت الذي يتم نقله حتى لو قام هكر بإلتقاطه لا يتمكن من قراءة المحتويات.. بعبارة أخرى لن يستطيع الحصول على البضاعة..

الـ ESP ويعني Encapsulated Security Payload سيقوم بتشفير البيانات المرسلة، بحيث لو قرأءها هكر لا يفهمها..

الـ AH ويعني Authentication Header تستخدم للتأكد من سلامة الـheader.. لاننا لا نريد هكر يأتي ويقوم بعملية spoofing

وهذا هو الـIPsec ببساطة، حيث يتكون من ESP و AH..

وليس شرطا ان تستخدم ESP مع AH.. تستطيع فقط تستخدم ESP لوحده، كما انك تستطيع تستخدم AH لوحده ايضا.. لكن الاكثر أمانا هو استخدامهم مع بعضهم البعض..

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

  • من خلال كلمة سر ثابته بين router A و router B.. وهذا يدوي، يعني من باب الأمان قم بتغيير كلمة السر يدويا كل اسبوع او شهر على حسب متطلباتك.
  • من خلال طريقة ديناميكية وتتم بواسطة IKE.. وياتيك على صورة برنامج، في اليونكس في برنامج اسمه racoon، في الوندوز هذا موجود فيه من الأول ولا تحتاج برامج إضافية.. ووظيفته تغيير الكلمة السرية الخاصة بالتشفيير اوتوماتيكيا، مثلا ممكن تغير كلمة السر كل خمسة دقائق.. لكن كيف تضمن أن الهكر لا يقوم بتغيير كلمة السر عوضا من جهات موثوقة؟ حتى يعمل IKE وينسق عملية تغيير الكلمات السرية بين router A و router B يحتاج على كلمة سر أساسية متفق عليها مسبقا.. هذه الكلمة السرية المتعارف عليها مسبقة لا تستخدم للتشفير إنما فقط لتوثيق تخاطبات IKE والتي بدورها ستأتي بكلمة جديدة تستخدم بالتشفير والتي سيقوم بتغيرها (على سبيل المثال) كل خمسة دقائق من باب الأمان..

وبعدما تطبق آلية تشفير هذه، ستحصل على حرف P وسيصبح لديك VPN :)

إذا نفعتك أحد مشاركاتي فأدع بظهر الغيب لوالداي بالصحة والسلامة والسعادة وطول العمر وأن يكون هذا زيادة لهما في كل خير.

post-21836-1257612765.gif

before asking: smart questions how-to

#3

بارك الله فيك eech55.... أسلوبك رائع في الشرح....

و أريد ان اسأل سؤال... هل يجدي نفعاً لو إستخدمنا Smart Card كزيادة في الـ Security للإتصال بالـ VPN ؟؟

رأس الحكمة الإيمان بالله

#4

لا يمكن استخدام ال Smart card ي ال في بي ان كما شرح الاخ EECH55 لانها تتم بين VPN Gateways

و بالتأكيد ستزيد من الامان في حالة استعمالها في ال Remote access ليس من ناحية التشفير و لكن من ناحية عمل Mutual authentication بين السيرفر و الكلاينت

كما ان الكلاينت لن يحتاج باسوورد في هذه احالة و يمكن عمل Revoke للشهادة المستخدمة في اي وقت من قبل الادمين في حال ضياع الكارت

Mahmoud Magdy

MVP - Exchange Server. MCITP (Windows Server 2008, Exhcange Server 2010,/2007),CCNP, MCTS(OCS 2007 R2, SCCM 2007)

Tech Lead

Ingazat Information Technology

Follow me on twitter: http://www.twitter.com/_busbar

my blog: http://autodiscover.wordpress.com

Link with me on linkedin: http://www.linkedin.com/profile?viewProfile=&key=71027694

or on experts-exchange.com: http://www.experts-exchange.com/M_1426100.html

#5

شرح جميل سيد eech55 وقد استفدت منه كثيرا

لكن ما يهمني هو معرفة كيف يتم الارسال من الراوتر A الى الراوتر B . بمعنى اخر كيف يعرف الباكت الخارج من احد الروترات بانه ذاهب الى الاخر

هل تقصد بانه من الضروري عمل اعدادات على هذين الروترين

وما هي الاعدادات التي يجب علينا القيام بها في كل من الجهازين X,Y

وماذا لو ان الراوترات A,B يملكهما ISP ولا استطيع الوصول لهما

واذا اردت التوضيح مني أكثر فانا جاهز

#6
اقتباس
لكن ما يهمني هو معرفة كيف يتم الارسال من الراوتر A الى الراوتر B . بمعنى اخر كيف يعرف الباكت الخارج من احد الروترات بانه ذاهب الى الاخر

هل تقصد بانه من الضروري عمل اعدادات على هذين الروترين

أكيد.. لازم تقوم بإعدادات خاصة حتى تقوم بهذه الوظيفة..

اقتباس
وما هي الاعدادات التي يجب علينا القيام بها في كل من الجهازين X,Y

لا شيء.. الأجهزة X و Y ينظرون إلى انفسهم كما لو كانت الشبكة هكذا:-

vpntopology2ao7.gif

ومن هنا لفظة Virtual في جملة Virtual Private Network

اقتباس
وماذا لو ان الراوترات A,B يملكهما ISP ولا استطيع الوصول لهما

عندك أي Public IP address؟

اذا عندك، حينها ممكن تشتري راوتر آخر وتضعه في الشبكتين وتضع عليهم الإعدادات الازمة

او ممكن تاخذ اي جهاز كمبيوتر وتخليه gateway.. تنزل عليه يونكس ولا وندوز مافرقت، وثم تقوم بالإعدادات الازمة.. الـIPSec متسع الإنتشار بين انظمة التشغيل وأجهزة الشبكات

لكن اذا ماعندك Public ip address حينها لا تستطيع ان تقوم بأي شيء دون تدخل مزود الخدمة (بفرض ان مزود الخدمة هو الذي يتحكم بالpublic ip)

الخلاصة القضية ليست الراوتر.. القضية انه يكون عندك public ip address..

إذا نفعتك أحد مشاركاتي فأدع بظهر الغيب لوالداي بالصحة والسلامة والسعادة وطول العمر وأن يكون هذا زيادة لهما في كل خير.

post-21836-1257612765.gif

before asking: smart questions how-to

#7
اقتباس
وماذا لو ان الراوترات A,B يملكهما ISP ولا استطيع الوصول لهما

في مصر ممكن تطلب من موزع الخدمة ان يقوم بالتعريفات اللازمة

اقتباس
او ممكن تاخذ اي جهاز كمبيوتر وتخليه gateway.. تنزل عليه يونكس ولا وندوز مافرقت، وثم تقوم بالإعدادات الازمة.. الـIPSec متسع الإنتشار بين انظمة التشغيل وأجهزة الشبكات

لي ملاحظة انه لازم في هذه الحالة يكون الراوتر بيدعم ال NAT-T لو حيتسعمل IPSEC

مع العلم انه ممكن تعمل ال Tunnel بال PPTP عادي

Mahmoud Magdy

MVP - Exchange Server. MCITP (Windows Server 2008, Exhcange Server 2010,/2007),CCNP, MCTS(OCS 2007 R2, SCCM 2007)

Tech Lead

Ingazat Information Technology

Follow me on twitter: http://www.twitter.com/_busbar

my blog: http://autodiscover.wordpress.com

Link with me on linkedin: http://www.linkedin.com/profile?viewProfile=&key=71027694

or on experts-exchange.com: http://www.experts-exchange.com/M_1426100.html

#8
اقتباس
لي ملاحظة انه لازم في هذه الحالة يكون الراوتر بيدعم ال NAT-T لو حيتسعمل IPSEC

عن أي حالة تتحدث؟

  1. عند حالة توفر public ip
    أحسبك تتحدث عن هذه الحالة، لأنك اخذت نص مقتبس من ردي عندما كنت اتكلم عن حالة توفر public IP address
    NAT-T غير مطلوب في هذه الحالة :).. نحن نحتاج NAT-T فقط في حالة كان بين الـIPSec gateways حائط ناري أو راوتر يقوم بـNAT.. حينها سنضطر لإستخدام هذه الخاصية
  2. عند حالة عدم توفر public ip
    في هذه الحالة، نحن نحتاج إلى NAT-T لتجنب مشاكل الـNAT المتعلقة بالـIPsec حيث ان بين الخادم والكلاينت راوتر او حائط ناري يقوم بـNAT

ملاحظة: في حال كنت في بيئة NAT، كما هو في الحالة الثانية، يجب عليك أن لا تستخدم AH - Authentication Headers.. لان الـNAT سيقوم بتغيير الـheader، وهذا سيجعل الـheader غير صالح للإستخدام عندما يقرأه الIPSec gateway.

يوجد حل معقد بالنسبة للحالة هذه "وماذا لو ان الراوترات A,B يملكهما ISP ولا استطيع الوصول لهما" من دون تدخل مزود الخدمة على الاطلاق. لكن كما قلت معقد.. واذا حد مهتم بالطريقة سأشرح الكيفية، لكن هذه ليست منتشرة.. ولهذا السبب في ردي السابق قلت انه لا تستطيع ان تقوم بشيء، لكن الحقيقة انك تستطيع لكن معقد قليلا..

إذا نفعتك أحد مشاركاتي فأدع بظهر الغيب لوالداي بالصحة والسلامة والسعادة وطول العمر وأن يكون هذا زيادة لهما في كل خير.

post-21836-1257612765.gif

before asking: smart questions how-to

#9
اقتباس
عند حالة عدم توفر public ip

في هذه الحالة، نحن نحتاج إلى NAT-T لتجنب مشاكل الـNAT المتعلقة بالـIPsec حيث ان بين الخادم والكلاينت راوتر او حائط ناري يقوم بـNAT

هذا هو ما اقصده

Mahmoud Magdy

MVP - Exchange Server. MCITP (Windows Server 2008, Exhcange Server 2010,/2007),CCNP, MCTS(OCS 2007 R2, SCCM 2007)

Tech Lead

Ingazat Information Technology

Follow me on twitter: http://www.twitter.com/_busbar

my blog: http://autodiscover.wordpress.com

Link with me on linkedin: http://www.linkedin.com/profile?viewProfile=&key=71027694

or on experts-exchange.com: http://www.experts-exchange.com/M_1426100.html

#10
اقتباس
يوجد حل معقد بالنسبة للحالة هذه "وماذا لو ان الراوترات A,B يملكهما ISP ولا استطيع الوصول لهما" من دون تدخل مزود الخدمة على الاطلاق. لكن كما قلت معقد.. واذا حد مهتم بالطريقة سأشرح الكيفية، لكن هذه ليست منتشرة.. ولهذا السبب في ردي السابق قلت انه لا تستطيع ان تقوم بشيء، لكن الحقيقة انك تستطيع لكن معقد قليلا..

بالطبع انا أريد معرفته

دعني اخمن قليلا .....................

هل تقصد استخدام وسيط في الانترنت :D

#11

استخدام وسيط يصلح.. لكن الحل الذي عندي يصلح حتى لو لم يكن هناك وسيط..

مثلا في حالة كان عندك وسيط، من صفات الوسيط انه يكون كالتالي:

1- يحمل public ip address

2- يمكن ماعنده public ip address لكنه بجوار راوتر يقوم بـ static PAT او static NAT.. يعني بمجرد ان يشاهد الراوتر request على منفذ معين (مثلا منفذ 80) سيوجهه على الخادم المعني.

لكن الحالة التي اتكلم عنها، هي حالة اكثر صعوبة حيث لا تملك أي public ip كما انك لا تملك القدرة في التحكم على الراوتر لإعداد static pat or static nat

كيف يتخاطب جهازين مع بعضهم البعض وكلاهما جوار Dynamic NAT/PAT ولا يوجد وسيط ولا يملكان Public ip او static nat؟

الطريقة بسيطة.. :D قلت معقدة حتى لا تسأل ههههههههه (امزح).. لكن يبدوا عقلك جائع جدا.. الله يزيدك علم :)

هذه الرسمة توضح السيناريو

patcheattopux5.gif

الطريقة بسيطة.. هي كالتالي:

1- host A يرسل Packet إلى 200.200.200.200 على (مثلا) UDP منفذ 33 وصادر من (مثلا) منفذ 22:

وطبعا عندما يصل البكت إلى Router B سيتم اسقاطه لانه الراوتر لا يحتوي على خادم يجيب ذلك الطلب في اغلب الظن.. لكن هذا لا يهم، الهدف من هذا البكت هو فقط فتح منفذ في الـNAT translation table في الـ Router A.. ويكون شكله تقريبا كالتالي:

local ip	  local src port	 global ip				  global src port
10.1.1.1	22				   100.100.100.100	   2244

لاحظ قسم الـglobal ip والـglobal port.. هذا يعني اي طلب يتم إرساله على 100.100.100.100 وعلى منفذ 2244 سيتم توجيهه على 10.1.1.1 و منفذ 22.. وهذه فكرة الNAT او ان صح التعبير PAT (العديد يسمي PAT ايضا NAT ويعتبر وصف غير دقيق لكن الكثرة غلبت القلة)

وهذا سيبقى في الراوتر مدة معينة تعتمد على الإعدادات في الراوتر (دقيقة؟ خمس دقائق؟ يعتمد على الإعدادات).. و سيتم إزالتها بعد فترة معينة من الزمن في حال عدم استخدامها.. لكننا نحن سنستخدمها

2- host B يرسل Packet إلى 100.100.100.100 على منفذ UDP 2244:

بعد ارسال البكت هذا، الـnat translation table في router B سيكون تقريبا كهذا:

local ip	  local src port	 global ip				  global src port
10.2.2.2	22				   200.200.200.200	   4435

بالإضافة إلى ان البكت هذا سيصل إلى host A والذي بدوره سينظر إلى الـsource port ويعلم انه إذا أراد التخاطب مع host B عليه الإرسال على منفذ 4436 و آي بي 200.200.200.200

لكن هناك سؤال، واحتمال كبير انكم سألتكم انفسكم هذا.. كيف علم host B على اي منفذ عليه ان يرسل البكت؟ يعني كيف علم host B أن router Aاختار منفذ رقم 2244 في الـNAT translation table بالرغم ان الpacket لم يصل إليه؟

ممكن بالفلود.. يجرب ارقام المنافذ إلى ان تظبط إحداها..

مثال لتطبيق عملي؟

هذا script تمت كتابته بواسطة حبيبة القلب اللغة الشهيرة Perl

الإسكربت هذا يقوم بإستخدام الـcore functions/modules بالتالي لا تحتاج تثبيت اي شيء وحسبك تثبيت Perl

لو كنت على اليونكس فيكاد لا يوجد نظام تشغيل إلا ويحتوي على نسخة من perl

لو كنت على الوندوز جرب ActivePerl وهو مجاني

الكود بسيط وفكرته سهلة وممكن أي مبرمج يقرأ الكود ويكتبه بأي لغة أخرى :)

الإسكربت مرفق مع هذا الرد.. ضغطه بصيغة rar من اجل سواد عيون الextention.. لان pl. غير مسموح بتحميله

ملاحظة حول الإسكربت: الإسكربت لا يحتوي على آلية معينة لتخمين رقم المنفذ الذي اختاره Router A.. يعني لا يقوم بـflood.. لذا عليك إيجاد رقم المنفذ يدويا (تصلح للتجارب والتعلم فقط).. الإسكربت يحتاج إلى تطوير وتعديل وهذا واضح من خلال قراءة الكود..

script.rar

تم تعديل هذه المشاركة بواسطة eech55 في 30 سبتمبر 2006 في 09:58

إذا نفعتك أحد مشاركاتي فأدع بظهر الغيب لوالداي بالصحة والسلامة والسعادة وطول العمر وأن يكون هذا زيادة لهما في كل خير.

post-21836-1257612765.gif

before asking: smart questions how-to

هذا الموضوع مغلق.

مواضيع مشابهة