ルータには、通過するパケットをチェックして、通信の許可/拒否を制御できる機能が付いています。
ACL(Access Control List)と呼ばれる許可/拒否のルールによって、パケットがチェックされます。
- 標準ACL
- 番号付き標準ACL
- 名前付き標準ACL
- 拡張ACL
- 番号付き拡張ACL
- 名前付き拡張ACL
標準ACL
番号付き標準ACL
番号付き標準ACLは、以下のコマンドで作成します。
(config)#access-list ACL番号 <permit|deny> 送信元IPアドレス ワイルドカードマスク
ACL番号は、1 ~ 99、もしくは、1300 ~ 1999が利用できます。
通信を許可する場合はpermitを、拒否する場合は、denyを指定します。
ACL番号1つに対して、複数のルールを定義することができます。
ルールは、定義した順番に評価され、ルールに一致するものがあればそこで評価が終了します。
評価終了後は、以降のルールは評価されません。
また、ACLには、暗黙のdenyと呼ばれるルールがあり、どのルールにも一致しなかったパケットは、
暗黙のdenyによって破棄されます。
作成したACLは、以下のコマンドでインターフェースに適用します。
(config-if)#ip access-group ACL番号 <in | out>
ACLの適用では、インターフェースにパケットが入っているタイミングでチェックするか(in)、出ていくタイミングでチェックするか(out)を指定します。
設定例
ここで、学校を想定して、以下のようなネットワークを扱います。
先生は成績データなど生徒から自由にみられては困るデータを扱うため、生徒用のネットワークから
アクセスされると困ったことになります。
そこで、先生からはどこへでもアクセス可能だが、生徒からは先生用ネットワークへアクセスできないように制限をかけてみます。
まずは、VLAN設定、ルーティング設定を行っていきます。
Would you like to enter the initial configuration dialog? [yes/no]: no
Press RETURN to get started!
Switch>en
Switch#conf t
Enter configuration commands, one per line. End with CNTL/Z.
Switch(config)#ip routing
Switch(config)#
Switch(config)#vlan 10
Switch(config-vlan)#exit
Switch(config)#vlan 20
Switch(config-vlan)#exit
Switch(config)#
Switch(config)#do show vlan bri
VLAN Name Status Ports
---- -------------------------------- --------- -------------------------------
1 default active Fa0/1, Fa0/2, Fa0/3, Fa0/4
Fa0/5, Fa0/6, Fa0/7, Fa0/8
Fa0/9, Fa0/10, Fa0/11, Fa0/12
Fa0/13, Fa0/14, Fa0/15, Fa0/16
Fa0/17, Fa0/18, Fa0/19, Fa0/20
Fa0/21, Fa0/22, Fa0/23, Fa0/24
Gig0/1, Gig0/2
10 VLAN0010 active
20 VLAN0020 active
1002 fddi-default active
1003 token-ring-default active
1004 fddinet-default active
1005 trnet-default active
Switch(config)#int f0/1
Switch(config-if)#switchport mode access
Switch(config-if)#switchport access vlan 10
Switch(config-if)#
Switch(config-if)#exit
Switch(config)#
Switch(config)#int f0/2
Switch(config-if)#switchport mode access
Switch(config-if)#switchport access vlan 20
Switch(config-if)#
Switch(config-if)#exit
Switch(config)#
Switch(config)#do show vlan bri
VLAN Name Status Ports
---- -------------------------------- --------- -------------------------------
1 default active Fa0/3, Fa0/4, Fa0/5, Fa0/6
Fa0/7, Fa0/8, Fa0/9, Fa0/10
Fa0/11, Fa0/12, Fa0/13, Fa0/14
Fa0/15, Fa0/16, Fa0/17, Fa0/18
Fa0/19, Fa0/20, Fa0/21, Fa0/22
Fa0/23, Fa0/24, Gig0/1, Gig0/2
10 VLAN0010 active Fa0/1
20 VLAN0020 active Fa0/2
1002 fddi-default active
1003 token-ring-default active
1004 fddinet-default active
1005 trnet-default active
Switch(config)#
Switch(config)#int vla
Switch(config)#int vlan 10
Switch(config-if)#
%LINK-5-CHANGED: Interface Vlan10, changed state to up
%LINEPROTO-5-UPDOWN: Line protocol on Interface Vlan10, changed state to up
Switch(config-if)#
Switch(config-if)#ip address 192.168.1.1 255.255.255.0
Switch(config-if)#exit
Switch(config)#int vlan 20
Switch(config-if)#
%LINK-5-CHANGED: Interface Vlan20, changed state to up
%LINEPROTO-5-UPDOWN: Line protocol on Interface Vlan20, changed state to up
Switch(config-if)#ip address 192.168.2.1 255.255.255.0
Switch(config-if)#
Switch(config-if)#exit
Switch(config)#
Switch(config)#do show ip route
Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
* - candidate default, U - per-user static route, o - ODR
P - periodic downloaded static route
Gateway of last resort is not set
C 192.168.1.0/24 is directly connected, Vlan10
C 192.168.2.0/24 is directly connected, Vlan20
Switch(config)#
この段階では、先生、生徒双方のネットワークを行き来することができます。
C:\>ipconfig
FastEthernet0 Connection:(default port)
Connection-specific DNS Suffix..:
Link-local IPv6 Address.........: FE80::20A:41FF:FE98:144A
IPv6 Address....................: ::
IPv4 Address....................: 192.168.1.10
Subnet Mask.....................: 255.255.255.0
Default Gateway.................: ::
192.168.1.1
C:\>ping 192.168.2.100
Pinging 192.168.2.100 with 32 bytes of data:
Request timed out.
Reply from 192.168.2.100: bytes=32 time<1ms TTL=127
Reply from 192.168.2.100: bytes=32 time=5ms TTL=127
Reply from 192.168.2.100: bytes=32 time<1ms TTL=127
Ping statistics for 192.168.2.100:
Packets: Sent = 4, Received = 3, Lost = 1 (25% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 5ms, Average = 1ms
C:\>
C:\>ipconfig
FastEthernet0 Connection:(default port)
Connection-specific DNS Suffix..:
Link-local IPv6 Address.........: FE80::206:2AFF:FED0:6576
IPv6 Address....................: ::
IPv4 Address....................: 192.168.2.10
Subnet Mask.....................: 255.255.255.0
Default Gateway.................: ::
192.168.2.1
Bluetooth Connection:
Connection-specific DNS Suffix..:
Link-local IPv6 Address.........: ::
IPv6 Address....................: ::
IPv4 Address....................: 0.0.0.0
Subnet Mask.....................: 0.0.0.0
Default Gateway.................: ::
0.0.0.0
C:\>ping 192.168.1.100
Pinging 192.168.1.100 with 32 bytes of data:
Request timed out.
Reply from 192.168.1.100: bytes=32 time<1ms TTL=127
Reply from 192.168.1.100: bytes=32 time<1ms TTL=127
Reply from 192.168.1.100: bytes=32 time<1ms TTL=127
Ping statistics for 192.168.1.100:
Packets: Sent = 4, Received = 3, Lost = 1 (25% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms
C:\>
次にACLを作成し、割り当ててみます。
Switch(config)#access-list 1 deny 192.168.2.10 0.0.0.0
Switch(config)#access-list 1 deny 192.168.2.11 0.0.0.0
Switch(config)#access-list 1 permit any
Switch(config)#int vlan 10
Switch(config-if)#ip access-group 1 out
IPルーティングを行うのはSVIになるため、ACLはVLANに対して割り当てています。
今回は、生徒用端末と先生用ネットワークとの通信を禁止したいため、VLAN10へ向かう(out)方向に対して適用しています。
今のケースでは、VLAN20へ入ってくるタイミング(in)に適用しても同じ動きになります。
が、ほかにもネットワークが存在している場合、 inに適用すると意図したところ以外の通信もブロックしてしまうことがあります。そのため、ACLは、宛先に近いところに適用することがおすすめです。
改めて、疎通確認を行います。
C:\>ipconfig
FastEthernet0 Connection:(default port)
Connection-specific DNS Suffix..:
Link-local IPv6 Address.........: FE80::206:2AFF:FED0:6576
IPv6 Address....................: ::
IPv4 Address....................: 192.168.2.10
Subnet Mask.....................: 255.255.255.0
Default Gateway.................: ::
192.168.2.1
Bluetooth Connection:
Connection-specific DNS Suffix..:
Link-local IPv6 Address.........: ::
IPv6 Address....................: ::
IPv4 Address....................: 0.0.0.0
Subnet Mask.....................: 0.0.0.0
Default Gateway.................: ::
0.0.0.0
C:\>ping 192.168.1.100
Pinging 192.168.1.100 with 32 bytes of data:
Reply from 192.168.2.1: Destination host unreachable.
Reply from 192.168.2.1: Destination host unreachable.
Reply from 192.168.2.1: Destination host unreachable.
Reply from 192.168.2.1: Destination host unreachable.
Ping statistics for 192.168.1.100:
Packets: Sent = 4, Received = 0, Lost = 4 (100% loss),
C:\>ping 192.168.1.10
Pinging 192.168.1.10 with 32 bytes of data:
Reply from 192.168.2.1: Destination host unreachable.
Reply from 192.168.2.1: Destination host unreachable.
Reply from 192.168.2.1: Destination host unreachable.
Reply from 192.168.2.1: Destination host unreachable.
Ping statistics for 192.168.1.10:
Packets: Sent = 4, Received = 0, Lost = 4 (100% loss),
C:\>
C:\>ipconfig
FastEthernet0 Connection:(default port)
Connection-specific DNS Suffix..:
Link-local IPv6 Address.........: FE80::20A:41FF:FE98:144A
IPv6 Address....................: ::
IPv4 Address....................: 192.168.1.10
Subnet Mask.....................: 255.255.255.0
Default Gateway.................: ::
192.168.1.1
Bluetooth Connection:
Connection-specific DNS Suffix..:
Link-local IPv6 Address.........: ::
IPv6 Address....................: ::
IPv4 Address....................: 0.0.0.0
Subnet Mask.....................: 0.0.0.0
Default Gateway.................: ::
0.0.0.0
C:\>ping 192.168.2.100
Pinging 192.168.2.100 with 32 bytes of data:
Reply from 192.168.2.100: bytes=32 time<1ms TTL=127
Reply from 192.168.2.100: bytes=32 time<1ms TTL=127
Reply from 192.168.2.100: bytes=32 time<1ms TTL=127
Reply from 192.168.2.100: bytes=32 time<1ms TTL=127
Ping statistics for 192.168.2.100:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms
C:\>ping 192.168.2.10
Pinging 192.168.2.10 with 32 bytes of data:
Request timed out.
Request timed out.
Request timed out.
Request timed out.
Ping statistics for 192.168.2.10:
Packets: Sent = 4, Received = 0, Lost = 4 (100% loss),
C:\>
生徒用端末2台との通信ができなくなりました。
生徒用ネットワーク内のサーバとは、通信できています。
今回のACLの適用により、先生用の端末から生徒用の端末への通信もブロックされました。
Pingでの疎通確認は、行きと帰りの通信ができて成功となります。ACLにより、帰りの通信が通らなくなったため、Pingでの通信確認ができなくなっています。
名前付き標準ACL
(config)#ip access-list standard ACL名
(config-std-nacl)#<permit|deny> 送信元IPアドレス ワイルドカードマスク
番号付きACL同様、1つのACL名に対して複数のルールが定義できます。
作成したACLは、以下のコマンドでインターフェースに適用します。
(config-if)#ip access-group ACL名 <in | out>
ACLの評価のルールは、番号付きの場合と同様です。
拡張ACL
拡張ACLでは、送信元IPアドレスのほかに、プロトコルによって許可/拒否を決めることが可能です。
そのほかにも宛先IPアドレスやポート番号を指定することもできます。
番号付き拡張ACL
(config)#access-list ACL番号 <permit | deny> プロトコル 送信元IPアドレス ワイルドカードマスク (送信元ポート番号) 宛先IPアドレス ワイルドカードマスク (オプション)
拡張ACLで使用できる番号は、100~199と2000~2699になります。
標準ACLで見た設定例と同じ構成を再度引用し、以下の条件を課すことにします。
- 生徒用ネットワークから先生ネットワークへの通信を禁止する
- 先生用ネットワークから生徒用ネットワークへの通信は許可する
- 生徒用サーバから先生用サーバへのPing通信を許可する
Switch(config)#access-list 100 permit tcp 192.168.2.0 0.0.0.255 192.168.1.0 0.0.0.255 established
Switch(config)#access-list 100 permit icmp host 192.168.2.100 host 192.168.1.100
Switch(config)#access-list 100 permit icmp 192.168.2.0 0.0.0.255 192.168.1.0 0.0.0.255 echo-reply
Switch(config)#int vlan20
Switch(config-if)#ip access-group 100 in
Switch(config-if)#exit
Switch(config)#
access-list 100 permit tcp 192.168.2.0 0.0.0.255 192.168.1.0 0.0.0.255 established
の部分は、先生用ネットワークから来た通信に応答できるようにするための設定です。
この記載がない場合は、先生用から生徒用にtcp通信が成立しません。
また、専用ネットワークからのPing応答を返せるように
access-list 100 permit icmp 192.168.2.0 0.0.0.255 192.168.1.0 0.0.0.255 echo-reply
を追加しています。
先生端末からの通信を確認します。
C:\>ipconfig
FastEthernet0 Connection:(default port)
Connection-specific DNS Suffix..:
Link-local IPv6 Address.........: FE80::20A:41FF:FE98:144A
IPv6 Address....................: ::
IPv4 Address....................: 192.168.1.10
Subnet Mask.....................: 255.255.255.0
Default Gateway.................: ::
192.168.1.1
Bluetooth Connection:
Connection-specific DNS Suffix..:
Link-local IPv6 Address.........: ::
IPv6 Address....................: ::
IPv4 Address....................: 0.0.0.0
Subnet Mask.....................: 0.0.0.0
Default Gateway.................: ::
0.0.0.0
C:\>ping 192.168.2.100
Pinging 192.168.2.100 with 32 bytes of data:
Reply from 192.168.2.100: bytes=32 time<1ms TTL=127
Reply from 192.168.2.100: bytes=32 time<1ms TTL=127
Reply from 192.168.2.100: bytes=32 time<1ms TTL=127
Reply from 192.168.2.100: bytes=32 time<1ms TTL=127
Ping statistics for 192.168.2.100:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms
C:\>ping 192.168.2.10
Pinging 192.168.2.10 with 32 bytes of data:
Reply from 192.168.2.10: bytes=32 time=6ms TTL=127
Reply from 192.168.2.10: bytes=32 time<1ms TTL=127
Reply from 192.168.2.10: bytes=32 time<1ms TTL=127
Reply from 192.168.2.10: bytes=32 time<1ms TTL=127
Ping statistics for 192.168.2.10:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 6ms, Average = 1ms
C:\>
先生用端末から生徒用サーバへのWebアクセスも問題なくできています。
次は、生徒用サーバからの通信確認です。
通信を許可した先生用サーバへのPingは通りますが、端末への通信はブロックされます。
C:\>ipconfig
FastEthernet0 Connection:(default port)
Connection-specific DNS Suffix..:
Link-local IPv6 Address.........: FE80::2D0:D3FF:FE97:3683
IPv6 Address....................: ::
IPv4 Address....................: 192.168.2.100
Subnet Mask.....................: 255.255.255.0
Default Gateway.................: ::
192.168.2.1
C:\>ping 192.168.1.100
Pinging 192.168.1.100 with 32 bytes of data:
Reply from 192.168.1.100: bytes=32 time=1ms TTL=127
Reply from 192.168.1.100: bytes=32 time<1ms TTL=127
Reply from 192.168.1.100: bytes=32 time<1ms TTL=127
Reply from 192.168.1.100: bytes=32 time<1ms TTL=127
Ping statistics for 192.168.1.100:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 1ms, Average = 0ms
C:\>ping 192.168.1.10
Pinging 192.168.1.10 with 32 bytes of data:
Reply from 192.168.2.1: Destination host unreachable.
Reply from 192.168.2.1: Destination host unreachable.
Reply from 192.168.2.1: Destination host unreachable.
Reply from 192.168.2.1: Destination host unreachable.
Ping statistics for 192.168.1.10:
Packets: Sent = 4, Received = 0, Lost = 4 (100% loss),
C:\>
名前付き拡張ACL
(config)#ip access-list extended ACL名
(config-ext-nacl)#<permit | deny> プロトコル 送信元IPアドレス ワイルドカードマスク (送信元ポート番号) 宛先IPアドレス ワイルドカードマスク (オプション)
コメント