【初心者向け】Packet Tracerでネットワークを学ぶ(ACL①)
公開日: 2023/2/3
更新日: 2023/2/3
Packet Tracerでネットワークを学びます
1. アクセスコントロールリストとは
アクセスコントロールリストはルータに届いたパケットの転送を、許可するか拒否するかといった様々な条件が登録されているリストです。ACLと略します。
ルータはパケットが受信時または送信時にアクセスコントロールリストに登録されている条件と照らし合わせ転送するか破棄するかを判断します。
例えば以下の様な環境があったとします。
Server0には重要なデータが保管されておりPCAからのアクセスのみを許可したい場合、ACLに「送信元がPCAの場合は許可」という条件を登録することでアクセスの制御が実現できます。
※ACLを設定すると条件にない通信は全て拒否されるようになります。
またHTTPやFTPなど通信プロトコルまで指定して条件に追加することができます。
ルータはパケットが受信時または送信時にアクセスコントロールリストに登録されている条件と照らし合わせ転送するか破棄するかを判断します。
例えば以下の様な環境があったとします。
Server0には重要なデータが保管されておりPCAからのアクセスのみを許可したい場合、ACLに「送信元がPCAの場合は許可」という条件を登録することでアクセスの制御が実現できます。
※ACLを設定すると条件にない通信は全て拒否されるようになります。
またHTTPやFTPなど通信プロトコルまで指定して条件に追加することができます。
2. ACLの種類
ACLには2種類あります。
標準ACLと拡張ACLです。
それぞれの特徴は以下の通りです。
標準ACLには番号付き標準ACLと名前付き標準ACLがあります。
番号付き標準ACLには1から99と1300から1999の任意の番号を指定します。
名前付き標準ACLには任意の文字列を指定します。
拡張ACLにも番号付き拡張ACLと名前付き拡張ACLがあります。
番号付き拡張ACLには100から199と2000から2699の任意の番号を指定します。
名前付き拡張ACLには任意の文字列を指定します。
拡張ACLの方が細かく条件を指定できる為、よく使用されています。
標準ACLと拡張ACLです。
それぞれの特徴は以下の通りです。
・標準ACL
標準ACLは条件に送信元IPアドレスのみが指定できます。標準ACLには番号付き標準ACLと名前付き標準ACLがあります。
番号付き標準ACLには1から99と1300から1999の任意の番号を指定します。
名前付き標準ACLには任意の文字列を指定します。
・拡張ACL
拡張ACLには条件に送信元IPアドレス、宛先IPアドレス、プロトコル番号、送信元ポート、宛先ポート番号を条件として指定できます。拡張ACLにも番号付き拡張ACLと名前付き拡張ACLがあります。
番号付き拡張ACLには100から199と2000から2699の任意の番号を指定します。
名前付き拡張ACLには任意の文字列を指定します。
拡張ACLの方が細かく条件を指定できる為、よく使用されています。
3. ACL適用ルール
ACLは設定した順番で登録されていきます。
登録される度にリストの下に条件が追加されていくのです。
パケットが届いた場合は以下の様なルールにしたがってACLに登録された条件と照らし合わされます。
①リストの一番上の条件からチェックする。適合した場合はその条件を適用する。
②適合しなかった場合は、次の条件をチェックする。
③最後の行までチェックし該当する条件がなかった場合は拒否する。
ACLには③のような見えない条件があり、この条件を「暗黙のdeny」と言います。
ACLを設定する場合は「暗黙のdeny」を考慮することも必要で、最終的に全ての通信を許可したい場合は明示的に「全ての通信を許可する」といった条件をつける必要があります。
また細かい条件ほど先に登録し少しずつ条件を緩めて登録することで想定通りのアクセス制御を実現することができます。
登録される度にリストの下に条件が追加されていくのです。
パケットが届いた場合は以下の様なルールにしたがってACLに登録された条件と照らし合わされます。
①リストの一番上の条件からチェックする。適合した場合はその条件を適用する。
②適合しなかった場合は、次の条件をチェックする。
③最後の行までチェックし該当する条件がなかった場合は拒否する。
ACLには③のような見えない条件があり、この条件を「暗黙のdeny」と言います。
ACLを設定する場合は「暗黙のdeny」を考慮することも必要で、最終的に全ての通信を許可したい場合は明示的に「全ての通信を許可する」といった条件をつける必要があります。
また細かい条件ほど先に登録し少しずつ条件を緩めて登録することで想定通りのアクセス制御を実現することができます。
4. ワイルドカードマスク
ACLの条件にはワイルドカードマスクを使用します。
ワイルドカードマスクはサブネットマスクを反転したものです。
例 サブネットマスク → ワイルドカードマスク
255.255.255.0 → 0.0.0.255
特定のIPアドレスを指定する場合には以下のように記述します
<ワイルドカードマスク>
192.168.1.10 0.0.0.0
またhostと記述することでワイルドカードマスクを省略することが可能です。
host 192.168.1.10
全てIPアドレスを条件とする場合は以下のように記述します
<ワイルドカードマスク>
0.0.0.0. 255.255.255.255
上記条件はanyと記述するのみで省略することができます。
ワイルドカードマスクはサブネットマスクを反転したものです。
例 サブネットマスク → ワイルドカードマスク
255.255.255.0 → 0.0.0.255
特定のIPアドレスを指定する場合には以下のように記述します
192.168.1.10 0.0.0.0
またhostと記述することでワイルドカードマスクを省略することが可能です。
host 192.168.1.10
全てIPアドレスを条件とする場合は以下のように記述します
0.0.0.0. 255.255.255.255
上記条件はanyと記述するのみで省略することができます。
5. ACL適用タイミング
ACLを適用するタイミングは2パターンあります。
一つはルータのインターフェースにパケットが到達する時、もうひとつはルータのインターフェースからパケットを送信する時です。
パケットが到達する時をインバウンド。
パケットを送信する時をアウトバウンドといいます。
一つのインターフェースに対しインバウンドとアウトバウンドに一つずつACLを設定することが出来ます。
ルータ自身が送信するパケットはチェックされません。
一つはルータのインターフェースにパケットが到達する時、もうひとつはルータのインターフェースからパケットを送信する時です。
パケットが到達する時をインバウンド。
パケットを送信する時をアウトバウンドといいます。
一つのインターフェースに対しインバウンドとアウトバウンドに一つずつACLを設定することが出来ます。
ルータ自身が送信するパケットはチェックされません。
5-1. インバウンド
インバウンドはインターフェースにパケットが到達した時にACLを適用します。
以下の図ではFa0/0のインバウンドにACLを設定した図です。
パケットがF0/0で到達したらACLの条件に当てはまるかチェックします。
以下の図ではFa0/0のインバウンドにACLを設定した図です。
パケットがF0/0で到達したらACLの条件に当てはまるかチェックします。
5-2. アウトバウンド
アウトバウンドはインターフェースからパケットを転送する前にACLを適用します。
以下の図ではFa0/1のアウトバウンドにACLを設定下図です。
パケットをFa0/1から転送する前にACLの条件に当てはまるかチェックします。
以下の図ではFa0/1のアウトバウンドにACLを設定下図です。
パケットをFa0/1から転送する前にACLの条件に当てはまるかチェックします。
6. 標準ACLの作成方法
標準ACLの作成には以下の手順で実施します。
1.標準ACLの作成
2.インターフェースに適用
また以下の環境でPCAからPCBの通信のみ許可するACLを作成します。
1.標準ACLの作成
2.インターフェースに適用
また以下の環境でPCAからPCBの通信のみ許可するACLを作成します。
6-1. 1.標準ACLの作成
標準ACLの作成にはグローバルコンフィギュレーションモードで以下のコマンドを入力します。
<送信元IPアドレス> <ワイルドカードマスク>
1~99、1300から1999の任意の数字
permitは許可、denyは拒否
ACL番号を合わせることで条件がリストに追加されていきます。
ACL名は任意の名前です。コマンド入力後標準ACLコンフィギュレーションモードに移行するの 以下のコマンドを入力します。
※プロンプトは(config-std-nacl)
# <送信元IPアドレス> <ワイルドカードマスク>
以下の図は実際に番号付きACLを作成した図です。
1番という番号付きACLを作成しており2つの条件を登録しています。
①は192.168.1.1を送信元とするパケットの拒否
②は全ての通信を許可
②を設定しないとPCCの通信が暗黙のdenyで拒否されてしまいます。
番号付き標準ACL
#access-listpermitは許可、denyは拒否
ACL番号を合わせることで条件がリストに追加されていきます。
名前付き標準ACL
#ip access-list standardACL名は任意の名前です。コマンド入力後標準ACLコンフィギュレーションモードに移行するの 以下のコマンドを入力します。
※プロンプトは(config-std-nacl)
#
以下の図は実際に番号付きACLを作成した図です。
1番という番号付きACLを作成しており2つの条件を登録しています。
①は192.168.1.1を送信元とするパケットの拒否
②は全ての通信を許可
②を設定しないとPCCの通信が暗黙のdenyで拒否されてしまいます。
6-2. 2.インターフェースに適用
作成した標準ACLをインターフェースのインバウンドまたはアウトバウンドに適用します。
標準ACLでは宛先に一番近いインターフェースに適用することが推奨されています。
コマンドとしてはインターフェースコンフィギュレーションにて以下のコマンドを入力します。
#ip access-group < ACL番号 | ACL名 > < in | out>
< ACL番号 | ACL名 >に作成したACL番号またはACL名を入力します。
< in | out >ではinがインバウンド、outがアウトバウンドとなります。
適用方向(inかout)を間違えると予期せぬ通信が可能となってしまうので注意しましょう。
以下の図は実際にインターフェースの適用を実施した図です。
今回の例ではFa0/1が宛先に一番近いインターフェースとなります。
①でアウトバウンドに1番の番号付きACLを設定しました。
標準ACLでは宛先に一番近いインターフェースに適用することが推奨されています。
コマンドとしてはインターフェースコンフィギュレーションにて以下のコマンドを入力します。
#ip access-group < ACL番号 | ACL名 > < in | out>
< ACL番号 | ACL名 >に作成したACL番号またはACL名を入力します。
< in | out >ではinがインバウンド、outがアウトバウンドとなります。
適用方向(inかout)を間違えると予期せぬ通信が可能となってしまうので注意しましょう。
以下の図は実際にインターフェースの適用を実施した図です。
今回の例ではFa0/1が宛先に一番近いインターフェースとなります。
①でアウトバウンドに1番の番号付きACLを設定しました。
6-3. 3.疎通確認
ACLの作成と適用が完了したので想定通りにPingで通信できるか確認します。
【想定】
・PCAからPCBの通信は拒否される
・PCCからPCBの通信は許可される
【結果】
・PCAからPCBの通信は拒否される
100% lossとなっているので通信が拒否されていました。
・PCCからPCBの通信は許可される
0% lossとなっているので通信が許可されていました。
【想定】
・PCAからPCBの通信は拒否される
・PCCからPCBの通信は許可される
【結果】
・PCAからPCBの通信は拒否される
100% lossとなっているので通信が拒否されていました。
・PCCからPCBの通信は許可される
0% lossとなっているので通信が許可されていました。