もくじ
ACLのルール
- 条件文の上から順に確認を行う
- 条件文に一致した場合は、その指示に従って処理(deny, permit)を行い、それ以降の処理を行わない
- 条件分の最後には暗黙のdenyが存在する
- ACLを適用しているルータ自身が発信するパケットは処理対象外
- インバウンドに設定されたACLは受信インターフェイスに受信した時点で適用される。送信側インターフェイスにルーティングされた時には適用しない。
- アウトバウンドに設定されたACLはパケットが送信インターフェースにルーティングされた後に適用される。
- パケットフィルタリングのためにインターフェイスに適用できるのは、inとoutに一つずつ
標準ACLを使った内部ローカルアドレスの設定
(config)#access-list {番号} permit {内部ローカルアドレス} {ワイルドカード}
- 番号は1~99 or 1300~1999
- 内部ローカルアドレス・・・変換対象にしたい内部ローカルアドレス
拡張ACL
(config)#access-list {番号} {permit | deny} {プロトコル} {送信元 ワイルドカードマスク} {宛先 ワイルドカードマスク} {オプション}
- 番号・・・100~199, 2000~2699の中から利用
- プロトコル・・・プロトコルを指定。tcp, udp, icmpなど。
キーワード
- lt(lower than):指定するポート番号より小さい
- gt(greater than):指定するポート番号より大きい
- eq(equal):指定するポート番号と等しい
- neq(not equal):指定するポート番号と等しくない
ACLを使う上での注意
1. ACLは一行ずつ上から下に読む定義される修正があるので、設定が後勝ちする。最初にdenyを定義するaccess-listの作成を行い、次にpermitで全体を許す設定を行うようにする。この順番を逆にするとdenyが効いて通信できなくなる。
サンプル例1 ※拡張ACL使用
(config)#access-list 100 permit tcp host 192.168.1.2 host 172.16.1.1 eq www (config)#access-list 100 deny tcp any host 172.16.1.1 eq www (config)#access-list 100 permit ip any any
- 172.16.1.1に対するHTTP通信は192.168.1.2のみ許可
- 172.16.1.1に対するHTTP通信はホストからすべて拒否
- 172.16.1.2に対する通信はすべて通す
172.16.1.1に対してHTTP通信できるのは192.168.1.2だけ。他の通信はどのホストからも可能になる。1と2の順番を入れ替えると、1行目ですべてのホストからのHTTP通信をはじいてしまう、2行目で192.168.1.2からのHTTP通信を許可する設定を書いても反映されない。1行目で条件式がなりたってしまっているから。HTTP通信以外のその他の通信に対しては3行目が有効になる。
- 192.168.100.0に対するFTP通信は192.168.2.0/24のみ許可
- 192.168.100.0に対する192.168.3.0/24からの通信はすべて拒否
- 192.168.100.0に対する通信はすべて通す
access-list 101 permit tcp 192.168.2.0 0.0.0.255 192.168.100.0 0.0.0.255 eq 20 access-list 101 permit tcp 192.168.2.0 0.0.0.255 192.168.100.0 0.0.0.255 eq 21 access-list 101 deny ip 192.168.3.0 0.0.0.255 192.168.100.0 0.0.0.255
この場合は192.168.2.0/24からの192.168.100.0へのFTPの通信が可能になる。192.168.3.0/24の通信はすべて拒否。
しかし、1行目と2行目でFTPの通信を許可する技術を書いたことにより、HTTP等の他の許可していないプロトコルの通信は、192.168.2.0/24のホストも暗黙のdenyにより全て通信できなくなる。暗黙のdenyが働いてしまう。
access-list 100 permit ip any any
上記の記述が必要になります。
Routerへの適用
Router(config)#interface fastEthernet 0/1 Router(config-if)#ip access-group 110 out
注意
access-list 30 deny 192.168.20.128 0.0.0.31 access-list 30 permit any access-list 30 deny 192.168.30.128 0.0.0.31
この場合、access-list 30 permit anyですべてを許可してしまっているので、3行目が適用されなくなる・・・!
2. permitだけ設定した場合は、最終行に表示はされないが、暗黙のdenyが設定される。permit以外の条件がdenyになる。注意する。
3. ACLは協力で間違ったACLを行うと通信が出来なくなる。トラブルが少なる設定のコツ
- 標準ACLは制限したい宛先の最終インターフェイス付近
- 拡張ACLは制限したい送信元の最初のインターフェイス付近
に設定すると具合が良い。
NATプール定義
(config)#ip nat pool {プール名} {開始アドレス} {終了アドレス} {netmask サブネットマスク} | {prefix-length プレフィックス長}
内部ローカルアドレスとNATプールの関連付け
(config)#ip nat inside source list {ACL名} pool {NATプール名} [overload]
overload・・・PATを行う場合に入力
ACLサンプル設定2
access-list 110 permit tcp any any eq ftp ←FTPを許可 21番ポート access-list 110 permit tcp any any eq ftp-data ←FTPを許可 22番ポート access-list 110 deny tcp any any eq telnet ←telnetを拒否 access-list 110 deny icmp any any echo-reply ←エコー応答(ping応答)を拒否 access-list 110 permit ip any any ←上記に当てはまらかったパケットを全て許可
ACL設定サンプル3
192.168.20.0/24のネットワークのホストからのサーバ192.168.30.1へのtelnetのみ拒否する。
(config)#access-list 100 deny tcp 192.168.20.0 0.0.0.255 192.168.30.1 0.0.0.0 eq 23 (config)#access-list 100 permit ip any any
設計サンプル
条件
- SG社内でインターネットに接続する必要があるPCは16台
- 16台同時にインターネットに接続できるようにする
- インターネットに接続する必要があるPCには「192.168.1.16~192.168.1.31」でIPアドレスを割り当てている
- SG社がもっているグローバルアドレスは100.2.2.151~100.2.2.154/27
- Serial0/0はWAN側インターフェイス
- FastEthernet0/1はLAN側インターフェイス
■Router設定
(config)#interface Serial0/0 (config-if)#ip nat outside (config-if)#exit (config)#interface FastEthernet0/1 (config-if)#ip nat inside (config-if)#exit (config)#ip nat pool sgnet 100.2.2.151 100.2.2.154 netmask 255.255.255.224 (config)#access-access 6 permit 192.168.1.16 0.0.0.15 (config)#ip nat inside source list 6 pool sgnet overload
ワイルドカードマスクの範囲を計算
IPアドレス192.168.24.0から192.168.31.255の範囲の指定は?
0.0.7.255
192.168.31.255 から 192.168.24.0を減算すれば良いです。大きいネットワークから小さいネットワークを引いて出す。
ワイルドカードの活用方法
access-list 5 permit 192.168.20.0 0.0.0.255 access-list 5 permit 192.168.21.0 0.0.0.255 access-list 5 permit 192.168.22.0 0.0.0.255 access-list 5 permit 192.168.23.0 0.0.0.255
↓まとめる
access-list 5 permit 192.168.20.0 0.0.3.255
ACL設定の確認
(config)#show access-lists
名前付きアクセスリスト
名前付き標準アクセスリスト
Router(config)#ip access-list standard (番号or名前)
番号は1~99, 1300~1999が利用可能
名前付き拡張アクセスリスト
Router(config)#ip access-list extended (番号or名前)
100~199, 2000~2699が利用可能
Router#show ip access-lists Extended IP access list EXTENDED 10 permit icmp any any 20 permit gre any any 30 permit ospf any any Router#conf t Enter configuration commands, one per line. End with CNTL/Z. Router(config)#ip access-list extended EXTENDED Router(config-ext-nacl)#no 20 Router(config-ext-nacl)#end Router# Router# show ip access-lists Extended IP access list EXTENDED 10 permit icmp any any 30 permit ospf any any ↑20番のリストが削除された Router#conf t Enter configuration commands, one per line. End with CNTL/Z. Router(config)#ip access-list resequence EXTENDED 1 5 ↑開始番号1, 間隔を5ずつ開けて並べ替え Router(config)#end Router# show ip access-lists 1 permit icmp any any 6 permit ospf any any ↑並び替え成功している
@see ping-t