概要
通信の制御に使用される。ACLの内容に基づいてパケットフィルタリング(ルータに送られてくる通信を許可・拒否する通信に分けること)を行う。様々な種類が存在する。
標準ACL
パケットの送信元IPアドレスをチェックする。
- 番号付き標準ACL:1~99(IOS 12.0以降では1300~1900も可)の値を指定
- 名前付き標準ACL:名前を示す文字列を指定
拡張ACL
送信元IPアドレス、宛先IPアドレス、プロトコル番号、送信元ポート番号、宛先ポート番号をチェックする。
- 番号付き拡張ACL:100~199(IOS 12.0以降では2000~2699も可)の値を指定
- 名前付き拡張ACL:名前を示す文字列を指定
作成時の注意点
- ACLは上の行から順番に検索し該当行があった場合、それ以降の行の検索は行わない。そのため、各順番を間違えると、想定外の動きをしてしまう。
- 「すべて拒否(deny)」という暗黙の行が存在する。ACLのどの行にも当てはまらなかった場合、パケットは破棄されることになる。
- 標準ACLは宛先に近い場所、拡張ACLは送信元に近い場所に適用させる
- 名前付きアクセスリストは特定の行を指定した削除や、シーケンス番号の振り直しができる。
ワイルドカードマスク
OSPFと同様にフィルタリングの条件となる送信元や宛先を指定する際に使用する。特定の送信元や宛先を指定する際、省略形を用いることができる。チェックするビットには0、無視するビットには1を指定する。
-
1つのIPアドレスのみを条件とするワイルドカードマスク
特定のIPアドレスだけを指定する場合は、ワイルカードマスクで0.0.0.0
を指定すればよいが、ワイルドカードマスクを使用せずにhost [IPアドレス]の表記で表すことも出来る。
書式の位置が変わるのに注意すること
-
全てのIPアドレスを条件とするワイルドカードマスク
下の図のようにanyと指定することが可能
ACLの適用
インターフェースに適用できるACLの数は、レイヤ3プロトコル(IPやIPX)ごとに in方向とout方向に1つずつとなる。2つ以上のACLを適用しようとすると上書きされる。
-
インバウンド(IN)で適用した場合
ルータのインターフェイスにパケットが届いたときにACLによるチェックが行われる。 -
アウトバウンド(OUT)で適用した場合
ルーティングテーブルの検索などの処理が行われた後、ルータからパケットが出ていくときにACLによるチェックが行われる。ただし、ルータ自身が送信する通信はチェックの対象とならない。
標準ACLの設定
1. 標準ACLを作成する
access-listコマンド
書式:access-list [ACL番号] [permit | deny] [送信元IPアドレス] [ワイルドカードマスク]
番号付き標準ACLを作成するコマンド。グローバルコンフィギュレーションモードで行う必要がある。1~99(IOS 12.0以降では1300~1900も可)の値を指定する。
ip access-list standardコマンド
書式:ip access-list standard [ACL名]
名前付き標準ACLを作成するコマンド。グローバルコンフィギュレーションモードで行う必要がある。コマンドを実行すると、標準ACLコンフィグレーションモードに移行し、プロンプトも以下のように変更され条件を指定していく。
(Config-std-nacl)#[permit | deny] [送信元IPアドレス] [ワイルドカードマスク]
2.インターフェイスに適用する
ip access-groupコマンド
書式:ip access-group [ACL番号 | ACL名] [in | out]
作成した標準ACLをインターフェイスに適用するコマンド。インターフェイスコンフィギュレーションモードで行う必要がある。in/outはインバウンドとアウトバウンドのこと。頭にnoを付けると、適用が解除される。
宛先に近いインターフェイスに適用することが推奨される。
show access-listsコマンド
書式:show access-lists [ACL番号 | ACL名]
作成されたACLを確認するコマンド。特権EXECモードで行う必要がある。対象のACLを指定しない場合は全てのACLが表示される。
インターフェイスの適用を確認する場合は、show ip interface
コマンドかrunning-config
から確認することができる。
Router#show access-lists 100
Extended IP access list 100
permit tcp host 192.168.10.1 host 192.168.20.1 eq www
deny icmp host 192.168.10.1 host 192.168.20.1 echo
拡張ACLの設定
拡張ACLでは標準ACLより細かくパケットのフィルタリングをすることが可能。
1.拡張ACLを作成する
access-listコマンド
書式:access-list [ACL番号] [permit | deny] [プロトコル] [送信元IPアドレス] [ワイルドカードマスク] [送信元ポート番号] [宛先IPアドレス] [ワイルドカードマスク] [オプション]
番号付き拡張ACLを作成するコマンド。グローバルコンフィギュレーションモードで行う必要がある。
各項目 | 内容 |
---|---|
ACL番号 | 100~199(IOS 12.0以降では2000~2699も可)の値を値を指定する |
permit | 指定した条件に一致したパケットを許可 |
deny | 指定した条件に一致したパケットを拒否 |
プロトコル | ip,tcp,udp,icmpなどのプロトコルを指定する |
送信元ポート番号 | 省略可能。[プロトコル]で指定した際に指定することができる |
オプション | [プロトコル]で指定したプロトコルによって指定できる値が異なる |
オプション | 内容 |
---|---|
established | 内部から発信する通信の戻りのパケットは許可したいが、外部からは、拒否したいという場合に使用する |
log | 条件が一致した情報を記録する。トラフィックの監視、分析、またはトラブルシューティングの際に役立つが、このキーワードを指定した条件文が多数がある場合、機器の負荷が高くなるので注意が必要 |
log-input | パケットを受け取ったインターフェースや、送信元MACアドレス含むログが出力される |
プロトコル | 説明 | オプション例 |
---|---|---|
ip | IPに関する項目。省略するとIPを使用する全通信を指定可能 | dscpなど |
tcp | パラメータ+ポート番号。パラメータはeq(等しい)、neq(等しくない)、lt(小さい)、gt(大きい)、ポート番号は数字またはポート名で指定する | eq www,eq 80 |
udp | パラメータ+ポート番号。指定方法はtcpと一緒 | eq snmp,eq 161 |
icmp | ICMPのメッセージタイプ | echo,echo-reply |
プロトコル | プロトコルナンバー | 説明 | オプション例 |
---|---|---|---|
ip | IPに関する項目。省略するとIPを使用する全通信を指定可能 | dscpなど | |
tcp | 6 | パラメータ+ポート番号。パラメータはeq(等しい)、neq(等しくない)、lt(小さい)、gt(大きい)、ポート番号は数字またはポート名で指定する | eq www,eq 80 |
udp | 17 | パラメータ+ポート番号。指定方法はtcpと一緒 | eq snmp,eq 161 |
icmp | 1 | ICMPのメッセージタイプ | echo,echo-reply |
EIRGP | 88 | ||
OSPF | 89 |
##端末192.168.1.11からネットワーク172.16.1.0/24へのIP通信を拒否する
(config)#access-list 100 deny ip host 192.168.1.11 172.16.1.0 0.0.0.255
##全ての送信元からWebサーバ172.16.0.11へのHTTP通信のみを許可する
(config)#acess-list 100 permit tcp any host 172.16.0.11 eq www
##PC192.168.1.11からネットワーク172.16.1.0/24へのエコー要求を拒否する
(config)#access-list 100 deny icmp host 192.168.1.11 172.16.1.0 0.0.0.255 echo-reply
拡張ACLにも最後に全て拒否するdeny ip any any
という暗黙のdenyの行が存在する。
ip access-list extendedコマンド
書式:ip access-list extended [ACL名]
名前付き拡張ACLを作成するコマンド。グローバルコンフィギュレーションモードで行う必要がある。実行すると、拡張ACLコンフィギュレーションモードに移行し、プロンプトも以下のように変更され条件を指定していく。
(config-ext-nacl)#[permit | deny] [プロトコル] [送信元IPアドレス] [ワイルドカードマスク] [送信元ポート番号] [宛先IPアドレス] [ワイルドカードマスク] [オプション]
2.インターフェイスに適用する
ip access-groupコマンド
書式:ip access-group [ACL番号 | ACL名] [in | out]
インターフェイスコンフィギュレーションモードで実行し、標準ACL同様に適用する。標準ACLは宛先に近いインターフェイスに設定することが推奨されるが、拡張ACLは送信元に近いインターフェイスに適用することが推奨される。
ACLの削除
no access-listコマンド
書式:no access-list [ACL番号 | ACL名]
ACLの削除をするコマンド。グローバルコンフィギュレーションモードで行う必要がある。対象のACLの全てのエントリを削除することは出来るが、特定の行を消すことはできない。
特定の行だけを削除する場合は、標準ACLコンフィギュレーションモードでnoコマンド
を行う必要がある。
(config-std-nacl)#no [シーケンス番号]
Router# conf t
Router(config)#no access-list 3
VTYアクセス制御
ACLは、物理インターフェイスだけではなくVTY回線に適用することも可能。Telnet、SSH接続を利用したルータへのリモートアクセスを制御することができる。適用する場合、送信元IPアドレスのみを条件とするだけでよい。
access-classコマンド
書式:access-class [ACL番号 | ACL名] [in | out]
VTYアクセス制御を行うコマンド。標準ACLを作成し、VTYのラインコンフィギュレーションモードで行う必要がある。
オプション | 内容 |
---|---|
in | 標準ACLで指定された送信元からのアクセスを制御する |
out | 標準ACLが設定されているルータにVTY回線で接続し、そこからさらに別のルータへVTYアクセスする際に制御される。 |
ACLの設定例
ACLの設定例
ルーター、スイッチ、PC間をストレートケーブル、サーバとルータ間をクロスオーバーケーブルでつなぎ、各PC、サーバの「IP Configuration」を開き、IPv4アドレスの設定を行う。
- PC001⇒192.168.10.1/24
- PC002⇒192.168.10.2/24
- PC003⇒192.168.10.3/24
- Server1⇒192.168.20.1/24
- Server2⇒192.168.30.1/24
各PC、サーバのデフォルトゲートウェイ⇒192.168.10.254
Router#show running-config
Building configuration...
Current configuration : 737 bytes
!
version 15.1
(省略)
interface GigabitEthernet0/0
ip address 192.168.10.254 255.255.255.0
duplex auto
speed auto
!
interface GigabitEthernet0/1
ip address 192.168.20.254 255.255.255.0
duplex auto
speed auto
!
interface GigabitEthernet0/2
ip address 192.168.30.254 255.255.255.0
duplex auto
speed auto
(省略)
<html>
<h1>Hello CCNA S1</h1>
</html>
<html>
<h1>Hello CCNA S2</h1>
</html>
標準ACLの設定例
標準ACLの設定例①
Router>enable
Router#conf t
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)#access-list 1 permit host 192.168.10.1
Router(config)#access-list 1 deny any
Router(config)#interface GigabitEthernet 0/0
Router(config-if)#ip access-group 1 ?
##?マークで確認することが出来る
in inbound packets
out outbound packets
Router(config-if)#ip access-group 1 in
Router(config-if)#end
Router#show access-lists 1
Standard IP access list 1
permit host 192.168.10.1
deny any
Router#show running-config
Building configuration...
Current configuration : 821 bytes
!
(省略)
interface GigabitEthernet0/0
ip address 192.168.10.254 255.255.255.0
ip access-group 1 in
duplex auto
speed auto
(省略)
設定後疎通確認を行うと、PC002、PC003は以下の通りになる
C:\>ping 192.168.20.1
Pinging 192.168.20.1 with 32 bytes of data:
Reply from 192.168.10.254: Destination host unreachable.
Reply from 192.168.10.254: Destination host unreachable.
Reply from 192.168.10.254: Destination host unreachable.
Reply from 192.168.10.254: Destination host unreachable.
Ping statistics for 192.168.20.1:
Packets: Sent = 4, Received = 0, Lost = 4 (100% loss),
C:\>ping 192.168.30.1
Pinging 192.168.30.1 with 32 bytes of data:
Reply from 192.168.10.254: Destination host unreachable.
Reply from 192.168.10.254: Destination host unreachable.
Reply from 192.168.10.254: Destination host unreachable.
Reply from 192.168.10.254: Destination host unreachable.
Ping statistics for 192.168.30.1:
Packets: Sent = 4, Received = 0, Lost = 4 (100% loss),
標準ACLの設定例②
Router#conf t
Enter configuration commands, one per line. End with CNTL/Z.
##ワイルドカードマスクにて指定する
Router(config)#access-list 2 permit 192.168.10.2 0.0.0.0
Router(config)#access-list 2 deny 0.0.0.0 255.255.255.255
Router(config)#
Router(config)#interface GigabitEthernet 0/0
Router(config-if)#ip access-group 2 in
Router#show running-config
Building configuration...
Current configuration : 883 bytes
!
version 15.1
(省略)
interface GigabitEthernet0/0
ip address 192.168.10.254 255.255.255.0
ip access-group 2 in
duplex auto
speed auto
(省略)
access-list 1 permit host 192.168.10.1
access-list 1 deny any
access-list 2 permit host 192.168.10.2
access-list 2 deny any
(省略)
設定後疎通確認を行うと、PC002は疎通しPC001、PC003は疎通されない
標準ACLの設定例③
Router#conf t
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)#access-list 3 deny 192.168.10.0 0.0.0.255
Router(config)#access-list 3 deny any
Router(config)#interface GigabitEthernet 0/0
Router(config-if)#ip access-group 3 in
Router(config-if)#end
設定後疎通確認を行うと、PCからサーバに向けての通信がすべて拒否された。
標準ACLの設定例④
Router#conf t
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)#interface GigabitEthernet 0/0
##設定したアクセスグループ3の適用を解除
Router(config-if)#no ip access-group 3 in
Router(config-if)#exit
Router(config)#interface GigabitEthernet 0/2
Router(config-if)#ip access-group 3 out
設定後、192.168.30.0側のサーバとの疎通ができず、192.168.20.0側のサーバとの疎通のみ出来るようになる
標準ACLの設定例⑥
Router#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)#interface GigabitEthernet 0/2
Router(config-if)#no ip access-group 3 out
Router(config-if)#exit
Router(config)#interface GigabitEthernet 0/1
Router(config-if)#ip access-group 3 out
Router(config-if)#exit
Router(config)#end
設定後、192.168.20.0側のサーバとの疎通ができず、192.168.30.0側のサーバとの疎通のみ出来るようになる
拡張ACLの設定例
拡張ACLの設定例①
Router#conf t
##アクセスリスト100でPC001からServer1へのHTTP通信を許可する
Router(config)#access-list 100 ?
deny Specify packets to reject
permit Specify packets to forward
remark Access list entry comment
Router(config)#access-list 100 permit ?
ahp Authentication Header Protocol
eigrp Cisco's EIGRP routing protocol
esp Encapsulation Security Payload
gre Cisco's GRE tunneling
icmp Internet Control Message Protocol
ip Any Internet Protocol
ospf OSPF routing protocol
tcp Transmission Control Protocol
udp User Datagram Protocol
Router(config)#access-list 100 permit tcp host 192.168.10.1 host 192.168.20.1 eq ?
<0-65535> Port number
ftp File Transfer Protocol (21)
pop3 Post Office Protocol v3 (110)
smtp Simple Mail Transport Protocol (25)
telnet Telnet (23)
www World Wide Web (HTTP, 80)
Router(config)#access-list 100 permit tcp host 192.168.10.1 host 192.168.20.1 eq www
##アクセスリスト100でPC001からServer1へのpingを拒否する
Router(config)#access-list 100 deny ?
ahp Authentication Header Protocol
eigrp Cisco's EIGRP routing protocol
esp Encapsulation Security Payload
gre Cisco's GRE tunneling
icmp Internet Control Message Protocol
ip Any Internet Protocol
ospf OSPF routing protocol
tcp Transmission Control Protocol
udp User Datagram Protocol
Router(config)#access-list 100 deny icmp host 192.168.10.1 host 192.168.20.1 ?
<0-256> type-num
echo Echo (ping)
echo-reply Echo reply
host-unreachable Host unreachable
net-unreachable Net unreachable
port-unreachable Port unreachable
protocol-unreachable Protocol unreachable
ttl-exceeded TTL exceeded
unreachable All unreachables
<cr>
Router(config)#access-list 100 deny icmp host 192.168.10.1 host 192.168.20.1 echo
Router(config)#interface GigabitEthernet 0/0
Router(config-if)#ip access-group 100 in
設定後、192.168.10.1からServer1へのHTTP通信は許可され画面表示されたが、ping通信は拒否された
拡張ACLの設定例②
Router#conf t
Router(config)#interface GigabitEthernet 0/0
Router(config-if)#ip access-group 100 in
Router(config)#access-list 100 deny tcp host 192.168.10.1 host 192.168.30.1 eq 80
Router(config)#access-list 100 permit icmp host 192.168.10.1 host 192.168.30.1 echo
Router(config)#end
設定後、192.168.10.1からServer2へのping通信は許可されが、HTTP通信は拒否され画面が表示されなかった