بخشی از مقاله
شبکه در لینوکس
فرامين شبکهاي در لينوکس
يکي از دغدغههاي اصلي کاربران علاقهمند به لينوکس گنگبودن امکانات اين سيستمعامل است. سؤالي كه اغلب كاربران لينوكس پس از نصب اين سيستمعامل با آن مواجه ميشوند اين است كه چگونه ميتوان شبكهاي مطمئن و امن را تنظيم كرد و چگونه ميتوان از امكانات لينوكس بهرهمند شد. براي انجام تنظيمات سيستمي بايد به کدام بخش مراجعه كرد، تنظيمات
شبکه در لينوکس به چه شکل است و... بيشتركاربران لينوكس نسبت به اين موضوع آگاهي دارند كه اغلب کارهايي که در ويندوز ميتوان انجام داد در لينوکس نيز انجام پذير اس
ت. اما در روش پيادهسازي آنها تفاوتهايي وجود دارد که بايد به مرور با اين تفاوتها آشنا شد. در اين مقاله سعي شده که بخشي از همين مبحث مورد بررسي قرار گيرد. چنانچه شما به تنظيمات شبكهاي علاقهمند باشيد، بهيقين يکي از جذابترين و کاربرديترين قسمتها، راهاندازي شبكه در محيط لينوكس و تنظيمات شبکه است. از آنجا که کاربران شبکه، کاردر محيط خطفرمان را به راهنماهاي بصري ترجيح ميدهند، به طور مستقيم سراغ فرامين شبکهاي در لينوکس ميرويم.
يکي از دغدغههاي اصلي کاربران علاقهمند به لينوکس گنگبودن امکانات اين سيستمعامل
است. سؤالي كه اغلب كاربران لينوكس پس از نصب اين سيستمعامل با آن مواجه ميشوند اين است كه چگونه ميتوان شبكهاي مطمئن و امن را تنظيم كرد و چگونه ميتوان از
امكانات لينوكس بهرهمند شد. براي انجام تنظيمات سيستمي بايد به کدام بخش مراجعه كرد، تنظيمات شبکه در لينوکس به چه شکل است و...
بيشتركاربران لينوكس نسبت به اين موضوع آگاهي دارند كه اغلب کارهايي که در ويندوز ميتوان انجام داد در لينوکس نيز انجام پذير است. اما در روش پيادهسازي آنها تفاوتهايي وجود دارد که بايد به مرور با اين تفاوتها آشنا شد. در اين مقاله سعي شده که بخشي از همين مبحث مورد بررسي قرار گيرد. چنانچه شما به تنظيمات شبكهاي علاقهمند باشيد، بهيقين يکي از جذابترين و کاربرديترين قسمتها، راهاندازي شبكه در محيط لينوكس و تنظيمات شبکه است. از آنجا که کاربران شبکه، کاردر محيط خطفرمان را به راهنماهاي بصري ترجيح ميدهند، به طور مستقيم سراغ فرامين شبکهاي در لينوکس ميرويم.
پينگ در لينوكس
پينگ (Ping) يك دستور رايج در تمام سيستمعاملها براي بررسي دسترسي به شبكه است. زماني كه شما در ترمينال يك دستور ping و يك IP آدرس را وارد ميكنيد، در واقع ماشين تلاش ميكند تا يك سري بسته ICMP را به ماشيني با آدرس IP موردنظر شما ارسال كند. کاربرد اصلي اين فرمان مطلع شدن از وضعيت يک هاست در شبکه است، اگر يک هاست در شبکه باشد (و فايروالي جلوي ICMP آن را نبسته باشد) بايد به بستههاي دريافتي پاسخ داده و با نمايش Reply حضور خود را به طرف مقابل اعلام دارد. ضمن آنکه مدت پاسخگويي به هر بسته ارسالي نيز، نشان از وضعيت سلامت مسير ارتباطي دارد. اما اگر بخواهيم کمي از اين فرمان بهصورت پيشرفتهتر استفاده کنيم و با استفاده از آن از وضعيت سيستمهايي که در شبکه هستند، مطلع شويم ابتدا بايد به محيط ترمينال لينوکس مراجعه كرده و Vim را با دسترسي Root
اجرا كرده و خطوط زير را وارد كنيم.
# vim /usr/bin/netup.sh
#/bin/bash
for i in 192.168.1.{1..255};
do
ping -c2 $i > /dev/null;
[ $? -eq 0 ] && echo $i is up.
trap “Exit” SIGINT
done
پس از ذخيره كردن فايل در آدرس /usr/bin/netup.sh جهت اجرايي كردن آن دستور زير را وارد كنيد.
chmod a+x /usr/bin/netup.sh
حال اسکريپت ايجاد شده را اجرا کنيد.
[slynux@gnuxbox ~]$ netup.sh
192.168.1.1 is up.
192.168.1.3 is up.
192.168.1.4 is up.
همانطور که مشاهده ميکنيدآدرسهاي آيپياي که در شبکه وجود دارد در اين اسکريپت در وضعيت UP قرار ميگيرند.
تنظيم يك شبكه
براي راهاندازي يک سيستم در شبکه ابتدا بايد به آن آدرسIP داده شود، براي انجام اينکار هم ميتوانيد بهصورت دستي آدرسIP را به سيستم معرفي كرده و هم ميتوانيد (در صورت وجود DHCP سرور) آنرا بهصورت خودکار پياده سازي کنيد.براي تنظيم دريافت خودکار IP دستور dhclient را وارد کنيد تا تقاضاي دريافت نشاني IP را به سرور DHCP منتقل سازيد. با اين عمل سرور DHCP با توجه به IPهاي موجود نشاني را به سيستم تخصيص خواهد داد. توجه داشته باشيد، IP تخصيص داده شده در هر بار واردكردن دستور فوق ميتواند متفاوت باشد.
اطلاع از وضعيت کارتهاي شبکه
اگر ميخواهيد از وضعيت کارتهاي شبکه روي سيستم آگاه شويد يا آدرسIP آنها را بيابيد، در ترمينال فرمان ifconfig –a را وارد کنيد:
[slynux@gnuxbox ~]# ifconfig -a
eth0 Link encap:Ethernet HWaddr 00:1C:23:FB:37:22
inet6 addr: fe80::21c:23ff:fefb:3722/64 Scope:Link
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:9724 errors:0 dropped:0 overruns:0 frame:0
TX packets:2720 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:2400589 (2.2 MiB) TX bytes:645396 (630.2 KiB)
Interrupt:17
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:76320 errors:0 dropped:0 overruns:0 frame:0
TX packets:76320 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:87151068 (83.1 MiB) TX bytes:87151068 (83.1 MiB)
wlan0 Link encap:Ethernet HWaddr 00:1C:BF:87:25:D2
inet addr:192.168.1.143 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::21c:bfff:fe87:25d2/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:45302 errors:0 dropped:0 overruns:0 frame:0
TX packets:37510 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:31091293 (29.6 MiB) TX bytes:9734025 (9.2 MiB)
در اينجا ما سه کارت شبکه به نامهاي eth0 ، lo و wlan0 داريم:
eth0: كه معادل همان كارتهاي شبكه كابلي است و نشاني IPV6 دارد (fe80::21c:23ff:fefb:3722).
lo: كه معادل حلقه بازگشتي (Loop Back) اشاره به Local Host يا كامپيوتر جاري است (127.0.0.1).
wlan0: معادل با يك كارت شبكه LAN بيسيم است و نشانيIPV4 دارد (192.168.1.143).
تخصيصIP بهصورت دستي
براي تخصيصIP بهصورت دستي دستور زير را اجرا کنيد:
ifconfig ><نام کارت شبکه> IP< نشاني
به عنوان مثال:
ifconfig eth0 192.168.0.2
اگر بخواهيم وضعيت کارت شبکه eth0 را ببينيم، دستورifconfig eth0 را وارد خواهيم کرد.
[root@gnubox slynux]# ifconfig eth0
eth0 Link encap:Ethernet HWaddr 00:1C:23:FB:37:22
inet addr:192.168.0.2 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: fe80::21c:23ff:fefb:3722/64 Scope:Link
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:9724 errors:0 dropped:0 overruns:0 frame:0
TX packets:2720 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:2400589 (2.2 MiB) TX bytes:645396 (630.2 KiB)
Interrupt:17
براي تغيير Subnet Mask از حالت پيش فرض به حالتي که مدنظرتان است اين دستور را وارد کنيد:
ifconfig eth0 192.168.0.2 netmask 255.255.255.0
اگر بخواهيم کارت شبکهاي را فعال کنيم، از فرمان ifup و براي غيرفعالکردن آن از ifdown استفاده خواهيم کرد.
ifup eth0
ifdown eth0
شبكههاي بيسيم
براي يافتن نام (ESSID) شبکههاي مجاورتان بايد از دستور iwlist استفاده کنيد.
[root@gnuxbox~]# iwlist wlan0 scan
wlan0 Scan completed :
Cell 01 - Address: 00:08:5C:52:E9:83
ESSID:”slynux”
Mode:Master
Channel:11
Frequency:2.462 GHz (Channel 11)
Quality=92/100 Signal level:-39 dBm Noise level=-78 dBm
Encryption key:off
Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 18 Mb/s
24 Mb/s; 36 Mb/s; 54 Mb/s; 6 Mb/s; 9 Mb/s
12 Mb/s; 48 Mb/s
Extra:tsf=00000000fc021187
دستورات فوق فهرستي از شبكههاي مختلف بيسيم را که توسط کارت شبکهتان قابل شناسايي هستند، نمايش خواهند داد.پس از يافتن نام شبکه، از دستور ديگري به نام iwconfig براي اتصال به يکي از اين شبکهها استفاده خواهيم کرد. اين دستور شباهت زيادي به ifconfig دارد، با اين تفاوت که پارامترهاي ديگري را که براي اتصال به شبكههاي بيسيم نياز داريد نيز در اختيار شما قرار خواهد داد. در اين مثال فرض بر اين است که نام (ESSID) شبکه بيسيم ما slynux است و کلمه عبور (Pass Key) آن 8c140b2037 است.
iwconfig wlan0 essid slynux key 8c140b2037
پس از اتصال به شبکه موردنظر با اجراي دستور ifconfig يك نشانيIP به كارت شبكه خودتان اختصاص دهيد:
ifconfig wlan0 192.168.0.5
چنانچه نقطه دسترسي(AP) موردنظر امکان تخصيص IP را بهصورت خودکار داشته باشد(DHCP)، بهجاي دستي وارد کردن IP از دستور زير استفاده کنيد:
dhclient wlan0
تنظيماتي که شما با دستور ifconfig اعمال ميکنيد تنها تا زماني که سيستم را راهاندازي دوباره نکنيد، قابل استفاده هستند. به همين دليل، پس از هر بار راه اندازي دوباره، تنظيمات به حالت اوليه باز خواهد گشت. براي اجتناب از اين امر کافي است کدهاي اسکريپتي را که در ادامه خواهيم گفت، در محل مناسب ذخيرهسازي کنيد. چنانچه شما از سيستمعامل اوبونتو (و يا هر سيستمعامل ديگري که بر پايه دبيان طراحي شده است) استفاده ميکنيد، کافي است به اين مسير مراجعه کنيد. /etc/networks/interfaces سپس تغييرا
ت لازم را در آنجا اعمال کنيد.
auto lo
iface lo inet loopback
iface eth0 inet static
address 164.164.32.101
netmask 255.255.255.240
gateway 164.164.32.97
1- چنانچه مايل هستيد eth0 از DHCP سرور IP دريافت ک
ند، دستورات زير را به اين بخش اضافه کنيد:
auto eth0
iface eth0 inet dhcp
2 –چنانچه تمايل داريد تا IP استاتيک خود را تنظيم کنيد، دستورات زير را وارد کنيد.
auto eth0
iface eth0 inet static
address <ip_address>
netmask <netmask>
gateway <gateway_ip>
3- چنانچه از شبکههاي بي سيم استفاده ميكنيد دستورات زير را به خطوط فرمان قسمت قبلي اضافه كنيد.
wireless-essid <network_name>
wireless-key <key>
حال براي راهاندازي دوباره سرويس شبکه، دستور زير را در شاخه root ترمينال وارد کنيد:
/etc/init.d/network restart
جعل کردن آدرس MAC
همانطور که ميدانيد آدرسMAC يک شناسه يکتا براي هر ابزار شبکهاي به شمار ميآيد. اين يکتا بودن در بعضي از موارد محدوديتهايي را ايجاد ميکند، بهعنوان مثال، برخي از سرويسدهندگان اينترنتي براساس آدرس MAC مشتريان به آنها سرويس ميدهند. از اينرو، فرض کنيد قرار باشد يک سيستم جديد وارد شبکه داخلي شما شود (که به يقين آدرس MAC جديد خواهد داشت).
در اين سناريو شما مجبورهستيد، آدرس MAC جد
يد را به سرويسدهنده اينترنت خود گزارش دهيد. امروزه، استفاده از قابليت فيلتر کردن آدرس MAC يا MAC Filtering در شبكههاي بيسيم بسيار رايج است. مک فيلترينگ در حقيقت اين امکان را فراهم ميسازد که شما به نقطه دسترسي خود دستور دهيد فقط آدرسهاي MAC خاصي امکان اتصال به شبکه را داشته باشند. از اينرو اگر سيستم جديدي وارد مجموعه شود که در فهرست مک فيلترينگ قرار نگرفته باشد، حتي اگر کلمه عبور شبکه (Pass Key) راهم در اختيار داشته باشد، بازهم قادر به اتصال به شبکه نخواهد بود. براي از ميان برداشتن اين مسئله شما ميتوانيد با چند دستور ساده در لينوکس يک آدرس MAC جديد به دستگاه خود (بهصورت مجازي) اختصاص دهيد و اين محدوديتها را پشت سر بگذاريد. آدرس MAC سيستم در خط اول خروجي ifconfig قابل رؤيت است.
eth0 Link encap:Ethernet HWaddr 00:1C:23:FB:37:22
حال ميخواهيم دو رقم آخر اين آدرس را به 23 تبديل كنيم.
ifconfig eth0 hw ether 00:1C:23:FB:37:23
براي ملاحظه خروجي کار دوباره ifconfig را وارد کنيد.
[root@gnubox slynux]# ifconfig eth0
eth0 Link encap:Ethernet HWaddr 00:1C:23:FB:37:23
inet addr:192.168.0.2 Bcast:192.168.0.255 Mask:255.255.255.0
BROADCAST MULTICAST MTU:1500 Metric:1
RX p
ackets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
Interrupt:17
تعيين سرور DNS
ارتباط در دنياي شبکه از طريق IP و آدرس MAC و... سيستمها صورت ميپذيرد. اما به حافظه سپردن اينگونه نشانيها براي انسان بسيار مشکل و گاهي امکان ناپذير خواهد بود. بهعنوان مثال، فرض کنيد ميخواهيد ايميلهاي خود را در سايت جيميل بررسي كنيد. براي اين کار کافي است در مرورگر اينترنتي خود نشاني جيميل (www.gmail.com) را تايپ کنيد. اما در حقيقت شبکه چيزي به نام نشاني gmail.com را متوجه نخواهد شد و اگر هزاران بار اين اسم را ارسال کنيد، جوابي نخواهيد يافت.
در حقيقت، زماني که شما اين آدرس را وارد ميکنيد سيستم شما اين نشاني را براي سروري که به آن DNS سرور ميگويند، ارسال کرده و نشاني IP آن را دريافت ميکند. بهعنوان مثال، نشاني 209,85,229,19 جوابي خواهد بود که DNS سرور به سيستم شما خواهد داد. پس از دريافت اين نشاني سيستم شما آنرا به نخستين روتر (درگاه ورود به اينترنت شبکه داخلي) ارسال خواهد کرد و سپس صفحه جيميل در مرورگر شما نمايان خواهد شد.
اگر سيستم شما بهصورت خودکار (DHCP) نشاني IP دريافت ميکند، در اين شرايط نشاني سرور DNS براي سيستم شما به احتمال قوي از قبل تعريف شده است. اما اگر بهصورت دستي مايل به وارد کردن نشاني IP هستيد، بايد نشاني DNS را با اضافهکردن آدرسIP،Subnet Mask و Default Gateway براي سيستمتان تعريف کنيد، اين کار به راحتي با وارد کردن خطوط زير در فايل /etc/resolve.conf امکانپذير است:
nameserver 208.67.222.222
nameserver 208.67.220.220
توجه داشته باشيد لزومي ندارد كه از DNS تعريفشده توسط ISPتان استفاده كندي. براي امنيت بيشتر بهتر است از DNSهاي باز ياOpen DNSها استفاده كنيد. دراينباره ميتوانيد به سايت opendns.org مراجعه كنيد.
ارتباط از راه دور بهوسيله SSH
شايد مايل باشيد از راه دور به يکي از سيستمهاي موجود در شبکهتان متصل شويد. اين کار بهصورت امن و راحت از طريق SSH امكانپذير است. البته به شرطي كه IP و شناسه كاربري و گذرواژه آن سيستم را بدانيد.
بهعنوان مثال، در اين سناريو ما به سيستمي با آدرسIP فرضي 192.168.1.3 متصل خواهيم شد. اگر شناسه کاربري مجازي در سيستم داشته باشيد (که در اين مثال نام شناسه ما test خواهد بود) ميتوانيد با توجه به ميزان دسترسيهاي شناسه کاربري خود در آن سيستم کارهاي مختلفي انجام دهيد.
[root@gnubox ~]# ssh test@192.168.1.3
The authenticity of host ‘192.168.1.3 (192.168.1.3)’ can’t be established.
RSA key fingerprint is 9f:61:ae:ac:8f:75:bb:3a:02:4a:f4:6c:7d:b9:0d:07.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ‘192.168.1.3’ (RSA) to the list of known hosts.
test@192.168.1.3’s password:
-sh-3.2$ echo I am on 192.168.1.3 Machine
I am on 192.168.1.3 Machine
-sh-3.2$
پس از اتصال به سيستم موردنظر شما قادر خواهيد بود کارهاي مختلفي (با توجه به سطح دسترسي شناسه کاربريتان) روي آن انجام دهيد. بهعنوان مثال، سيدي رام آن را باز و بسته کنيد، سيستم را دوباره راهاندازي يا حتي خاموش کنيد. يکي از ملحقات ssh ، setp است که بهوسيله آن ميتوانيد فايلها را از يک سيستم به سيستم ديگري منتقل کنيد. در setp براي دانلود فايل از دستور get و براي آپلود از put استفاده
خواهيم کرد.
[root@localhost ~]# sftp test@192.168.1.3
Connecting to 192.168.1.3...
test@192.168.1.3’s password:
sftp> ls
Desktop Documents Download Music Pictures Public Templates
Videos a.out test.bin file.cpp t.c
sftp> get t.c
Fetching /home/test/t.c to t.c
/home/test/t.c 100% 239 0.2KB/s 00:00
sftp>
در اين مثال پس از ورود به سيستم از طريق sftp ما فايلي به نام t.c را دانلود کرديم. يکي ديگر از ملحقات ssh، sshfs نام دارد که بهوسيله آن ميتوان دايرکتوري در سيستم ريموت شده را در سيستم ديگر Mount کنيد. در مثال زير ما يک دايرکتوري را از سيستم 3,1,168,192 به سيستم خودمان Mount کرديم.
root@localhost ~]# sshfs test@192.168.1.3:/home/test /mnt/test
test@192.168.1.3’s password:
تنظيمات پراکسي
بسياري از شبکههاي اداري، قبل از ورود سيستمها به دنياي اينترنت آنها را از فايروال خود عبور ميدهند. اينگونه اتصالها اغلب توسط پراکسي انجام ميشود. به اين ترتيب که به عنوان مثال، مرورگر به طور مستقيم درخواستهاي خود را به اينترنت متصل نميکند، بلکه ابتدا به پراکسي سرور (که ميتواند همان فايروال شبکه هم باشد) ارسال کرده و پس از مجاز شناخته شدن، درخواست سيستم به اينترنت هدايت خواهد شد.
براي تعريف پراکسي براي پروتکلهاي HTTP و FTP دو دستور زير را
وارد کنيد.
exp
ort http_proxy=”http://192.168.0.1:3128” ; // HTTP proxy
export ftp_proxy=”192.168.0.1:3128” ; //FTP proxy
اگر مايل بوديد هر بار که به سيستم وارد ميشويد اين دستورها بهطور خودکار اعمال شوند، آنها را در فايل ~/.bash_profile وارد كنيد.