演習03ACL
構成図

課題
RにACLの設定を行い,次のような通信制御を実現してください。
- PC1⇔PC2の相互通信を禁止する。
- PC1-2ともに,SVへのHTTP・HTTPS通信は許可するが,ICMPは禁止する。
- 上記以外の通信は全て許可する。
- 機器配置
- PC1-2,SVのIPアドレス付与・デフォルトゲートウェイ設定
- R・L2SW1-2のホスト名設定・IPアドレス付与
- 機器間のケーブル接続
パラメータ
●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の通信に成功することを確認する。
使用するコマンド
access-list <ACL番号> <permit | deny>
ip access-group <ACL番号> <適用方向>
解説
⑴ 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アクセスを行った結果を,以下に示します。
