Cisco Packet Tracerを活用したネットワーク演習

Cisco Packet Tracerは,Cisco社が提供するネットワークシミュレータです。
無料で利用でき,ネットワーク構築を練習することができます。
このサイトでは,Packet Tracerの利用方法と,CCNA対策に役立つ演習シナリオを紹介します。

演習03ACL

構成図

課題

RにACLの設定を行い,次のような通信制御を実現してください。

なお,問題ファイルでは次の設定項目は完了しています。

パラメータ

●IPアドレス

ホスト名 I/F名 IPアドレス サブネットマスク
R G0/0/0 10.0.0.254 255.255.255.0
G0/0/1 192.168.10.254 255.255.255.0
G0/0/2 192.168.20.254 255.255.255.0

ホスト名 IPアドレス サブネットマスク デフォルトGW
PC1 192.168.10.1 255.255.255.0 192.168.10.254
PC2 192.168.20.1 255.255.255.0 192.168.20.254
SV 10.0.0.1 255.255.255.0 10.0.0.254

●ACL

ホスト名 ACL番号 動作 プロトコル 送信元 宛先
R 101 禁止 IP 192.168.10.0/24 192.168.20.0/24
101 許可 TCP SV(80・443番ポート)
101 禁止 ICMP SV
101 許可 IP 全て
102 禁止 IP 192.168.20.0/24 192.168.10.0/24
102 許可 TCP SV(80・443番ポート)
102 禁止 ICMP SV
102 許可 IP 全て

ホスト名 ACL番号 I/F 方向
R 101 G0/0/1 in
102 G0/0/2 in

手順

⑴ PC1⇔PC2でpingに成功すること,PC1-2⇒SVへのpingおよびHTTPの通信に成功することを確認する。
  なおHTTPの通信は,PCのwebブラウザシミュレータのアドレス欄に「http://10.0.0.1」と入力することで確認する。

⑵ RにACLを設定する。

⑶ ⑵で作成したACLをI/Fに適用する。

⑷ PC1・2同士でpingに失敗すること,PC1・2からSVへのpingが失敗すること,HTTPの通信に成功することを確認する。

使用するコマンド

解説

⑴ PC1・2同士でpingに成功すること,PC1・2からSVへのpingおよびHTTPの通信に成功することを確認する。
  なおHTTPの通信は,PCのwebブラウザシミュレータのアドレス欄に「http://10.0.0.1」と入力することで確認する。

問題ファイルでは,IPアドレスとデフォルトゲートウェイの設定のみがされている状態なので,通信制御は行われていません。
PC1からPC2・SVへpingを,SVへHTTPアクセスを行った結果を,以下に示します。

⑵ RにACLを設定する。

ACLによる通信制御は,①ルールを作る→②ルールをI/Fに適用する,という2段階の手順を踏むことになります。⑵の作業は①にあたります。

ACLのルール作成にあたっては,次の点に注意してください。

①エントリは,記述した順番に適用される。

I/Fを通過するパケットがルールに当てはまるかをルールの上からチェックし,いずれかのエントリに合致した時点で探索をやめます。 「Aは禁止,A以外は許可」というポリシーの場合,1行目に「全て許可」,2行目に「Aは禁止」を記述してしまうと,禁止したいAも1行目のエントリに合致してしまい,通信できてしまうことになります。

②明示的に記述されていない通信は,全てブロックされる。

よく「暗黙のdeny」と呼ばれる仕組みです。 「Aは禁止,A以外は許可」というポリシーの場合,「Aを禁止」というルールだけを記述すると,記述されていないA以外も自動的に禁止となり,通信不能になります。 この場合,1行目に「Aを禁止」,2行目に「A以外を許可」と記述しなければなりません。

CiscoのルータやL3スイッチには,標準ACL拡張ACLの2種類が存在し,以下のような違いがあります。

  • 標準ACL=送信元IPアドレスのみをチェック。ACL番号=1~99・1300~1399
  • 拡張ACL=送信元・宛先IPアドレス・ポート番号,通信プロトコルをチェック。ACL番号=100~199・2000~2699

今回は,宛先のIPアドレスやプロトコルに応じた制御が求められているので,拡張ACLを使用します。
拡張ACLの作成コマンドは,以下の構文です。長いですが,覚えておいたほうが良いでしょう。

access-list <ACL番号> <permit | deny> <プロトコル> <送信元IPアドレス> <ワイルドカードマスク> [ポート番号] <宛先IPアドレス> <ワイルドカードマスク> [ポート番号] [オプション]

プロトコルには,基本的にはIP・ICMP・UDP・TCPのいずれかが入ります。プロトコルがUDP・TCPの場合,送信元・宛先のポート番号を指定できます。ポート番号は「443」などと単体で指定することもできますが,「lt」「eq」「gt」と不等号を用いて範囲指定したり,「eq domain」のように上位プロトコルを用いて指定することもできます。
IPアドレスの指定は,IPアドレスとワイルドカードマスクを使用する書式のほか,0.0.0.0/0の代わりに「any」,a.b.c.d/32の代わりに「host a.b.c.d」という簡易的な書式もあります。

以上を踏まえ,Rに入力すべきコマンドは以下の通りです。

R# configure terminal
R(config)# access-list 101 deny ip 192.168.10.0 0.0.0.255 192.168.20.0 0.0.0.255
R(config)# access-list 101 permit tcp 192.168.10.0 0.0.0.255 host 10.0.0.1 eq www
R(config)# access-list 101 deny ip 192.168.10.0 0.0.0.255 host 10.0.0.1
R(config)# access-list 101 permit ip any any
R(config)# access-list 102 deny ip 192.168.20.0 0.0.0.255 192.168.10.0 0.0.0.255
R(config)# access-list 102 permit tcp 192.168.20.0 0.0.0.255 host 10.0.0.1 eq www
R(config)# access-list 102 deny ip 192.168.20.0 0.0.0.255 host 10.0.0.1
R(config)# access-list 102 permit ip any any

⑶ ⑵で作成したACLをI/Fに適用する。

①ルールを作る→②ルールをI/Fに適用するの②にあたります。ip access-groupコマンドで,適用するACLと方向を指定します。
標準ACLは送信元でしか制御できないので,必要な通信が止まらないよう宛先に近いI/Fに設定することが多く,逆に拡張ACLはきめ細やかな制御を行えるので,送信元に近いI/Fに設定します。 今回は,101番をPC1がつながるG0/0/1に,102番をPC2がつながるG0/0/2に,それぞれinで適用します。

R(config)# interface G0/0/1
R(config-if)# ip access-group 101 in
R(config-if)# interface G0/0/2
R(config-if)# ip access-group 102 in
R(config-if)# end
R#

⑷ PC1・2同士でpingに失敗すること,PC1・2からSVへのpingが失敗すること,HTTPの通信に成功することを確認する。

ACLが正しく効果できているか確認します。
PC1からPC2・SVへpingを,SVへHTTPアクセスを行った結果を,以下に示します。