IPv4の基本的なACL[番号付き標準ACL/名前付き標準ACL/ワイルドカードマスク]

2015年4月20日(月)
野口 一徳
この連載では、Cisco CCENT/CCNAの資格試験対策とするために、Cisco Press公式ガイドブックに掲載されている例題を抜粋し、その例題の解答について解説を行っています。
 
今回は、パケットフィルタリングなどで使用されるアクセスコントロールリスト(ACL:Access Control List)の基礎としてIPv4の番号付き標準ACLについて説明します。
 

■番号付き標準ACLについての例題

まずは、IPv4の基本的なアクセスコントロールリストである番号付き標準ACL(Standard Access Control List)についての例題を以下に示します。
 
公式ガイドブック22章の問題5
 

※上記の問題4は『シスコ技術者認定試験 公式ガイドブック Cisco CCENT/CCNA ICND1 100-101J』 p.601より抜粋。

 

●例題の解説

 
標準ACLは、パケットの送信元IPアドレスをもとにマッチングを行うフィルタ機能です。パケットの送信元IPアドレスに対して、ACLで指定したIPアドレスとワイルドカードマスクを組み合わせて表現するアドレス値の範囲に一致するかどうかをチェックします。
 
上記の問題では、ACLの識別に番号を使用しています。ACLの番号が1から99の範囲なので、標準ACLになります。問題の内容を標準ACLの具体的な例で表現すると次のようになります。
 access-list 1 permit 1.0.0.0 0.255.255.255
 access-list 1 permit 1.1.0.0 0.0.255.255
 access-list 1 permit 1.1.1.0 0.0.0.255
[access-list 1 deny any]
ここでは、アクションとしてpermit(許可)する例としました。この場合、同じ1の番号の付いた複数の行がACLのまとまりとして扱われます。パケットの送信元IPアドレスに対して、上の行から順番にマッチングの処理が行われます。最初に一致した行に対するアクション(例では許可)が行われてパケットの検査は終了します。その後の行の処理は打ち切られます。
 
最後の行は暗黙のdeny anyなどと呼ばれ、ACLの全ての行で条件に一致しなかった場合には、全てのパケットの拒否を意味するこの行があるものとして処理され、パケットは最終的に廃棄されます。
 
マッチングで難しく感じられるのは、ワイルドカードマスクによるマッチングの仕組みでしょう。ワイルドカードマスクのビットが0の位置は、パケットの送信元IPアドレスの対応する位置のビット値がACLで指定したIPアドレスのビット値と等しいことをチェックします。一方、ビットが1の位置は、パケットの送信元IPアドレスの対応する位置のビットをチェックしません。
 
送信元アドレスが1.1.1.1であるパケットがチェックされるケースを見てみましょう。
 
具体的な例のACLの1行目では、ワイルドカードマスクの9~32ビットが1なので、パケットのIPアドレスのこの部分はチェックされず、0でも1でもよいことになります。一方、ワイルドカードマスクの1~8ビットが0なので、パケットのIPアドレスの1~8ビットが、ACLで指定したIPアドレスのこの位置の値と等しいことをチェックします。
 
1行目では、ACLのIPアドレスとワイルドカードマスクからの「1.-.-.-」とパケットの送信元IPアドレスの「1.-.-.-」を照合することにより、パケットの送信元IPアドレスは一致することになります。
 
「-」の部分は、チェックしないので、1.0.0.0から1.255.255.255の範囲のIPアドレスを持つパケットが一致します。
 
2行目は、「1.1.-.-」同士のチェックになります。ここでも、一致することになります。
 
3行目は、「1.1.1.-」同士のチェックになります。さらにここでも、一致することになります。
 
マッチングを行えば3行とも一致することになりますが、ACLの処理は1番上から順に行われ、初めに一致した時点で、そのアクションが行われて終了となります。
 
1行目でマッチするので、先の例題の正答はaとなります。
 

■番号付き標準ACLについて

 
標準ACLには次の2種類がありますが、標準ACLとしての機能に違いはありません。
 
●番号付き標準ACL: ACLを番号で識別する。
●名前付き標準ACL: ACLを英数字の名前を付けて識別する。
 
ACLの数が少なくシンプルに記述したい場合は、番号付き標準ACLで、remarkコマンドでコメントを付ければ可読性も良くなります。
 
ACLの数や行数が多い場合には、名前付き標準ACLのほうが可読性は良くなります。
 
ACLの編集方法に違いがありますが、新しいIOSでは番号付き標準ACLも名前つき標準ACLの編集方法で細かな編集ができます。名前の代わりに番号付き標準ACLの番号を指定します。
 

■番号付き標準ACLのコマンド構文

 
番号付き標準ACLのコマンド構文は次のようになります。記述例では、10.1.1.0/25のネットワークからのパケットを拒否します。
 
◆番号付き標準ACLのコマンド構文
access-list 番号 {deny | permit} 送信元IPアドレス [ワイルドカードマスク]
 
●10.1.1.0/25 からのパケットを拒否する記述例
access-list 1 deny 10.1.1.0 0.0.0.127
 
●番号
標準ACLでは、1~99、または、追加された1300~1999の番号を使用します。
 
●アクション
マッチングで一致した場合に、そのパケットの取り扱い方をdeny(拒否)、または、permit(許可)で指示します。パケットを選択するにはpermitを、パケット廃棄するにはdenyを記述します。
 
●送信元IPアドレス
パケットの送信元IPアドレスは、ここに指定したIPアドレスとワイルドカードマスクによって決定されるアドレス値の範囲に一致するかどうかがチェックされます。 なお、標準ACLでは、ワイルドカードマスクを省略できます。その場合は、指定したIPアドレスとパケットの送信元IPアドレスが完全に一致することがチェックされます。
 
●ワイルドカードマスク
ワイルドカードマスクのビットが0の位置では、パケットの送信元IPアドレスのビット値が、ACLで指定したIPアドレスのビット値と等しいことをチェックします(図1)。
 ワイルドカードマスクのビットが1の位置では、パケットの送信元IPアドレスの対応する位置のビットをチェックしません。
 
ワイルドカードマスクのビットとチェックの仕組み
図1 ワイルドカードマスクのビットとチェックの仕組み
 
特別な表現にhostとanyがあります。
 
hostは、0.0.0.0のワイルドカードマスクを指定する代わりに使い、パケットの送信元IPアドレスがACLで指定されたIPアドレスの全ビットで一致することを意味します。
 
次の各行は、同じ意味をもつ記述例です。
 
access-list 2 permit host 10.1.1.1
access-list 2 permit 10.1.1.1 0.0.0.0
access-list 2 permit 10.1.1.1  

※3行目は標準ACLでは省略が可能

 
anyは、255.255.255.255のワイルドカードマスクを指定する代わりに使い、全ビットでチェックをしないで、全てのIPアドレスを対象にすることを意味します。
 
次の各行は、同じ意味をもつ記述例です。
 
access-list 3 permit any
access-list 3 permit 0.0.0.0 255.255.255.255
ネットワークやデータベースなどのIT関係科目について、大学と専門学校で講師を務める。情報処理技術者試験やベンダー系の実技を伴うネットワークとセキュリティの受験指導、情報リテラシや情報工学の試験問題の作成など。技術士(情報工学)、情報処理技術者各種スペシャリスト、職業訓練指導員、CCAI Ciscoインストラクタ。

連載バックナンバー

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています