CiscoルータでNATとACLが干渉する問題とその対処法|マッチしない原因を解説

Ciscoルータを使用していると、NATの設定は正しいのにACLがマッチせず通信できないという現象に遭遇することがあります。
これはNATとACLの処理順序や、ACLの適用位置に関する理解不足が原因であることが多く、設定を見直すことで解決可能です。
本記事では、Cisco ルータ 設定の中でも特に見落とされやすい「NATとACLの干渉」について、原因・検証方法・対処法を解説します。

1. NATとACLが干渉するとはどういうことか?

Ciscoルータでは、NAT変換とACLによるトラフィック制御が同時に行われる場合、変換前のアドレスでACLが評価されるのか、変換後で評価されるのかを正しく理解していないと、意図しない通信遮断が起こります。

例えば、以下のような構成を想定します:

  • LAN:192.168.10.0/24(NAT inside)
  • WAN:203.0.113.1(NAT outside)
  • NAT設定:ip nat inside source list 1 interface GigabitEthernet0/1 overload
  • ACLで外部へのアクセスを制限

このとき、ACLが外向きインターフェースに適用されている場合、NAT変換後のIPアドレス(203.0.113.X)で評価されるため、ACLに適切なエントリがないと通信が遮断されます。

2. NAT処理とACLの評価タイミング

Cisco IOSでは、以下の順序で処理が行われます:

  1. 受信方向のACL(in)適用
  2. ルーティング判断
  3. NAT変換処理
  4. 送信方向のACL(out)適用

つまり、送信インターフェース(outside)に設定されたACLは、NAT変換後のIPでマッチングされるため、NATの変換後アドレスをACLに含める必要があります。

3. よくあるトラブルパターン

パターン1:ACLがNAT変換前のIPを指定している

ip access-list extended OUT-ACL
 permit ip 192.168.10.0 0.0.0.255 any  ← ❌

この設定では、NAT後のIP(203.0.113.X)にはマッチしないため、通信は拒否されます。

正しいACL例:

ip access-list extended OUT-ACL
 permit ip 203.0.113.0 0.0.0.255 any  ← ✅

パターン2:ACLをin方向に適用しているが、変換後アドレスでマッチしようとしている

in側ではNAT変換前のIPが使用されるため、ACLの記述を逆にしてしまうとトラフィックが遮断されるケースがあります。

4. 検証に役立つshow・debugコマンド

  • show ip nat translations:NAT変換の対応表
  • debug ip nat:リアルタイムでの変換ログ
  • show access-lists:ACLヒット数(hitcnt)の確認
Router# show ip nat translations
Pro Inside global      Inside local       Outside local      Outside global
--- 203.0.113.11       192.168.10.11      8.8.8.8            8.8.8.8

→ この例では、ACLには「203.0.113.11」でマッチさせる必要があることがわかります。

5. NATとACLを同時に使う場合のベストプラクティス

  • ACLは、inなら変換前、outなら変換後のIPアドレスで記述
  • 可能であればACLの適用はin側にして、変換前IPを基準に管理する
  • show/debugコマンドでトラフィックと変換状況を都度確認
  • NATとACLを別インターフェースに分けることで制御を簡略化

6. 実践構成例:ACLとNATを適切に併用する方法

interface GigabitEthernet0/0
 ip address 192.168.10.1 255.255.255.0
 ip nat inside
 ip access-group LAN-ACL in

interface GigabitEthernet0/1
 ip address 203.0.113.1 255.255.255.0
 ip nat outside
 ip access-group OUT-ACL out

access-list 1 permit 192.168.10.0 0.0.0.255
ip nat inside source list 1 interface GigabitEthernet0/1 overload

ip access-list extended OUT-ACL
 permit ip 203.0.113.0 0.0.0.255 any

まとめ

CiscoルータでのNATとACLの併用は非常に一般的ですが、変換の前後でACLのマッチ条件が異なるため、正確な理解が必要です。

  • NATはACLの前か後か、方向によって変わる
  • ACLで指定するIPは「変換前」か「変換後」かを見極める
  • show ip nat translationsdebug ip natで確認
  • ACLはin方向で使う方がトラブルが少ない

NAT ACL マッチしない」「Cisco ACL NAT 競合」と検索されるような実務トラブルに対し、本記事が役立てば幸いです。