از Access List برای مدیریت ترافیک در شبکه استفاده میشود، مثلاً شما میتوانید به یک یا چند کامپیوتر اجازه دسترسی به منابع خاصی از شبکه را ندهید که یکی از مهمترین بخشهای کار در شبکه است.
در کل دو نوع Access List در شبکه داریم که با شمارههای مختلف مشخص شدهاند.
- Access List استاندارد با شمارههای ۱ تا ۹۹ و ۱۳۰۰ تا ۱۹۹۹.
- Access List پیشرفته با شمارههای ۱۰۰ تا ۱۹۹ و ۲۰۰۰ تا ۲۶۹۹.
Access List استاندارد
این نوع از Access List ها از شمارههای ذکرشده در بالا استفاده میکنند و فقط ترافیکهای مربوط به مبدأ را مورد بررسی قرار میدهند. با نحوهی کار این Access List آشنا میشویم.
Deny: این دستور در access List برای جلوگیری از دسترسی یک Node خاص به یک شبکهی دیگر است که بسیار پرکاربرد و خطرناک است، به دلیل اینکه با یک اشتباه، نصف یا کل شبکه از کار میافتد.
Permit: این دستور ضد دستور Deny است و برای دسترسی به شبکه کاربرد دارد.
در این مثال میخواهیم از دسترسی pc1 به Pc3 و Pc4 جلوگیری کنیم.
وارد روتر میشویم و دستورات زیر را به ترتیب وارد میکنیم:
Router(config)#ip access-list standard dpc1
در قسمت اول باید access List را تعریف کنیم؛ هم میتوانیم با نام و هم میتوانیم با شماره تعریف کنیم که در این قسمت از نام dpc1 استفاده کردیم. شما میتوانید هر اسم دیگری در این قسمت قرار دهید و یا از شماره استفاده کنید، اما همیشه سعی کنید از نام استفاده کنید که مدیریت آن آسان باشد.
Router(config-std-nacl)#deny 192.168.1.2 0.0.0.0
با این دستور، ip address مربوط به pc1 را Deny میکنیم. اگر توجه کنید در قسمت اول، دستور Deny و بعد، ip address مربوط بهpc1 و بعد از آن که مهم است از Wildcard Mask تأکیدی استفاده کردیم، یعنی استفاده از ۴ تا صفر که تأکید بر Deny کردن همین ip را دارد. اگر wild Card Mask را به صورت ۰.۰.۰.۲۵۵ وارد کنیم، یعنی تمام ip address ها در رنج ۱۹۲.۱۶۸.۱.۰ فیلتر شود، پس سعی کنید از Wild card Mask تأکیدی استفاده کنید.
Router(config-std-nacl)#permit any
بعد از Deny حتماً از Permit استفاده کنید، چون هر زمان که از Deny استفاده میکنید، بقیهی شبکه هم deny میشود و به خاطر همین از Permit Any استفاده میکنیم تا بقیهی شبکه اجازهی دسترسی داشته باشند.
بعد از تعریف کامل access List باید به روتر بگوییم که این فیلترینگ را روی کدام پورت انجام بدهد، پس وارد روتر میشویم. اگر توجه کنید میخواهیم دسترسی pc1 به pc3 و pc4 جلوگیری کنیم، پس باید در پورت Fa0/1 روتر دستور زیر را وارد کنیم:
Router(config)# int f0/1
Router(config-if)#ip access-group dpc1 out
به دستور توجه کنید،ip Access-group را تعریف و بعد از آن، نام Access List که ایجاد کردهایم را وارد میکنیم. گفتیم ترافیک این access List در زمان خروج از اینترفیس فیلتر شود. اگر به جای out، گزینهی in را انتخاب میکردید، این بدان معنا بود که شما access List را برای شبکهی ۱۹۲.۱۶۸.۲.۰ نوشتید که این امر اشتباه است و این access list عمل نمیکند.
و حالا اگر ازpc1 به pc3 و pc4، Ping کنید، با پیام زیر مواجه میشوید:
PC>ping 192.168.2.3
Pinging 192.168.2.3 with 32 bytes of data:
Reply from 192.168.1.1: Destination host unreachable.
Reply from 192.168.1.1: Destination host unreachable.
Reply from 192.168.1.1: Destination host unreachable.
Reply from 192.168.1.1: Destination host unreachable.
و حالا اگر از طریق pc2 بخواهید pc3 و pc4 را Ping کنید، جواب خواهید گرفت.
PC>ping 192.168.2.3
Pinging 192.168.2.3 with 32 bytes of data:
Reply from 192.168.2.3: bytes=32 time=1ms TTL=127
Reply from 192.168.2.3: bytes=32 time=0ms TTL=127
Reply from 192.168.2.3: bytes=32 time=0ms TTL=127
Reply from 192.168.2.3: bytes=32 time=0ms TTL=127
Ping statistics for 192.168.2.3:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 1ms, Average = 0ms
برای قرار دادن توضیحات روی یک Access List، باید از دستور Remark استفاده کرد:
Router(config-std-nacl)# remark Access List Deny Pc1
برای مشاهدهی این دستور باید وارد Running-config شوید تا این پیام را مشاهده کنید.
Router# show Running-Config
access-list 20 remark Access List Deny Pc1
Access List پیشرفته
این نوع Access List از شمارههای ۱۰۰ تا ۱۹۹ و ۲۰۰۰ تا ۲۶۹۹ تشکیل شده است و میتواند ترافیک مربوط به مبدأ و مقصد را مورد بررسی قرار دهد، حتی میتوانید پروتکلها یا برنامههای خاص را Deny یا Permit کنید.
مثال۵: در این مثال میخواهیم Telnet را روی روتر راهاندازی کنیم و accessList بنویسیم که از دسترسی Pc2 به Telnet جلوگیری کند.
وارد روتر میشویم و به صورت زیر عمل میکنیم:
Router(config)#ip access-list extended Dpc2tel
یک access List extended با نام Dpc2tel را ایجاد کردیم که شما میتوانید به جای این نام از نام دلخواه یا از شمارههای ذکرشده در قسمت قبل استفاده کنید.
Router(config-ext-nacl)# deny tcp 192.168.2.0 0.0.0.255 any eq 23
در این قسمت برای Deny کردن pc2 برای جلوگیری از Telnet، باید از پروتکل Tcp و پورت ۲۳ که مربوط به Telnet است را Deny کنید. در زیر جدول مربوط به پروتکلها و شمارهی پورتها مشخص شده است.
Router(config-ext-nacl)# deny tcp 192.168.2.0 0.0.0.255 any eq 23
چون در اینجا قرار است که Telnet را برایpc2 ببندیم، از پروتکل TCP طبق جدول و از پورت ۲۳ که مربوط به Telnet است، استفاده میکنیم، پس به این صورت بخوانیم که Deny کن، پروتکل TCP را برای شبکهی ۱۹۲.۱۶۸.۲.۰ با Wild Card mask، ۰.۰.۰.۲۵۵ و با پورت ۲۳ که مربوط به Telnet است.
نکته: بعد از این کار، تمام ترافیک مربوط به شبکهی ۱۹۲.۱۶۸.۲.۰ فیلتر میشود، به خاطر این باید از دستور زیر در آخر کار برای Permit دادن به بقیهی شبکه استفاده کرد.
Router(config-ext-nacl)#permit ip any any
با این کار، pc2 میتواند با روتر ارتباط داشته باشد و فقط پروتکل Telnet بسته شده است. اگر یادتان باشد در access List standard همهی ترافیک مربوط به یک دستگاه فیلتر میشد و حق دسترسی به هیچ عنوان نداشت، اما در accesslist Extended این چنین نیست و فقط pc2 نمیتواند Telnet کند، اما میتواند روتر را ping کند.
در ادامه باید این access List را روی پورت روتر فعال کنیم:
Router(config-if)#ip access-group Dpc2tel in
پس این دستور به این صورت خوانده میشود که Ip access-group Dpc2tel را بر روی این پورت به صورت ورودی فعال کن، ورودی یعنی اینکه Pc2 در حال ورود به روتر است. اگر از Pc2 به روتر Telnet کنیم، جواب نمیدهد.
PC>telnet 192.168.2.1
Trying 192.168.2.1 ...
% Connection timed out; remote host not responding
اما اگر به روتر ping کنیم، جواب میگیریم:
PC>ping 192.168.2.1
Pinging 192.168.2.1 with 32 bytes of data:
Reply from 192.168.2.1: bytes=32 time=1ms TTL=255
Reply from 192.168.2.1: bytes=32 time=0ms TTL=255
Reply from 192.168.2.1: bytes=32 time=0ms TTL=255
Reply from 192.168.2.1: bytes=32 time=0ms TTL=255
Ping statistics for 192.168.2.1:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 1ms, Average = 0ms
دستورShow access-lists
این دستور، تعداد Access List های موجود در روتر را با جزئیات نمایش میدهد:
Router(config)#do sh ip access-list
Extended IP access list Dpc2tel
دوستان توجه داشته باشید که دستورات به صورت خلاصهشده وارد شده است و چون در مد Global هستیم، در اول دستور از do استفاده کردیم.
دستورshow access-list
با این دستور میتوانیم جزئیات یک access-list را مشاهده کنیم:
Router#show access-lists Dpc2tel
Extended IP access list Dpc2tel
deny tcp 192.168.2.0 0.0.0.255 any eq telnet (24 match(es))
permit ip any any (8 match(es))
در ادامه از access-List بسیار استفاده میکنیم و این دستور یک دستوراساسی در سیسکو است.
استفاده از Access-List در پورت مجازی VTY
شما میتوانید با تعریف یک ACCESS List و فعال کردن آن در پورت Vtyبه یک ip اجازهی Telnet بدهید یا ندهید. برای انجام این کار به مثال زیر توجه کنید:
مانند شکل بالا، یک روتر و دو pc به صفحه اضافه و به هم متصل کنید و به پورتهای مورد نظرip دهید.
وارد روتر شوید و access-List زیر را وارد کنید:
Router(config)#ip access-list standard 10
Router(config-std-nacl)#permit 192.168.1.0 0.0.0.255
در دستورات بالا، یکaccess-list استاندارد با شمارهی ۱۰ تعریف کردیم و بعد از آن به شبکهی ۱۹۲.۱۶۸.۱.۰ اجازه دسترسی دادیم و زمانی که یک Permit برای یک شبکه تعریف میکنیم، بقیهی شبکههاDeny میشوند.
بعد از ایجاد Access-list، وارد پورتLine Vty میشویم و telnet را روی پورتها فعال میکنیم:
Router(config)#line vty 0 15
Router(config-line)#password 123
Router(config-line)#login
Router(config-line)#access-class 10 in
در دستور اول وارد پورت ۰ ۱۵ VTYمیشویم و بعد، رمز عبور را بر روی پورتها قرار میدهیم، سپس با دستور login میگوییم که در زمان telnet شدن، رمز عبور را درخواست کند و بعد از آن، با دستور access-class به این پورت میگوییم که در زمان telnet شدن، فقط ip address هایی را قبول کن که access-list 10 میگوید.
بعد از اتمام کار، اگر از طریق pc1 به روتر telnet کنید، جواب میگیرید، اما از طریق pc2 این امکان وجود ندارد.