..::آبی دل::..
متخصص بخش
آموزش تنظيمات Tcp/ ip در لينوكس
قبل از تصميم گيري براي نصب و راه اندازي TCP\IP بر روي لينوكس بايد از آماده بودن فايل سيستم براي اين كار مطمئن شويد. براي اين كار كافي است چند گام ساده را طي كنيد. نخست آنكه بايد از نصب بودن نرم افزار شبكه اطمينان بيابيد. اين موضوع در زمان نصب لينوكس از كاربر سوال مي شود و در اكثر مواقع و در بيشتر توزيع هاي لينوكس بهصورت پيش فرض انتخاب شده است. توجه داشته باشيد كه دايركتوري proc \ يكي از مكان هايي است كه اطلاعات شبكه اي لينوكس در آنجا ذخيره مي شود. وجود اين دايركتوري يكي از نشانه هاي نصب بودن امكانات شبكه اي در لينوكس است. زماني كه از محتويات دايركتوري proc \ ليست مي گيريد (يعني با دستور cd به اين مسير برويد و سپس فرمان ls را اجرا كنيد). در صورتي كه دايركتوري proc \ در سيستم شما موجود نباشد به احتمال زياد ناگزير خواهيد بود كه كرنل سيستم عامل خود را مجددا” كامپايل كرده و گزينه \proc را برگزينيد. به اين منظور بايد به دايركتوري سورس لينوكس يعني \usr\src\linux تغيير مسير داده و روتين تنظيمات (يا configuration ) كرنل را اجرا كنيد. دستور اين كار چنين است:Make config اگر در محيط گرافيكي X-windows كار مي كنيد،مي توانيد از ابزارهاي گرافيكي استفاده كرده و دستور مقابل را تايپ كنيد: Make xconfig در زمان كامپايل كرنل از شما سوال مي شود كه آيا به پشتيباني از procfs نياز داريد يا خير.به اين مورد پاسخ مثبت دهيد. همين موضوع باعث ساخته شدن دايركتوري \proc در سيستم شما خواهد شد. دايركتوري \proc هميشه در زمان راه اندازي لينوكس به طور خودكار mount مي شود. وجود خطي مشابه با خط زير در فايل \etc\fstab شرايط mount خودكار اين دايركتوري را فراهم مي كند. None \ proc proc defaults گام بعدي كه قبل از نصب و راه اندازي TCP\IP لازم است برداشته شود،انتخاب نام ميزبان (hostname ) سيستم است. براي اين كار مي توان از دستور مقابل استفاده كرد: Hostname…name… در دستور بالا به جاي name نام مورد نظر خود را براي ميزبان قرار دهيد. در اينجا ذكر اين نكته ضروري است كه اگر سيستم شما در شبكه قرار دارد و در نتيجه داراي يك نام domain كامل هستيد،مي توانيد در دستور فوق از نام كامل سيستم و Domain استفاده كنيد. مثلا” : Hostnameyourname.yourdomain.com در هر صورت يك ورودي جديد در فايل etc\hosts\ ساخته خواهد شد كه منعكس كننده نتيجه اجراي دستور بالاست. توصيه مي شود كه از اين موضوع براي اطمينان از صحت عملكرد دستور قبلي حتما” استفاده كنيد. نكته ديگري كه بايد قبل از راه اندازي TCP\IP بر روي سيستم خود در نظر بگيريد آن است كه بايد يك نشاني IP براي شناسايي سيستم خود در شبكه انتخاب كنيد. به طور معمول فايل etc\netyworks شامل تمامي نام ها و نشاني هايي است كه سيستم شما در شبكه با آن ها سرو كار دارد. نرم افزارهاي كاربردي از اطلاعات موجود در اين فايل براي تعيين نشاني هاي مقاصد منابع موجود در شبكه استفاده مي كنند. در فايل etc.networks دو ستون براي فهرست كردن نام سمبوليك و نشاني IP منابع شبكه در نظر گرفته شده است. در بسياري از موارد در فايل هاي etc\networks مدخلي براي درايور loopback وجود دارد. در زير نمونه اي از يك فايل etc\networks آورده شده است: Loopback 12.0.0. Marlin-net 147.154.0 BNR 47.0.0.0 در نمونه فايل فوق،دو شبكه به همراه نشاني هاي IP آن ها ثبت شده اند. توجه داشته باشيد كه در نشاني هاي IP فقط بخش شبكه در نشاني IP ذكر شده است و به جاي بخش انتهايي نشاني ها،صفر قرار داده شده است.
رابط شبكه
يكي از كارهاي ديگري كه در شبكه بندي لينوكس بايد انجام شود،تعيين رابط شبكه براي سيستم عامل و ديگر ابزارهاي نرم افزاري آن است. اين كار توسط دستور ifconfig انجام مي شود. اجراي اين دستور به همراه ذكر نشاني IP باعث مي شود تا لايه شبكه كرنل لينوكس بتواند با رابط شبكه ارتباط برقرار كند. بدين ترتيب سيستم عامل مي تواند از طريق رابط شبكه به تبادل اطلاعات با دنياي خارج بپردازد. كاربر بايد به ازاي هر يك از درايوهاي شبكه،رابط هاي شبكه مربوط را برپاكند،بدين معني كه بايد براي هر يك از درايوهاي شبكه،رابط هاي شبكه مربوط را بر پا كند. بدين معني كه بايد براي هر يك از درايوهاي ppp ,loopback و يا اترنت،يك بار فرمان ifconfig اجرا شود. ترتيب كار به صورت زير است: ifconfig interface-name ip- address در دستور بالا،به جاي interfacename بايد نام اختصاري درايور قرار داده شود. بعد از آن كه دستور ifconfig اجرا شد و در نتيجه رابط شبكه فعال گرديد. كاربر بايد از دستور route براي ايجاد و يا حذف مسيرها در جدول مسير يابي (routing table ) كرنل استفاده كند. اين عمل از آن جهت اهميت دارد كه سيستم بتواند توسط جدول مسيريابي ،ديگر منابع شبكه را بيابد. از دستور فوق به صورت زير استفاده مي شود: Route add\delip-address توجه داشته باشيد در هر مورد استفاده از دستور فوق بايد يكي از حالات add يا del بكار برده شوند. در صورتي كه بخواهيد محتويات فعلي جدول مسيريابي سيستم را مشاهده كنيد،مي توانيد به اين صورت عمل كنيد: $ Route (يعني استفاده از دستور route بدون هيچ سوئيچ ) اگر اين دستور را اجرا كنيد،ممكن است چيزي شبيه متن زير ببينيد.(در اين مثال،سيستم مورد نظر فقط داراي مدخل درايور loopback بوده است)
$route
Kernel Routing table
Destination Gateway Genmask Window Use Lface
Loopback *255.0.0.0u1936 0 16 lo
يادآوري مي كنيم كه يك روش ديگر نمايش داده هاي جدول مسيريابي ،استفاده ا زدستور مقابل است: Netstat –rn در دستور فوق سوئيچ r باعث نمايش جدول مسيريابي و سوئيچ n منجر به نمايش نشاني هاي ip به جاي اسامي نمادين مي شوند. در جداول مسيريابي ستون هايي كه اهميت دارند. ستون مربوط به نام مقصد مثلا” loopback ،ستون مربوط به ماسك مانند Genmask و نهايتا” ستون نام رابط شبكه هستند. شما مي توانيد توسط دستور route به همراه سوئيچ n ،داده هاي جدول مسيريابي را به صورتي مشاهده كنيد كه در آن به جاي اسامي سمبوليك،از نشاني هاي ip استفاده شده باشد. همان طور كه قبلا” اشاره شد،در شرايط معمول سيستم هاي مجهز به سيستم عامل لينوكس داراي يك رابط loopback و يك رابط شبكه نظير اترنت هستند كه بايد به ترتيب تنظيم شوند.
تنظيم رابط loopback
همان طور كه قبلا” اشاره كرديم ،رابط loopback توسط برخي از نرم افزارها براي كاركرد طبيعي مورد استفاده قرار مي گيرد.از آن گذشته تعداد ديگري از نرم افزارهاي كاربردي تحت لينوكس نيز از اين رابط براي كاربردهاي عيب يابي كمك مي گيرند. يادآوري مي كنيم كه نشاني ip يك رابط شبكه loopback به صورت 127.0.0.1 نوشته مي شودو فايل etc\hosts\ بايد يك ورودي براي loopback باشد. در اين جا مناسب است كه خاطر نشان كنيم كه نشاني loopback را مي توان به صورت هاي گوناگوني نوشت و اصولا” هر نشاني به فرم 127.x.x.x (x به معني عددي بين 0 تا 255 است) پذيرفتني است. اينكه چرا عادت كرده ايم كه از يونيكسي اوليه چنين مرسوم بوده است. در صورتي كه ورودي مربوط به رابط loopback در فايل \etc\hosts ثبت نشده ifconfig lo استفاده كنيم.
تنظيم رابط اترنت
براي تنظيم اترنت (مثلا” كارت شبكه) هم مي توانيد همان مراحل قبلي را مجدد تكرار كنيد. فقط توجه داشته باشيد كه نام رابط شما چيزي مانند eth0 يا eht 1 است و نشاني ip را نيز بايد به نشاني ip انتخابي خود تغيير دهيد. در اين جا زماني كه قصد اجراي دستور ifconfig را براي رابط شبكه داريد،نيازي به مشخص كردن ماسك شبكه نخواهيد داشت. زيرا سيستم عامل مي تواند مقدار پارامتر ماسك را به طور خودكار از نشاني ip داده شده به دست آورد. به عنوان مثال مي توانيد براي ثبت نشاني 147.123.20.1 از يكي از خطوط زير استفاده كنيد:
Ifconfig 147.123.20.1 ifconfig 147.123.20.1 nemask 255.25.255.0 براي بررسي صحت انجام عمليات مي توانيد بار ديگر از دستور ifconfig eht 0 استفاده كنيد. نشاني Broadcast بر اساس نشاني ip سيستم محلي تنظيم شده است. اين عمل از آن جهت توسط TCP\IP انجام مي گيرد كه تمام سيستم هاي موجود در شبكه به يك باره در دسترس قرار گيرند. مقدار و اندازه Maximum Transfer Unit هم به طور معمول بر اساس استانداردهاي شبكه هاي اترنت به مقدار حداكثر مجاز يعني 1500 تنظيم مي شود. همان طور كه مي دانيد گام بعدي اضافه كردن نشاني اترنت به جدول مسيريابي كرنل است . نشاني ip مورد نياز براي همراهي در دستور route همان نشاني شبكه بدون ذكر پارامتر محلي است . براي آنكه تمام شبكه محلي را در يك نوبت پوشش دهيم،از گزينه net در دستور route كمك مي گيريم. در نتيجه شكل استفاده از دستور route براي مثال ما به صورت زير خواهد بود:Route add –net 147.123.20.0 اين دستور تمامي سيستم هاي موجود در شبكه محلي را كه توسط نشاني 147.123.20.0 شناسايي مي شوند، را به جدول مسيريابي اضافه مي كند. در سيستم هاي موجود در شبكه را به صورت دستي به جدول مسيريابي اضافه كنيد. روش ديگر آن است كه از فايل \etc\networks فقط براي مشخص كردن بخش فهرست هايي از نام ها و نشاني هاي ip باشد،به عنوان مثال در صورتي كه در اين فايل ،ورودي مربوط به شبكه اي به نام foobamet داشته باشيم،مي توانيم تمام شبكه كمك دستور زير به جدول مسيريابي اضافه كنيم: Route add foobar-net استفاده از فايل etc\networks اين اشكال امنيتي را به همراه دارد كه به تمام سيستم هاي موجود در شبكه اجازه دسترسي و مجوزهاي يكساني داده مي شود. پس از آنكه مسيرها به جدول مسيريابي كرنل اضافه شدند،مي توانيد براي بررسي صحت تنظيمات،از دستور ping براي هر يك از سيستم هاي شبكه استفاده كنيد. براي اين كار يا بايد نام سيستم مقصد را داشته باشيد و يا آنكه نشاني ip آن را بدانيد. اين اطلاعات مي توانند از طريق فايل \etc\hosts و يا سرويسي مانند DNS به دست آيند. پس از آنكه مراحل فوق به درستي انجام گرديدند،سيستم لينوكس شما قادر خواهد بود كه به هر يك از سيستم هاي موجود در شبكه محلي توسط پروتكل TCP\IP متصل شود. در صورتي كه شبكه مورد نظر كوچك باشد،اين عمل كفايت مي كند و كار در همين جا خاتمه يافته مي شود . اما در شبكه هاي بزرگتر و يا شبكه هايي كه از پروتكل هاي ويژه اي استفاده مي كنند و يا در آن ها Gateway به كار رفته باشد،نياز به طي مراحل ديگري وجود خواهد داشت. در صورتي كه قصد اضافه كردن سيستم هاي ديگري را به شبكه داشته باشيد كه از TCP\IP استفاده مي كنند،مي توانيد همانند مراحل قبلي ،نام و نشاني IP هاي آن ها را به فايل \etc\hosts اضافه كنيد. سيستم هايي به نام godzilla و godzilla.tpci ،مجهز به سيستم عاملي (كه از TCP\IP پشتيباني مي كند)هستند. و قادرند به كمك teinet يا ftp به سيستم لينوكسي ما متصل شوند (توجه داشته باشيد كه كاربر چنين سيستم هايي فقط زماني قادر خواهد بود به سيستم شما login كند كه مجوزهاي مربوط را براي آنها تنظيم كرده باشيد.) در صورتي كه نام يا نشاني يك سيستم راه دور در فايل \etc\hosts ثبت شده باشد،شما قادر خواهيد بود كه توسط ابزارهايي مانند telnet يا ftp با آن سيستم ارتباط داشته باشيد.
Name service و Name resolver
پروتكل TCP\IP از ورودي هاي فايل \etc\hosts براي ترجمه اسامي به نشاني هاي IP استفاده مي كند. به عنوان مثال،زماني از نامي مانند darkstar را در آن بيابد. در صورتيكه چنين ورودي در اين فايل موجود نباشد، شما قادر به اتصال چنين سيستمي نخواهيد بود. اما تصور كنيد كه تعداد سيستم هاي موجود در شبكه زياد باشند و شما قصد اتصال به تعداد بيشتري از سيستم ها را داشته باشيد و در اين صورت تنظيم و اضافه كردن يكايك نام ها و نشاني هاي ip به جدول مسيريابي كاري خسته كننده و زمان برخواهد بود. سرويس BIND كه مخفف عبارت Beekeley internet Name Domain Service است براي حل اين مشكل ايجاد شده است. بعدها BIND در DNS يا Domain Name System نيز پياده سازي شد. در حال حاضر اكثر توزيع هاي لينوكس به BIND مجهز هستند و در بعضي از نسخه ها هم DNS از قبل پياده سازي شده است. BIND و DNS هر دو مقوله هاي پيچيده اي هستند كه بسياري از كاربران لينوكس را فراري مي دهند. در صورتي كه شبكه شما به يك DNS سرور متصل باشد و يا آنكه قصد استفاده ا زسرور DNS ISP را داشته باشيد،نيازي به اجراي BIND بر روي سيستم خود نخواهيد داشت. اما در عوض بايد سيستم خود را به گونه اي تنظيم كنيد كه قادر به استفاده از سرور DNS باشد. در چنين مواقعي،به جاي آن كه نام ها و نشاني هاي يكايك سيستم هاي متصل به شبكه را به فايل \etc\hosts اضافه كنيد،كلانيت DNS و يا مجموعه اي از روتين هاي كتابخانه اي در لينوكس،فراخواني مي شوند و با استفاده از سرور DNS نام هاي مورد نظر را به نشاني هاي مربوطه آن ها ترجمه يا Resolver مي كنند. Name Resolver توسط فايل \etc\resolv.conf تنظيم مي شود. به طور معمول اين فايل شامل راهنماي (directive ) جستجو و راهنماي Name server است. راهنماي جستجو به شكل زير به كار برده مي شود: Searchdomain 1 domain2 domainN در عبارت فوق هر يك از domain ها توسط فهرستي از پسوندهاي دامنه اي جايگزين مي شوندكه Name Resolver به اسامي ميزباني اضافه مي كند كه به صورت كامل مشخص نشده باشد.به عنوان مثال،راهنماي جستجوي زير توجه كنيد: Search xyz.com us.xyx.com europe.xyz.com در صورتي كه نامي مانند http://www.abc.com به كار گرفته شده باشد،مي گوييم كه اين نام به صورت كامل بيان شده است. در چنين وضعيتي ،از راهنماي جستجو استفاده نخواهد شد. اما اگر يك سرويس TCP\IP از نامي مانند WWW استفاده كند كه به شكل كامل نيست،در اين صورت راهنماي جستجو سعي خواهد كرد تا اين نام را به ترتيب به صورت اسامي مشابه با http://www.xyz.com و http://www.us.xyz.com و ... تعبير كند. سرورهاي DNS مورد استفاده Name Resolver توسط راهنماي nameserver مشخص مي شود: Nameserver ipaddress كه در آن پارامتر ipaddress نشاني ip سرور DNS است. به عنوان مثال در صورتي كه نخستين سرور DNS داراي نشاني IP برابر با 199.231.13.10 باشد، در اين صورت راهنماي DNS به شكل زير خواهد شد: Nameserver 100.231.13.10 در هر مورد مي توان حداكثر مي توان سه نشاني سرور DNS مشخص كرد كه هر يك داراي راهنماي nameserver خود هستند و در يك خط ثبت مي شوند. مطلب ديگري كه مي تواند توسط كاربر تنظيم شود،ترتيب مراجعه به DNS يا فايل \etc\hosts در زمان ترجمه نام است. بدين ترتيب معني كه كاربر مي تواند با كمك فايل \etc\nsswitch.conf انتخاب كند كه براي ترجمه نام،نخست به DNS مراجعه شود و سپس به فايل \etc\hosts و يا بر عكس . در هنگام استفاده از سيستم هاي بزرگ و يا در زماني كه قصد استفاده از تمام سرويس هاي اينترنتي در سيستم لينوكس خود داشته باشيد،لازم خواهد بود كه مشخصه هاي BIND به درستي تنظيم شده باشند،خوشبختانه چنين تنظيمي فقط كافي است كه يك بار انجام شود. براي اين كار به نرم افزار BIND نياز خواهد بود كه در اكثر توزيع هاي جديد لينوكس پيش بيني شده است.
دروازه يا Gateway
زماني كه دو يا چند شبكه به يكديگر متصل مي شوند،از Gateway استفاده مي شود. Gateway ماشيني است كه به عنوان رابط بين چند شبكه عمل مي كند و اطلاعات را بر اساس نشاني هاي ip آن ها به شبكه هاي مربوطه هدايت و مسيردهي مي كند. زماني كه قرار باشد يك سيستم لينوكسي به عنوان Gateway كار كند،بايد چند تغيير در تنظيمات فايل هاي configuration شبكه اعمال شود. براي آنكه بتوان از سرويس هاي يك سيستم ديگر به عنوان Gateway استفاده كرد،بايد به جدول مسيريابي،اطلاعاتي از Gateway قرار باشد شبكه اي را به اينترنت متصل سازد. اين عمل توسط دستور زير قابل تنظيم است: Route add default gw netgate در دستور بالا، natgate نام سيستمي در شبكه است كه قرار است به عنوان يك gateway به كار گرفته شود. اين نام در دستور بالا بعد از كليد واژه gw ذكر مي شود. معني عبارت default در دستور بالا به اين معني است كه تمام سيستم هاي موجود در شبكه قادر به اتصال به اينترنت از طريق Gateway هستند. در صورتي كه قصد ارتباط دادن دو شبكه توسط يك Gateway در بين باشد،بايد نام شبكه دوم در فايل etc\networks\ قيد شده باشد و در اين صورت شكل نوشتاري دستور route به صورت زير است: Route add big-corp gw gate-serv در دستو رفوق از سيستمي به نام gateserv براي دسترسي به شبكه اي به نام bigcorp مي توان استفاده كرد. نكته ديگر آنكه اگر به همين جا اكتفا شود،كاربران فقط قادر خواهند بود كه اطلاعات را به سيستم ها ي مقصد در شبكه دوم ارسال كنند و قابليت دريافت اطلاعات از آن سيستم ها وجود نخواهد داشت. براي حل اين مسئله لازم است كه در جداول مسيريابي سيستم هاي شبكه دوم تنظيماتي انجام شود. اگر قصد استفاده از سيستم محلي خود را به عنوان ارتباط دهنده دو شبكه داشته باشيد،بايد سيستم خود را به دو كارت شبكه ( يا دو اتصال PPP و يا SLIP ) مجهز كنيد. فرض كنيد كه قصد استفاده از سيستم خود را براي اتصال دو شبكه به نام هاي Small-net و big-net داشته باشيم و شرايط سخت افزاري اين كار فراهم شده باشد. نخستين گام آن است كه رابط هاي اترنت كارت هاي شبكه هر يك با نشاني هاي خودشان تنظيم شوند. به عنوان مثال ممكن است سيستم شما در شبكه بزرگ تر داراي نشاني ip برابر با 163.12.34.36 باشد و در شبكه كوچك تر نشاني سيستم 147.123.12.1 باشد. در اين صورت لازم خواهد بود كه دو ورودي در فايل \etc\hosts براي ساده تر عمل ترجمه نام (Name resolution ) ايجاد كنيم. مثلا” به اين ترتيب 163.12.34.36 merlin.big-net.com merlin-iface1
147.123.12.1 merlin.small-net.com merlin-iface2
در اين مثال فرض شده است كه سيستم شما در هر دو شبكه داراي نام merlin است كه كاملا” قانوني است در مورد فوق اسامي رابط ها نيز به جهت سهولت قيد شده اند. پس از اين مرحله بايد از فرمان ifconfig براي برقراري ارتباط بين رابط ها و اسامي هاي به كار رفته در فايل \etc\hosts استفاده كنيم: ifconfig eth 0 merlin-iface1 ifconfig eth1merlin-iface2
و نهايتا” لازم است كه جدول مسيريابي را تغيير دهيم. براي اين كار از دستورات زير به صورت مشخص شده بايد استفاده كنيم: Route add big-net Route add small-net
زماني كه اين مراحل به درستي انجام شوند، مي توانيد از سيستم خود به عنوان يك Gateway براي برقراري ارتباط بين دو شبكه استفاده كنيد.
استفاده از ابزارهاي گرافيكي براي تنظيمات رابط هاي شبكه
تا اينجا از دستوراتي استفاده كرديم كه تمام مراحل لازم براي ايجاد و تنظيمات شبكه را از ابتداي كار توصيف مي كردند. زماني كه لينوكسي راه اندازي مي شود، به طور معمول نيازي به اجراي اسكريپت هايي نظير اسكريپت هاي فوق را نخواهيد داشت،علت اين موضوع آن است كه چنين اسكريپت هايي به طور خودكار در زمان راه اندازي اجرا مي شوند. اما اشكال كار در اينجا است كه اين اسكريپت ها ممكن است از يك توزيع لينوكس به توزيع ديگري كمي تفاوت داشته باشند،به عنوان مثال لينوكس هايي مانند slackware كه از اسكريپت هايي به سبك يونيكس BSD استفاده مي كنند. با لينوكس هايي مانند RedHat يا Fedora كه از اسكريپت هاي به سبك يونيكس VR4 پيروي مي كنند،از نظر اسكريپت هاي Shell ، تفاوت دارند. اما خوشبختانه،توزيع عاي لينوكس امروزي به همراه ابزارهاي گرافيكي عرضه مي شوند كه كار تنظيمات شبكه را تا حد بسيار زياد تسهيل مي كنند. اين ابزارها به طور خودكار تغييرات و ويرايش هاي شما را در اسكريپت هاي راه اندازي اعمال مي كنند. يكي از نخستين ابزارهاي گرافيكي تنظيمات لينوكس ، netcfg نام دارد . براي راه اندازي اين ابزار كافي است كه نام آن را از خط فرمان اجرا كنيد.
Linuxconf
ابزار بسيار قوي ديگر،linuxconf نام دارد كه مي توان از آن براي تنظيمات شبكه و بسياري از اعمال مديريتي ديگر استفاده كرد. از آنجايي كه از اين ابزار براي مسير دهي و اعمال پيچيده ديگر استفاده مي شود. فراگيري آن و كسب مهارت در آن كاملا” منطقي است. براي راه اندازي اين ابزار هم مي توانيد به سادگي نام آن را از خط فرمان اجرا كنيد. البته برنامه هاي گرافيكي ميزكارهايي مانند KDE يا GNOME هم بسته به نسخه لينوكسي كه از آن استفاده مي كنيد،ممكن است پيش بيني آيكوني براي فراخواني linuxconf را كرده باشند.
به نقل از نیک صالحی
قبل از تصميم گيري براي نصب و راه اندازي TCP\IP بر روي لينوكس بايد از آماده بودن فايل سيستم براي اين كار مطمئن شويد. براي اين كار كافي است چند گام ساده را طي كنيد. نخست آنكه بايد از نصب بودن نرم افزار شبكه اطمينان بيابيد. اين موضوع در زمان نصب لينوكس از كاربر سوال مي شود و در اكثر مواقع و در بيشتر توزيع هاي لينوكس بهصورت پيش فرض انتخاب شده است. توجه داشته باشيد كه دايركتوري proc \ يكي از مكان هايي است كه اطلاعات شبكه اي لينوكس در آنجا ذخيره مي شود. وجود اين دايركتوري يكي از نشانه هاي نصب بودن امكانات شبكه اي در لينوكس است. زماني كه از محتويات دايركتوري proc \ ليست مي گيريد (يعني با دستور cd به اين مسير برويد و سپس فرمان ls را اجرا كنيد). در صورتي كه دايركتوري proc \ در سيستم شما موجود نباشد به احتمال زياد ناگزير خواهيد بود كه كرنل سيستم عامل خود را مجددا” كامپايل كرده و گزينه \proc را برگزينيد. به اين منظور بايد به دايركتوري سورس لينوكس يعني \usr\src\linux تغيير مسير داده و روتين تنظيمات (يا configuration ) كرنل را اجرا كنيد. دستور اين كار چنين است:Make config اگر در محيط گرافيكي X-windows كار مي كنيد،مي توانيد از ابزارهاي گرافيكي استفاده كرده و دستور مقابل را تايپ كنيد: Make xconfig در زمان كامپايل كرنل از شما سوال مي شود كه آيا به پشتيباني از procfs نياز داريد يا خير.به اين مورد پاسخ مثبت دهيد. همين موضوع باعث ساخته شدن دايركتوري \proc در سيستم شما خواهد شد. دايركتوري \proc هميشه در زمان راه اندازي لينوكس به طور خودكار mount مي شود. وجود خطي مشابه با خط زير در فايل \etc\fstab شرايط mount خودكار اين دايركتوري را فراهم مي كند. None \ proc proc defaults گام بعدي كه قبل از نصب و راه اندازي TCP\IP لازم است برداشته شود،انتخاب نام ميزبان (hostname ) سيستم است. براي اين كار مي توان از دستور مقابل استفاده كرد: Hostname…name… در دستور بالا به جاي name نام مورد نظر خود را براي ميزبان قرار دهيد. در اينجا ذكر اين نكته ضروري است كه اگر سيستم شما در شبكه قرار دارد و در نتيجه داراي يك نام domain كامل هستيد،مي توانيد در دستور فوق از نام كامل سيستم و Domain استفاده كنيد. مثلا” : Hostnameyourname.yourdomain.com در هر صورت يك ورودي جديد در فايل etc\hosts\ ساخته خواهد شد كه منعكس كننده نتيجه اجراي دستور بالاست. توصيه مي شود كه از اين موضوع براي اطمينان از صحت عملكرد دستور قبلي حتما” استفاده كنيد. نكته ديگري كه بايد قبل از راه اندازي TCP\IP بر روي سيستم خود در نظر بگيريد آن است كه بايد يك نشاني IP براي شناسايي سيستم خود در شبكه انتخاب كنيد. به طور معمول فايل etc\netyworks شامل تمامي نام ها و نشاني هايي است كه سيستم شما در شبكه با آن ها سرو كار دارد. نرم افزارهاي كاربردي از اطلاعات موجود در اين فايل براي تعيين نشاني هاي مقاصد منابع موجود در شبكه استفاده مي كنند. در فايل etc.networks دو ستون براي فهرست كردن نام سمبوليك و نشاني IP منابع شبكه در نظر گرفته شده است. در بسياري از موارد در فايل هاي etc\networks مدخلي براي درايور loopback وجود دارد. در زير نمونه اي از يك فايل etc\networks آورده شده است: Loopback 12.0.0. Marlin-net 147.154.0 BNR 47.0.0.0 در نمونه فايل فوق،دو شبكه به همراه نشاني هاي IP آن ها ثبت شده اند. توجه داشته باشيد كه در نشاني هاي IP فقط بخش شبكه در نشاني IP ذكر شده است و به جاي بخش انتهايي نشاني ها،صفر قرار داده شده است.
رابط شبكه
يكي از كارهاي ديگري كه در شبكه بندي لينوكس بايد انجام شود،تعيين رابط شبكه براي سيستم عامل و ديگر ابزارهاي نرم افزاري آن است. اين كار توسط دستور ifconfig انجام مي شود. اجراي اين دستور به همراه ذكر نشاني IP باعث مي شود تا لايه شبكه كرنل لينوكس بتواند با رابط شبكه ارتباط برقرار كند. بدين ترتيب سيستم عامل مي تواند از طريق رابط شبكه به تبادل اطلاعات با دنياي خارج بپردازد. كاربر بايد به ازاي هر يك از درايوهاي شبكه،رابط هاي شبكه مربوط را برپاكند،بدين معني كه بايد براي هر يك از درايوهاي شبكه،رابط هاي شبكه مربوط را بر پا كند. بدين معني كه بايد براي هر يك از درايوهاي ppp ,loopback و يا اترنت،يك بار فرمان ifconfig اجرا شود. ترتيب كار به صورت زير است: ifconfig interface-name ip- address در دستور بالا،به جاي interfacename بايد نام اختصاري درايور قرار داده شود. بعد از آن كه دستور ifconfig اجرا شد و در نتيجه رابط شبكه فعال گرديد. كاربر بايد از دستور route براي ايجاد و يا حذف مسيرها در جدول مسير يابي (routing table ) كرنل استفاده كند. اين عمل از آن جهت اهميت دارد كه سيستم بتواند توسط جدول مسيريابي ،ديگر منابع شبكه را بيابد. از دستور فوق به صورت زير استفاده مي شود: Route add\delip-address توجه داشته باشيد در هر مورد استفاده از دستور فوق بايد يكي از حالات add يا del بكار برده شوند. در صورتي كه بخواهيد محتويات فعلي جدول مسيريابي سيستم را مشاهده كنيد،مي توانيد به اين صورت عمل كنيد: $ Route (يعني استفاده از دستور route بدون هيچ سوئيچ ) اگر اين دستور را اجرا كنيد،ممكن است چيزي شبيه متن زير ببينيد.(در اين مثال،سيستم مورد نظر فقط داراي مدخل درايور loopback بوده است)
$route
Kernel Routing table
Destination Gateway Genmask Window Use Lface
Loopback *255.0.0.0u1936 0 16 lo
يادآوري مي كنيم كه يك روش ديگر نمايش داده هاي جدول مسيريابي ،استفاده ا زدستور مقابل است: Netstat –rn در دستور فوق سوئيچ r باعث نمايش جدول مسيريابي و سوئيچ n منجر به نمايش نشاني هاي ip به جاي اسامي نمادين مي شوند. در جداول مسيريابي ستون هايي كه اهميت دارند. ستون مربوط به نام مقصد مثلا” loopback ،ستون مربوط به ماسك مانند Genmask و نهايتا” ستون نام رابط شبكه هستند. شما مي توانيد توسط دستور route به همراه سوئيچ n ،داده هاي جدول مسيريابي را به صورتي مشاهده كنيد كه در آن به جاي اسامي سمبوليك،از نشاني هاي ip استفاده شده باشد. همان طور كه قبلا” اشاره شد،در شرايط معمول سيستم هاي مجهز به سيستم عامل لينوكس داراي يك رابط loopback و يك رابط شبكه نظير اترنت هستند كه بايد به ترتيب تنظيم شوند.
تنظيم رابط loopback
همان طور كه قبلا” اشاره كرديم ،رابط loopback توسط برخي از نرم افزارها براي كاركرد طبيعي مورد استفاده قرار مي گيرد.از آن گذشته تعداد ديگري از نرم افزارهاي كاربردي تحت لينوكس نيز از اين رابط براي كاربردهاي عيب يابي كمك مي گيرند. يادآوري مي كنيم كه نشاني ip يك رابط شبكه loopback به صورت 127.0.0.1 نوشته مي شودو فايل etc\hosts\ بايد يك ورودي براي loopback باشد. در اين جا مناسب است كه خاطر نشان كنيم كه نشاني loopback را مي توان به صورت هاي گوناگوني نوشت و اصولا” هر نشاني به فرم 127.x.x.x (x به معني عددي بين 0 تا 255 است) پذيرفتني است. اينكه چرا عادت كرده ايم كه از يونيكسي اوليه چنين مرسوم بوده است. در صورتي كه ورودي مربوط به رابط loopback در فايل \etc\hosts ثبت نشده ifconfig lo استفاده كنيم.
تنظيم رابط اترنت
براي تنظيم اترنت (مثلا” كارت شبكه) هم مي توانيد همان مراحل قبلي را مجدد تكرار كنيد. فقط توجه داشته باشيد كه نام رابط شما چيزي مانند eth0 يا eht 1 است و نشاني ip را نيز بايد به نشاني ip انتخابي خود تغيير دهيد. در اين جا زماني كه قصد اجراي دستور ifconfig را براي رابط شبكه داريد،نيازي به مشخص كردن ماسك شبكه نخواهيد داشت. زيرا سيستم عامل مي تواند مقدار پارامتر ماسك را به طور خودكار از نشاني ip داده شده به دست آورد. به عنوان مثال مي توانيد براي ثبت نشاني 147.123.20.1 از يكي از خطوط زير استفاده كنيد:
Ifconfig 147.123.20.1 ifconfig 147.123.20.1 nemask 255.25.255.0 براي بررسي صحت انجام عمليات مي توانيد بار ديگر از دستور ifconfig eht 0 استفاده كنيد. نشاني Broadcast بر اساس نشاني ip سيستم محلي تنظيم شده است. اين عمل از آن جهت توسط TCP\IP انجام مي گيرد كه تمام سيستم هاي موجود در شبكه به يك باره در دسترس قرار گيرند. مقدار و اندازه Maximum Transfer Unit هم به طور معمول بر اساس استانداردهاي شبكه هاي اترنت به مقدار حداكثر مجاز يعني 1500 تنظيم مي شود. همان طور كه مي دانيد گام بعدي اضافه كردن نشاني اترنت به جدول مسيريابي كرنل است . نشاني ip مورد نياز براي همراهي در دستور route همان نشاني شبكه بدون ذكر پارامتر محلي است . براي آنكه تمام شبكه محلي را در يك نوبت پوشش دهيم،از گزينه net در دستور route كمك مي گيريم. در نتيجه شكل استفاده از دستور route براي مثال ما به صورت زير خواهد بود:Route add –net 147.123.20.0 اين دستور تمامي سيستم هاي موجود در شبكه محلي را كه توسط نشاني 147.123.20.0 شناسايي مي شوند، را به جدول مسيريابي اضافه مي كند. در سيستم هاي موجود در شبكه را به صورت دستي به جدول مسيريابي اضافه كنيد. روش ديگر آن است كه از فايل \etc\networks فقط براي مشخص كردن بخش فهرست هايي از نام ها و نشاني هاي ip باشد،به عنوان مثال در صورتي كه در اين فايل ،ورودي مربوط به شبكه اي به نام foobamet داشته باشيم،مي توانيم تمام شبكه كمك دستور زير به جدول مسيريابي اضافه كنيم: Route add foobar-net استفاده از فايل etc\networks اين اشكال امنيتي را به همراه دارد كه به تمام سيستم هاي موجود در شبكه اجازه دسترسي و مجوزهاي يكساني داده مي شود. پس از آنكه مسيرها به جدول مسيريابي كرنل اضافه شدند،مي توانيد براي بررسي صحت تنظيمات،از دستور ping براي هر يك از سيستم هاي شبكه استفاده كنيد. براي اين كار يا بايد نام سيستم مقصد را داشته باشيد و يا آنكه نشاني ip آن را بدانيد. اين اطلاعات مي توانند از طريق فايل \etc\hosts و يا سرويسي مانند DNS به دست آيند. پس از آنكه مراحل فوق به درستي انجام گرديدند،سيستم لينوكس شما قادر خواهد بود كه به هر يك از سيستم هاي موجود در شبكه محلي توسط پروتكل TCP\IP متصل شود. در صورتي كه شبكه مورد نظر كوچك باشد،اين عمل كفايت مي كند و كار در همين جا خاتمه يافته مي شود . اما در شبكه هاي بزرگتر و يا شبكه هايي كه از پروتكل هاي ويژه اي استفاده مي كنند و يا در آن ها Gateway به كار رفته باشد،نياز به طي مراحل ديگري وجود خواهد داشت. در صورتي كه قصد اضافه كردن سيستم هاي ديگري را به شبكه داشته باشيد كه از TCP\IP استفاده مي كنند،مي توانيد همانند مراحل قبلي ،نام و نشاني IP هاي آن ها را به فايل \etc\hosts اضافه كنيد. سيستم هايي به نام godzilla و godzilla.tpci ،مجهز به سيستم عاملي (كه از TCP\IP پشتيباني مي كند)هستند. و قادرند به كمك teinet يا ftp به سيستم لينوكسي ما متصل شوند (توجه داشته باشيد كه كاربر چنين سيستم هايي فقط زماني قادر خواهد بود به سيستم شما login كند كه مجوزهاي مربوط را براي آنها تنظيم كرده باشيد.) در صورتي كه نام يا نشاني يك سيستم راه دور در فايل \etc\hosts ثبت شده باشد،شما قادر خواهيد بود كه توسط ابزارهايي مانند telnet يا ftp با آن سيستم ارتباط داشته باشيد.
Name service و Name resolver
پروتكل TCP\IP از ورودي هاي فايل \etc\hosts براي ترجمه اسامي به نشاني هاي IP استفاده مي كند. به عنوان مثال،زماني از نامي مانند darkstar را در آن بيابد. در صورتيكه چنين ورودي در اين فايل موجود نباشد، شما قادر به اتصال چنين سيستمي نخواهيد بود. اما تصور كنيد كه تعداد سيستم هاي موجود در شبكه زياد باشند و شما قصد اتصال به تعداد بيشتري از سيستم ها را داشته باشيد و در اين صورت تنظيم و اضافه كردن يكايك نام ها و نشاني هاي ip به جدول مسيريابي كاري خسته كننده و زمان برخواهد بود. سرويس BIND كه مخفف عبارت Beekeley internet Name Domain Service است براي حل اين مشكل ايجاد شده است. بعدها BIND در DNS يا Domain Name System نيز پياده سازي شد. در حال حاضر اكثر توزيع هاي لينوكس به BIND مجهز هستند و در بعضي از نسخه ها هم DNS از قبل پياده سازي شده است. BIND و DNS هر دو مقوله هاي پيچيده اي هستند كه بسياري از كاربران لينوكس را فراري مي دهند. در صورتي كه شبكه شما به يك DNS سرور متصل باشد و يا آنكه قصد استفاده ا زسرور DNS ISP را داشته باشيد،نيازي به اجراي BIND بر روي سيستم خود نخواهيد داشت. اما در عوض بايد سيستم خود را به گونه اي تنظيم كنيد كه قادر به استفاده از سرور DNS باشد. در چنين مواقعي،به جاي آن كه نام ها و نشاني هاي يكايك سيستم هاي متصل به شبكه را به فايل \etc\hosts اضافه كنيد،كلانيت DNS و يا مجموعه اي از روتين هاي كتابخانه اي در لينوكس،فراخواني مي شوند و با استفاده از سرور DNS نام هاي مورد نظر را به نشاني هاي مربوطه آن ها ترجمه يا Resolver مي كنند. Name Resolver توسط فايل \etc\resolv.conf تنظيم مي شود. به طور معمول اين فايل شامل راهنماي (directive ) جستجو و راهنماي Name server است. راهنماي جستجو به شكل زير به كار برده مي شود: Searchdomain 1 domain2 domainN در عبارت فوق هر يك از domain ها توسط فهرستي از پسوندهاي دامنه اي جايگزين مي شوندكه Name Resolver به اسامي ميزباني اضافه مي كند كه به صورت كامل مشخص نشده باشد.به عنوان مثال،راهنماي جستجوي زير توجه كنيد: Search xyz.com us.xyx.com europe.xyz.com در صورتي كه نامي مانند http://www.abc.com به كار گرفته شده باشد،مي گوييم كه اين نام به صورت كامل بيان شده است. در چنين وضعيتي ،از راهنماي جستجو استفاده نخواهد شد. اما اگر يك سرويس TCP\IP از نامي مانند WWW استفاده كند كه به شكل كامل نيست،در اين صورت راهنماي جستجو سعي خواهد كرد تا اين نام را به ترتيب به صورت اسامي مشابه با http://www.xyz.com و http://www.us.xyz.com و ... تعبير كند. سرورهاي DNS مورد استفاده Name Resolver توسط راهنماي nameserver مشخص مي شود: Nameserver ipaddress كه در آن پارامتر ipaddress نشاني ip سرور DNS است. به عنوان مثال در صورتي كه نخستين سرور DNS داراي نشاني IP برابر با 199.231.13.10 باشد، در اين صورت راهنماي DNS به شكل زير خواهد شد: Nameserver 100.231.13.10 در هر مورد مي توان حداكثر مي توان سه نشاني سرور DNS مشخص كرد كه هر يك داراي راهنماي nameserver خود هستند و در يك خط ثبت مي شوند. مطلب ديگري كه مي تواند توسط كاربر تنظيم شود،ترتيب مراجعه به DNS يا فايل \etc\hosts در زمان ترجمه نام است. بدين ترتيب معني كه كاربر مي تواند با كمك فايل \etc\nsswitch.conf انتخاب كند كه براي ترجمه نام،نخست به DNS مراجعه شود و سپس به فايل \etc\hosts و يا بر عكس . در هنگام استفاده از سيستم هاي بزرگ و يا در زماني كه قصد استفاده از تمام سرويس هاي اينترنتي در سيستم لينوكس خود داشته باشيد،لازم خواهد بود كه مشخصه هاي BIND به درستي تنظيم شده باشند،خوشبختانه چنين تنظيمي فقط كافي است كه يك بار انجام شود. براي اين كار به نرم افزار BIND نياز خواهد بود كه در اكثر توزيع هاي جديد لينوكس پيش بيني شده است.
دروازه يا Gateway
زماني كه دو يا چند شبكه به يكديگر متصل مي شوند،از Gateway استفاده مي شود. Gateway ماشيني است كه به عنوان رابط بين چند شبكه عمل مي كند و اطلاعات را بر اساس نشاني هاي ip آن ها به شبكه هاي مربوطه هدايت و مسيردهي مي كند. زماني كه قرار باشد يك سيستم لينوكسي به عنوان Gateway كار كند،بايد چند تغيير در تنظيمات فايل هاي configuration شبكه اعمال شود. براي آنكه بتوان از سرويس هاي يك سيستم ديگر به عنوان Gateway استفاده كرد،بايد به جدول مسيريابي،اطلاعاتي از Gateway قرار باشد شبكه اي را به اينترنت متصل سازد. اين عمل توسط دستور زير قابل تنظيم است: Route add default gw netgate در دستور بالا، natgate نام سيستمي در شبكه است كه قرار است به عنوان يك gateway به كار گرفته شود. اين نام در دستور بالا بعد از كليد واژه gw ذكر مي شود. معني عبارت default در دستور بالا به اين معني است كه تمام سيستم هاي موجود در شبكه قادر به اتصال به اينترنت از طريق Gateway هستند. در صورتي كه قصد ارتباط دادن دو شبكه توسط يك Gateway در بين باشد،بايد نام شبكه دوم در فايل etc\networks\ قيد شده باشد و در اين صورت شكل نوشتاري دستور route به صورت زير است: Route add big-corp gw gate-serv در دستو رفوق از سيستمي به نام gateserv براي دسترسي به شبكه اي به نام bigcorp مي توان استفاده كرد. نكته ديگر آنكه اگر به همين جا اكتفا شود،كاربران فقط قادر خواهند بود كه اطلاعات را به سيستم ها ي مقصد در شبكه دوم ارسال كنند و قابليت دريافت اطلاعات از آن سيستم ها وجود نخواهد داشت. براي حل اين مسئله لازم است كه در جداول مسيريابي سيستم هاي شبكه دوم تنظيماتي انجام شود. اگر قصد استفاده از سيستم محلي خود را به عنوان ارتباط دهنده دو شبكه داشته باشيد،بايد سيستم خود را به دو كارت شبكه ( يا دو اتصال PPP و يا SLIP ) مجهز كنيد. فرض كنيد كه قصد استفاده از سيستم خود را براي اتصال دو شبكه به نام هاي Small-net و big-net داشته باشيم و شرايط سخت افزاري اين كار فراهم شده باشد. نخستين گام آن است كه رابط هاي اترنت كارت هاي شبكه هر يك با نشاني هاي خودشان تنظيم شوند. به عنوان مثال ممكن است سيستم شما در شبكه بزرگ تر داراي نشاني ip برابر با 163.12.34.36 باشد و در شبكه كوچك تر نشاني سيستم 147.123.12.1 باشد. در اين صورت لازم خواهد بود كه دو ورودي در فايل \etc\hosts براي ساده تر عمل ترجمه نام (Name resolution ) ايجاد كنيم. مثلا” به اين ترتيب 163.12.34.36 merlin.big-net.com merlin-iface1
147.123.12.1 merlin.small-net.com merlin-iface2
در اين مثال فرض شده است كه سيستم شما در هر دو شبكه داراي نام merlin است كه كاملا” قانوني است در مورد فوق اسامي رابط ها نيز به جهت سهولت قيد شده اند. پس از اين مرحله بايد از فرمان ifconfig براي برقراري ارتباط بين رابط ها و اسامي هاي به كار رفته در فايل \etc\hosts استفاده كنيم: ifconfig eth 0 merlin-iface1 ifconfig eth1merlin-iface2
و نهايتا” لازم است كه جدول مسيريابي را تغيير دهيم. براي اين كار از دستورات زير به صورت مشخص شده بايد استفاده كنيم: Route add big-net Route add small-net
زماني كه اين مراحل به درستي انجام شوند، مي توانيد از سيستم خود به عنوان يك Gateway براي برقراري ارتباط بين دو شبكه استفاده كنيد.
استفاده از ابزارهاي گرافيكي براي تنظيمات رابط هاي شبكه
تا اينجا از دستوراتي استفاده كرديم كه تمام مراحل لازم براي ايجاد و تنظيمات شبكه را از ابتداي كار توصيف مي كردند. زماني كه لينوكسي راه اندازي مي شود، به طور معمول نيازي به اجراي اسكريپت هايي نظير اسكريپت هاي فوق را نخواهيد داشت،علت اين موضوع آن است كه چنين اسكريپت هايي به طور خودكار در زمان راه اندازي اجرا مي شوند. اما اشكال كار در اينجا است كه اين اسكريپت ها ممكن است از يك توزيع لينوكس به توزيع ديگري كمي تفاوت داشته باشند،به عنوان مثال لينوكس هايي مانند slackware كه از اسكريپت هايي به سبك يونيكس BSD استفاده مي كنند. با لينوكس هايي مانند RedHat يا Fedora كه از اسكريپت هاي به سبك يونيكس VR4 پيروي مي كنند،از نظر اسكريپت هاي Shell ، تفاوت دارند. اما خوشبختانه،توزيع عاي لينوكس امروزي به همراه ابزارهاي گرافيكي عرضه مي شوند كه كار تنظيمات شبكه را تا حد بسيار زياد تسهيل مي كنند. اين ابزارها به طور خودكار تغييرات و ويرايش هاي شما را در اسكريپت هاي راه اندازي اعمال مي كنند. يكي از نخستين ابزارهاي گرافيكي تنظيمات لينوكس ، netcfg نام دارد . براي راه اندازي اين ابزار كافي است كه نام آن را از خط فرمان اجرا كنيد.
Linuxconf
ابزار بسيار قوي ديگر،linuxconf نام دارد كه مي توان از آن براي تنظيمات شبكه و بسياري از اعمال مديريتي ديگر استفاده كرد. از آنجايي كه از اين ابزار براي مسير دهي و اعمال پيچيده ديگر استفاده مي شود. فراگيري آن و كسب مهارت در آن كاملا” منطقي است. براي راه اندازي اين ابزار هم مي توانيد به سادگي نام آن را از خط فرمان اجرا كنيد. البته برنامه هاي گرافيكي ميزكارهايي مانند KDE يا GNOME هم بسته به نسخه لينوكسي كه از آن استفاده مي كنيد،ممكن است پيش بيني آيكوني براي فراخواني linuxconf را كرده باشند.
به نقل از نیک صالحی