はじめに
TCP pingを用いる事で、ASA自身から、もしくは 任意の送信元IP・ポート・インターフェイスから、任意宛先のTCPポートへの疎通確認を行う事ができます。
TCP pingは、ICMPの通過が許可されていない環境での、疎通確認の代替方法としても活用できます。
TCP pingは、ASAバージョン 8.4(1)からの新機能です。 CLI、もしくはASDMより実行可能です。 本ドキュメントは、ASA Software バージョン 9.4(1) を用いて確認、作成しております。
Caution:
TCP pingと Translate NAT(送信元アドレスの変換)を組み合わせて利用する事が可能です。 TCP pingと Untranslate NAT(宛先アドレスの変換)の組み合わせての利用は、version 9.5(2)から可能です。
TCP ping 動作概要
以下は、Webクライアントから WebサーバのTCP80番ポートにアクセス時の処理フロー概要です。

以下は、ASAのTCP ping機能を用い、Webクライアントと同じ送信元IPから、WebサーバのTCP80番ポート宛に、TCP pingを実行した時の処理フロー概要です。

TCP pingを利用時、ASAは指定されたIP・ポートの TCP SYNパケットを、送信元インターフェイスに注入します。 ASAは通常のTCP通信と同様に、当パケットの各種処理(ACLチェックやRouting、NAT、Securityチェックなど)を行った後、Egressインターフェイスより送出します。
対向機器が指定TCPポートをオープンしている場合、通常 SYN+ACK応答を行いますので、ASAが当応答を受信した場合は、TCP pingが成功したと みなし、速やかに対向機器に TCP Resetを送付し、コネクションをクローズします。
TCP ping コマンドライン
[書式]
ping tcp <if_name> <dst_host> <dst_port> [source <src_host> <src_port>] [repeat <count>] [timeout <seconds>]
<if_name> |
SYNパケットの送信元となるインターフェイス名 |
<dst_host> |
宛先IPアドレス、もしくは ホスト名 |
<dst_port> |
0-65535から、任意ポートを選択。0を選択時は、http(TCP=80)を利用 |
[source] |
未指定時はASAの実インターフェイスを利用 |
<src_host> |
送信元IPアドレスを指定 |
<src_port> |
0-65535から、任意ポートを選択。0を選択時は、ランダムポートを利用 |
<count> |
リピート回数。デフォルト5回 |
<seconds> |
タイムアウト間隔を秒で指定。デフォルト2秒 |
[コマンド例]
ASAインターフェイスから、WEBサーバ(1.0.0.101)のTCP80番ポート宛のTCP ping
ping tcp 1.0.0.101 80
InsideのWebクライアント(172.16.0.1)のランダムポートから、HTTPSサーバ(1.0.0.101)のTCP443番ポート宛のTCP ping
ping tcp inside 1.0.0.101 443 source 172.16.0.1 0
[コマンド実行例]
指定のTCPポートと疎通性がある場合
ASA01# ping tcp inside 1.0.0.101 80 source 172.16.0.1 0
Type escape sequence to abort.
Sending 5 TCP SYN requests to 1.0.0.101 port 80
from 172.16.0.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/2/6 ms
対向から TCP RESETを受信した場合 (例:TCPポートが開いていない時、など)
ASA01# ping tcp inside 1.0.0.101 25 source 172.16.0.1 0
Type escape sequence to abort.
Sending 5 TCP SYN requests to 1.0.0.101 port 25
from 172.16.0.1, timeout is 2 seconds:
RRRRR
Success rate is 0 percent (0/5)
対向から 応答が無い場合 (例:対向が存在しない、経路でドロップ、など)
ASA01# ping tcp inside 1.0.0.102 80 source 172.16.0.1 0
Type escape sequence to abort.
Sending 5 TCP SYN requests to 1.0.0.102 port 80
from 172.16.0.1, timeout is 2 seconds:
?????
Success rate is 0 percent (0/5)
Ciscoサイト (http://www.cisco.com) への疎通確認
ASA01(config)# ping tcp www.cisco.com 0
Type escape sequence to abort.
No source specified. Pinging from identity interface.
Sending 5 TCP SYN requests to 23.36.102.149 port 80
from 192.168.26.11, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 8/10/14 ms
[対話モード]
ASA01# ping tcp
Interface: inside
Target IP address: 1.0.0.101
Destination port: [80] 443
Specify source? [n]: y
Source IP address: 172.16.0.2
Source port: [0] 65001
Repeat count: [5]
Timeout in seconds: [2]
Type escape sequence to abort.
Sending 5 TCP SYN requests to 1.0.0.101 port 443
from 172.16.0.2 starting port 65001, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/1/1 ms
TCP ping using ASDM
1. Tools > Ping を選択

2. Pingパネルが表示されるので、Packet Type: より TCPを選択し、任意値を入力

ケース紹介
Case1: 社内端末から、インターネット上のWEBサーバへのアクセス確認
[要件]
以下構成において、Webクライアント(172.16.0.1)から、想定のACLでの許可と、Dynamic NAT(PAT)を行った後、WEBサーバ(1.0.0.101)のTCP80番ポートにアクセスすることが可能か、簡易試験と確認を行いたい。
なお、WebクライアントとASA間は、疎通性がある事を 既に確認しているが、本試験ではWebクライアントは利用できないものとする。

[確認手順]
ASAにてTCP pingを実行し、insideインターフェイス側のWebクライアントのIPから、WEBサーバのTCP80番ポートにアクセスが可能である事を確認
ASA01(config)# ping tcp inside 1.0.0.101 80 source 172.16.0.1 0 repeat 1
Type escape sequence to abort.
Sending 1 TCP SYN requests to 1.0.0.101 port 80
from 172.16.0.1, timeout is 2 seconds:
!
Success rate is 100 percent (1/1), round-trip min/avg/max = 1/1/1 ms
show logより、想定のACLにHITした後、想定の送信元IPに PATされている事を確認
ASA01(config)# show log
Apr 05 2015 21:59:38: %ASA-6-106100: access-list IN permitted tcp inside/172.16.0.1(15641) -> outside/1.0.0.101(80) hit-cnt 1 first hit [0xa5a49d63, 0x0]
Apr 05 2015 21:59:38: %ASA-6-305011: Built dynamic TCP translation from inside:172.16.0.1/15641 to outside:1.0.0.7/15641
Apr 05 2015 21:59:38: %ASA-6-302013: Built outbound TCP connection 2600 for outside:1.0.0.101/80 (1.0.0.101/80) to inside:172.16.0.1/15641 (1.0.0.7/15641)
Apr 05 2015 21:59:38: %ASA-6-302014: Teardown TCP connection 2600 for outside:1.0.0.101/80 to inside:172.16.0.1/15641 duration 0:00:00 bytes 0 Flow closed by inspection
show access-listより、想定のlineに HITしている事を確認
ASA01(config)# show access-list IN
access-list IN; 5 elements; name hash: 0x9f2434aa
access-list IN line 1 extended permit tcp 172.16.0.0 255.255.255.0 any eq www log informational interval 300 (hitcnt=1) 0xa5a49d63
access-list IN line 2 extended permit tcp 172.16.0.0 255.255.255.0 any eq https log informational interval 300 (hitcnt=0) 0xbccfa150
access-list IN line 3 extended permit tcp 172.16.0.0 255.255.255.0 any eq smtp log informational interval 300 (hitcnt=0) 0x4a7eb67d
show nat detailより、想定のNATエントリに HITしている事を確認
ASA01(config)# show nat detail
--- snip ---
Auto NAT Policies (Section 2)
1 (inside) to (outside) source dynamic IN-172.16.0.0 interface
translate_hits = 1, untranslate_hits = 0
Source - Origin: 172.16.0.0/24, Translated: 1.0.0.7/24
参考情報
Cisco ASA Series Command Reference, I - R Commands
http://www.cisco.com/c/en/us/td/docs/security/asa/asa-command-reference/I-R/cmdref2/p1.html#pgfId-2133619
ファイアウォール トラブルシューティング
https://supportforums.cisco.com/ja/document/12725841
Firepower System and FTDトラブルシューティング
https://community.cisco.com/t5/-/-/ta-p/3161733