2016-02-28 04:48 PM - 最終編集日: 2023-12-20 05:31 PM 、編集者: JapanTAC_CSC
以下のような冗長WAN構成で、ISP#1経由のTCPパケットが、ISP#2から戻ってきた場合、以下ログと共にセキュリティドロップします。 これは、入出力Interface、及び TCPステートのチェックを ASAが行っているためです。
%ASA-6-302013: Built outbound TCP connection 179 for outside1:7.7.7.7/80 (7.7.7.7/80) to inside:172.16.0.1/12345 (172.16.0.1/12345)
%ASA-6-106015: Deny TCP (no connection) from 7.7.7.7/80 to 172.16.0.1/12345 flags SYN ACK on interface outside2
この非対称ルーティング構成のサポートは、Traffic Zone機能により可能です。
本ドキュメントでは、Traffic Zoneの設定と動作確認例を紹介します。 本ドキュメントは ASA version 9.4(2)を元に確認、作成しております。
ASAソフトウェアバージョン 9.3(2)からの新機能で、複数Interfaceを Zoneに参加させることで以下を実現できます。
Zone毎にコネクションを保持するため、そのZoneに属する どのInterfaceでパケットを受信しても、そのコネクションで継続し処理が可能です。
逆に、ACLや NAT、Routingは、従来通り各Interfaceに適用が必要です。 通常、同じZoneに属する各Interfaceには、同等のACLやNAT設定を行うことを お勧めします。
また、所属するInterface間でのバランシングが可能となるため、非対称性によりVPN通信に悪影響を与える恐れがあるため、Zoneに属するInterfaceに VPN設定はしないでください。
複数Interfaceを、定義したzoneに参加させます。 設定はシンプルです。
なお、InterfaceをZoneに参加時、そのInterfaceに紐づいていた Static Route設定は消えるため、Static Routeの再設定が必要となります。
zone OUTSIDE
!
interface GigabitEthernet0/0
nameif outside1
security-level 0
zone-member OUTSIDE
ip address 10.10.0.254 255.255.255.0
!
interface GigabitEthernet0/1
nameif outside2
security-level 0
zone-member OUTSIDE
ip address 10.20.0.254 255.255.255.0
!
interface GigabitEthernet0/2
nameif inside
security-level 100
ip address 172.16.0.254 255.255.255.0
!
route outside1 0.0.0.0 0.0.0.0 10.10.0.1 1
route outside2 0.0.0.0 0.0.0.0 10.20.0.1 210
以下は、Internal Client(172.16.0.1)から Webサーバ(7.7.7.7)へのWEB通信で、ISP#1とISP#2で非対称ルーティング時の、コネクションテーブル変遷と、外部Interfaceの パケットキャプチャ結果です。
- zone OUTSIDEの outside1を優先利用。 Zone OUTSIDEと inside間でコネクションが生成される事を確認できます
1. ISP#1経由-SYN送信時
ASA(config)# sh conn long | in flag
TCP OUTSIDE:outside1(outside1): 7.7.7.7/80 (7.7.7.7/80) inside: 172.16.0.1/12345 (172.16.0.1/12345), flags saA , idle 2s, uptime 2s, timeout 30s, bytes 0
2. ISP#2経由-SYN-ACK受信時
ASA(config)# sh conn long | in flag
TCP OUTSIDE:outside1(outside1): 7.7.7.7/80 (7.7.7.7/80) inside: 172.16.0.1/12345 (172.16.0.1/12345), flags A , idle 2s, uptime 9s, timeout 30s, bytes 0
3. ISP#1経由-ACK送信時
ASA(config)# sh conn long | in flag
TCP OUTSIDE:outside1(outside1): 7.7.7.7/80 (7.7.7.7/80) inside: 172.16.0.1/12345 (172.16.0.1/12345), flags U , idle 2s, uptime 21s, timeout 1h0m, bytes 0
- IN(inside)からの 3way handshake パケットが、OUT1(oustide1)を通過し送出され、OUT2(outside2)側で受信、再度 OUT1(outside1)から送付されている事を確認できます
ASA(config)# sh cap IN
3 packets captured
1: 16:04:50.315108 172.16.0.1.12345 > 7.7.7.7.80: S 0:0(0) win 512
2: 16:04:57.863694 7.7.7.7.80 > 172.16.0.1.12345: S 0:0(0) ack 1 win 512
3: 16:05:09.315153 172.16.0.1.12345 > 7.7.7.7.80: . ack 1 win 512
ASA(config)# sh cap OUT1
2 packets captured
1: 16:04:50.315337 172.16.0.1.12345 > 7.7.7.7.80: S 0:0(0) win 512
2: 16:05:09.315215 172.16.0.1.12345 > 7.7.7.7.80: . ack 1 win 512
ASA(config)# sh cap OUT2
1 packet captured
1: 16:04:57.863618 7.7.7.7.80 > 172.16.0.1.12345: S 0:0(0) ack 1 win 512
以下は、Internal Client(172.16.0.1)から Webサーバ(7.7.7.7)へのWEB通信で、ISP#1側リンクダウン時の、コネクションテーブル変遷と、外部Interfaceの パケットキャプチャ結果です。
- Gi0/0のダウンに伴い、デフォルトゲートウェイが outside2側に切り替わっている事を確認できます
ASA(config)# sh int ip brie
Interface IP-Address OK? Method Status Protocol
GigabitEthernet0/0 10.10.0.254 YES manual down down
GigabitEthernet0/1 10.20.0.254 YES manual up up
GigabitEthernet0/2 172.16.0.254 YES manual up up
GigabitEthernet0/3 unassigned YES unset administratively down up
GigabitEthernet0/4 unassigned YES unset administratively down down
--- snip ---
ASA(config)#
ASA(config)# sh route | in 0.0.0.0
Gateway of last resort is 10.20.0.1 to network 0.0.0.0
S* 0.0.0.0 0.0.0.0 [210/0] via 10.20.0.1, outside2
- zone OUTSIDEの outside2を利用。 Zone OUTSIDEと inside間でコネクションが生成される事を確認できます
1. ISP#2経由-SYN送信時
ASA(config)# sh conn long | in flag
TCP OUTSIDE:outside2(outside2): 7.7.7.7/80 (7.7.7.7/80) inside: 172.16.0.1/12345 (172.16.0.1/12345), flags saA , idle 5s, uptime 5s, timeout 30s, bytes 0
2. ISP#2経由-SYN-ACK受信時
ASA(config)# sh conn long | in flag
TCP OUTSIDE:outside2(outside2): 7.7.7.7/80 (7.7.7.7/80) inside: 172.16.0.1/12345 (172.16.0.1/12345), flags A , idle 2s, uptime 9s, timeout 30s, bytes 0
3. ISP#2経由-ACK送信時
ASA(config)# sh conn long | in flag
TCP OUTSIDE:outside2(outside2): 7.7.7.7/80 (7.7.7.7/80) inside: 172.16.0.1/12345 (172.16.0.1/12345), flags U , idle 2s, uptime 16s, timeout 1h0m, bytes 0
- 外部パケットやり取りが、OUT2(outside2)側に全て寄っている事がわかる
ASA(config)# sh cap IN
3 packets captured
1: 16:18:04.379115 172.16.0.1.12345 > 7.7.7.7.80: S 0:0(0) win 512
2: 16:18:11.494389 7.7.7.7.80 > 172.16.0.1.12345: S 0:0(0) ack 1 win 512
3: 16:18:18.199162 172.16.0.1.12345 > 7.7.7.7.80: . ack 1 win 512
3 packets shown
ASA(config)# sh cap OUT1
0 packet captured
0 packet shown
ASA(config)# sh cap OUT2
3 packets captured
1: 16:18:04.379329 172.16.0.1.12345 > 7.7.7.7.80: S 0:0(0) win 512
2: 16:18:11.494313 7.7.7.7.80 > 172.16.0.1.12345: S 0:0(0) ack 1 win 512
3: 16:18:18.199254 172.16.0.1.12345 > 7.7.7.7.80: . ack 1 win 512
上記の確認結果は、ISP#1側障害時の "新規通信"のコネクションテーブルですが、ISP#1障害前からある既存コネクションにおいても outside2を用いて通信継続が可能です。
Egress(送出)Interfaceが切り替わると、コネクションの()内のCurrent Interfaceも変わります。
ISP#1 ダウン前 既存通信 (outside1をEgressに利用)
ASA(config)# sh conn long | in flag
TCP OUTSIDE:outside1(outside17.7.7.7/80 (7.7.7.7/80) inside: 172.16.0.1/12345 (172.16.0.1/12345), flags UO , idle 3s, uptime 4m6s, timeout 1h0m, bytes 1000
ISP#1側リンクダウン後 既存通信 (outside2をEgressに利用)
ASA(config)# sh conn long | in flag
TCP OUTSIDE:outside1(outside27.7.7.7/80 (7.7.7.7/80) inside: 172.16.0.1/12345 (172.16.0.1/12345), flags UO , idle 2s, uptime 5m18s, timeout 1h0m, bytes 1596
ASA9.4: Traffic Zones
- 設定例や機能制限の詳細
http://www.cisco.com/c/en/us/td/docs/security/asa/asa94/config-guides/cli/general/asa-94-general-config/interface-zones.html
ASA: パケットキャプチャ機能の活用(CLI)
- 動作確認例で紹介したパケットキャプチャ方法の詳細
https://supportforums.cisco.com/ja/document/12437966
ファイアウォール トラブルシューティング
https://community.cisco.com/t5/-/-/ta-p/3161736
Firepower System and FTDトラブルシューティング
https://community.cisco.com/t5/-/-/ta-p/3161733
検索バーにキーワード、フレーズ、または質問を入力し、お探しのものを見つけましょう
シスコ コミュニティをいち早く使いこなしていただけるよう役立つリンクをまとめました。みなさんのジャーニーがより良いものとなるようお手伝いします