拡張アクセスリスト設定
拡張アクセスリストは標準アクセスリストよりも、より細かな条件でトラフィックを抽出することができます。
対応しているプロトコルは、標準アクセスリストと同じく、IPの他にIPXにも対応していますが、現在、IPXが使用されることがほとんどないため、CCNA試験では拡張IPアクセスリストのみが出題されます。
そのため、今回は拡張IPアクセスリストの設定方法について紹介していきます。
拡張IPアクセスリストの作成
- 拡張IPアクセスリスト書式
- (config)# access-list [ACL番号(100~199)] [permit | deny] [プロコトル] [送信元IP] {送信元ポート} [宛先IP] {宛先ポート} {オプション}
※{}は省略可能
トランスポート層の情報であるプロトコル(TCP、UDP等)やポート番号まで指定できるため、それらの情報から特定のアプリケーションに対しての制御をすることが可能です。
プロトコル | ポート番号の指定方法(例) |
---|---|
ip | any(全て) |
tcp | eq (等しい) eq 80 neq(等しくない) neq 80 lt(より小さい) lt 1024 gt(より大きい) gt 1023 range(範囲) range 1024 65535 |
udp | eq (等しい) eq 69 neq(等しくない) neq 69 lt(より小さい) lt 1024 gt(より大きい) gt 1023 range(範囲) range 1024 65535 |
icmp | echo(エコー要求) echo-reply(エコー応答) |
ポート番号は、数字をそのまま記述する他に、キーワードで記述する方法もあります。
ポート番号 | キーワード |
---|---|
20 | ftp-data |
21 | ftp |
23 | telnet |
25 | smtp |
80 | www |
110 | pop3 |
では実際に下図のようなネットワークを組み、拡張IPアクセスリストを作成してみます。
RouterA(config)#access-list 100 deny tcp host 192.168.0.10 host 10.0.0.100 eq www RouterA(config)#access-list 100 permit ip any any
※hostキーワードを使用して記述しています。「host 192.168.0.10」は「192.168.0.10 0.0.0.0」と同意です。
1行目で送信元IPが「192.168.0.10」のホストから宛先「10.0.0.100」のTCP80番宛のパケットを拒否するよう指定しています。
2行目でその他全てのパケットを許可するよう指定しています。標準IPアクセスリスト同様、この指定がないと暗黙の拒否が働き、全てのパケットが拒否されてしまいます。
拡張IPアクセスリストの適用
標準IPアクセスリスト同様、作成したアクセスリストをインターフェイスに適用することで、パケットフィルタリングとして機能するようになります。
インターフェイスへはインバウンド、アウトバウンドのどちらかに適用することになります。
- ip access-groupコマンド書式
- (config-if)# ip access-group [ACL番号] [in | out]
RouterA(config)#interface ethernet 0 RouterA(config-if)#ip access-group 100 in
上記では拡張IPアクセスリスト100をehternet0インターフェイスのインバウンドに適用させています。
以上で、拡張IPアクセスリストを使用したパケットフィルタリングの設定は完了です。
この構成だと、「PC A」から「WEB SV」上のHPを閲覧することができ、「PC B」からは閲覧できません。
今回は、iperf(アイパーフ)というツールを使って設定がうまくいっているか確かめてみます。
※iperfの詳しい使い方については別の記事で紹介します。
まず、iperfのサーバを「WEB SV」上に立てます。
C:\Users\gran>iperf -s -p 80 ------------------------------------------------------------ Server listening on TCP port 80 TCP window size: 8.00 KByte (default) ------------------------------------------------------------
-pオプションで待ち受けるポートを指定できます。
今回はWebサーバに見立てて、ポート80番で待ち受けるよう指定します。
続いてiperfのクライアントを「PC A」から実行します。
$ iperf -c 10.0.0.100 -p 80 ------------------------------------------------------------ Client connecting to 10.0.0.100, TCP port 80 TCP window size: 129 KByte (default) ------------------------------------------------------------ [ 3] local 192.168.0.1 port 49159 connected with 10.0.0.100 port 80 [ ID] Interval Transfer Bandwidth [ 3] 0.0-10.0 sec 8.56 MBytes 7.18 Mbits/sec
「PC A」から「WEB SV」ポート80番宛ての通信に成功していることを確認できます。
では、「PC B」から実行してみます。
$ iperf -c 10.0.0.100 -p 80
connect failed: Connection refused
write1 failed: Broken pipe
------------------------------------------------------------
Client connecting to 10.0.0.100, TCP port 80
TCP window size: 128 KByte (default)
------------------------------------------------------------
write2 failed: Broken pipe
[ 3] local 192.168.0.10 port 49157 connected with 10.0.0.100 port 80
[ ID] Interval Transfer Bandwidth
[ 3] 0.0- 0.0 sec 0.00 Bytes 0.00 bits/sec
「PC B」から「WEB SV」ポート80番宛ての通信には失敗していることを確認できます。
つまり、意図したとおりに動作しているということになります。
では、もうひとつ、「PC B」から「WEB SV」ポート81番宛ての通信を確認してみます。まずは、iperfのサーバをポート81番で待ち受けます。
C:\Users\gran>iperf -s -p 81 ------------------------------------------------------------ Server listening on TCP port 81 TCP window size: 8.00 KByte (default) ------------------------------------------------------------
続いてiperfのクライアントを「PC A」から実行します。
$ iperf -c 10.0.0.100 -p 81 ------------------------------------------------------------ Client connecting to 10.0.0.100, TCP port 81 TCP window size: 129 KByte (default) ------------------------------------------------------------ [ 3] local 192.168.0.10 port 49162 connected with 10.0.0.100 port 81 [ ID] Interval Transfer Bandwidth [ 3] 0.0-10.0 sec 8.61 MBytes 7.21 Mbits/sec
こちらは成功しています。
拡張IPアクセスリスト100では、ポート80番宛てのトラフィックのみ遮断するように指定しているので、「PC B」からでも80番以外のポートへの通信は成功します。
拡張IPアクセスリストの確認
ルータに作成されている拡張IPアクセスリストの確認はshow ip access-listsコマンドを使用します。
RouterA#show ip access-lists Standard IP access list 1 10 deny 192.168.0.10 20 permit 192.168.0.0, wildcard bits 0.0.0.255 (535 matches) Standard IP access list 2 10 permit any Extended IP access list 100 10 deny tcp host 192.168.0.10 host 10.0.0.100 eq www (6 matches) 20 permit ip any any (19386 matches)
インターフェイスに適用している標準IPアクセスリストを確認するにはshow ip interfaceコマンドを使用します。
RouterA#show ip interface ethernet 0 Ethernet0 is up, line protocol is up Internet address is 192.168.0.100/24 Broadcast address is 255.255.255.255 Address determined by non-volatile memory MTU is 1500 bytes Helper address is not set Directed broadcast forwarding is disabled Outgoing access list is not set Inbound access list is 100 Proxy ARP is enabled Local Proxy ARP is disabled Security level is default ~ 省略 ~
これらはshow running-configコマンドでも確認できます。