CCNA対策 9回目 [アクセスリストについて]
・アクセスリスト(ACL[Access Control List])
特定のトラフィック(データ通信)を抽出します。
送信元のIPアドレスなどからリストの作成をします。
これを元に受信するか破棄するかを「パケットフィルタリング機能」で選択します。
また、NATはNAT変換の前後で活用されます。
そのほかにVPN(暗号通信の対象パケットの判断など)、QoS、ダイナミックルーティングなどでも組み合わせて活用されています。
<種類>
例)
アクセスリスト番号 アクセスリスト種類
1~99/1,300~1,999(IOS12.0以降) 標準IP
100~199/2,000~2,699(IOS12.0以降) 拡張IP
600~699 AppleTalk
800~899 標準IPX
900~999 拡張IPX
1,000~1,099 IPX-SAP
*名前* 名前付きIP
上記で、赤太字のリストはCCNAで主に出題される内容になります。
・標準アクセスリスト
送信元IPアドレスのみを使用します。
上記例で記載したIPXも併用できますが、現在はIPX([Internetwork Packet eXchange]Novell社のプロトコル)自体の使用が少ないです。
ex)
Router> enable
Router# config t
Router(config)# access-list *リスト番号* *注1)許可の有無* *送信元IPアドレス* *ワイルドカードマスク*
注1)permit:許可 deny:否定
ワイルドカードの設定により、NWアドレスが一致しているIPアドレスのパケットを登録します。
また、送信元IPアドレスとワイルドカードマスクを使用することで一部のIPアドレスのみ登録することもできます。
ex)
Router(config)# access-list 1 deny XXX.XXX.XXX.39 0.0.0.216
上記の場合、ホストアドレスは216ですので11011000となります。
ですのでこの「1」のある桁を除いたIPアドレス(39、47、55)のパケットを拒否します。
特定のホストを指定する場合は、その送信元のIPアドレスを入力したのちワイルドカードマスクに[0.0.0.0]を入力します。また、ホストアドレスのため
access-list *リスト番号* *許可の有無* host *送信元IPアドレス*
と入力することもできます。
すべてを表す場合は
access-list *リスト番号* *許可の有無* any
と入力します。
また、条件の設定されていないIPアドレスは拒否されます。
(条件以外は自動で「deny」が設定されているのと同義)
そのため、これを「暗黙のdeny any」と呼びます。
これらのリストをそれぞれのインターフェイスに適応することによって
パケットフィルタリングを機能させます。
ex)
Router> enable
Router# config t
Router(config)# interface
Router# interface ethernet 0
Router(config-if)# ip access-group *リスト番号* *注2)インアウトの設定*
注2)in:インバウンド側 out:アウトバウンド側
内側NWに接するEthernetポートをインバウンド、外側をアウトバウンドとしてパケットの通過拒否の判断をしています。
インバウンド側は送信前に判断するのに対してアウトバウンド側はパケットが一度ルータを通じて宛先確認などの処理(ルーティング処理)をした後に判断します。
よってインバウンド側で設定するほうが効率は良くなりますが、条件によってはアウトバウンド側で設定する必要も出てきます。
<アクセスリストの確認>
[show ip access-listsコマンド]を使用します。
ex)
Router> enable
Router# show ip access-lists
Standard IP access list 1
10 deny XXX.XXX.XXX.XXX
20 permit XXX.XXX.XXX.XXX
Standard IP access list 2
~省略~
<インターフェイスのアクセスリストの確認>
[show ip interfaceコマンド]を使用します。
ex)
Router# show ip interface *ethernet*
Ethernet is up, line protocol is down
~省略~
Directed broadcast forwarding is disabled
Outgoing access list is not set
Inbound access list is *リスト番号*
Proxy ARP is enabled
~省略~
・拡張アクセスリスト
ex)
Router> enable
Router# config t
Router(config)# access-list *リスト番号* *注3)許可の有無* *注4)プロトコル* *送信元IPアドレス* *送信元ポート* *宛先IP* *宛先ポート* *オプション*
注3)permit:許可 deny:否定
注4)
プロトコルとポート番号の指定方法例
ahp Authentication Header Protocol
eigrp Cisco's EIGRP routing protocol
esp Encapsulation Security Payload
gre Cisco's GRE tunneling
icmp Internet Control Message Protocol
igmp Internet Gateway Message Protocol
ip Any Internet Protocol
ipinip IP in IP tunneling
nos KA9Q NOS compatible IP over IP tunneling
object-group Service object group
ospf OSPF routing protocol
pcp Payload Compression Protocol
pim Protocol Independent Multicast
sctp Stream Control Transmission Protocol
tcp Transmission Control Protocol
udp User Datagram Protocol
で、オプション部分にポート番号の指定等を行います。
例
IP → any
ICMP → echo(要求)、echo-reply(応答)
TCP,UDP → eq(=)、neq(≠)、lt( less than )、gt( greater than )、range
ex)eq 80 , lt 1024 , range 1024 65535
また、一部のポート番号はキーワードに変換ができます。
例
20→ftp-data
21→ftp
23→telnet
25→smtp[Simple Mail Transfer Protocol]
80→www
110→pop3
送信元ポート、宛先ポート、オプションは省略が可能です。
上記を加味して何文か例示します。
ex1)
Router(config)# access-list 100 deny tcp host XXX.XXX.XXX.XXX host XXX.XXX.XXX.XXX eq www
(host は、サブネットマスク0.0.0.0を省略する場合に使用できます)
ex2)
Router(config)# access-list 100 permit udp any eq 123 host XXX.XXX.XXX.XXX eq 123
ex3)
Router(config)# access-list 100 deny ip any any
同様に、インターフェイスに適用します。
コマンドは[ip access-group コマンド書式]で同様に適応します。
<アクセスリストの確認>
同様に[show ip access-listsコマンド]を使用します。
<インターフェイスのアクセスリストの確認>
同様に[show ip interfaceコマンド]を使用します。
・iperfツールによる設定の確認
iperfサーバをWEB SVに立てます。
ex)
C : \Users> iperf -s -p 80
--------------------------------------------
Server listening on TCP port 80
TCP window size: 8.00 KByte (default)
--------------------------------------------
iperfのクライアントを実行します。
ex)
$ iperf -c XXX.XXX.XXX.XXX -p 80
---------------------------------------------------------
Client connecting to XXX.XXX.XXX.XXX, TCP port 80
TCP window size: 129 KByte (default)
---------------------------------------------------------
[ 3] local XXX.XXX.XXX.XXX port 45678 connected with XXX.XXX.XXX.XXX port 80
[ ID] Interval Transfer Bendwidth
[ 3] 0.0-10.0 sec 10.0 MBytes n.n Mbits/sec
上記から、80番での通信はできています。
・名前付きアクセスリスト
標準アクセスリスト、拡張アクセスリスト共に番号で認識しています。
これを文字列で認識させることができます。
(IOS 11.2以降から可能)
<特徴>
標準アクセスリスト、拡張アクセスリストでは一度設定してしまうと特定の行が削除できません(例:リストであるIPを拒否した→これを削除したいけど消せない)。一から作りなおす必要があります。
名前付きアクセスリストにすると、この特定の行の削除が可能になります。
作成していきます。
[ ip access-list standard コマンド]で作成して名前付き標準IPアクセスリスト設定モードに遷移します。[exitコマンド]で退出します。
ex)
Router> enable
Router# config t
Router(config)# ip access-list standard *名前*
Router(config-std-nacl)#
設定例
Router(config-std-nacl)# deny XXX.XXX.XXX.XXX 0.0.0.255
Router(config-std-nacl)# permit any
同様にアクセスリストに設定されていないIPアドレスは暗黙のdeny anyが適用されています。
インターフェイスに適用します。
コマンドは[ip access-group コマンド書式]で同様に適応します。
名前付き拡張IPアクセスリストを設定する場合は
[ ip access-list extended コマンド]を使用します。
名前付き拡張IPアクセスリスト設定モードに遷移します。[exitコマンド]で退出します。
Router> enable
Router# config t
Router(config)# ip access-list extended *名前*
Router(config-ext-nacl)#
設定例
Router(config-ext-nacl)# deny tcp host XXX.XXX.XXX.XXX host XXX.XXX.XXX.XXX eq www
Router(config-ext-nacl)# permit ip any any
特定の行を削除したい場合は、行頭に[no]を付けてその行と同じ内容を入力します。
設定例
Router(config-ext-nacl)# no deny tcp host XXX.XXX.XXX.XXX host XXX.XXX.XXX.XXX eq www
<アクセスリストの確認>
同様に[show ip access-listsコマンド]を使用します。
<インターフェイスのアクセスリストの確認>
同様に[show ip interfaceコマンド]を使用します。
参考
CCNA対策から学ぶネットワーク運用ガイド2 ほか