1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

z/OS 上で取得された IP パケット・トレースを Wireshark で見る

Posted at

はじめに

最近では、z/OS 上のミドルウェアやアプリケーションも TCP/IP 接続をすることが標準になり、セキュリティーの観点から TLS(SSL) の設定が必要となっています。一般に TLS 接続は、サーバー側とクライアント側に設定が必要で、設定不備によって TLS 接続ができないことがよくあります。この場合、TLS 接続が失敗したときの IP パケット・トレースを取得し、それを分析することで、原因が判明することが多いと思います。

この記事では、z/OS 上で取得された IP パケット・トレースを Wireshark で読み込むことが可能な Sniffer 形式に変換し、PC 上の Wireshark で読み込むまでの流れを説明します。

IP パケット・トレースの取得

z/OS 上での IP パケットの取得方法はこちらの記事にまとまっています。
https://qiita.com/tomotagwork/items/418cf7bf120720aa54bf

幸いにも、私が利用している環境では、NetView が稼働していますので、NetView CLIST で手順を簡易化しています。
そのとき利用している、サンプルの NetView CLIST も載せておきます。
なお、当環境の TCP/IP スタック名はTCPIP1 になっています。

/* REXX */                                                        
/* IP PACKET TRACE */                                             
                                                                  
TRACE E                                                           
                                                                  
TCPIPSTACK = 'TCPIP1'                                             
                                                                  
SAY '*** START IP PACKET TRACE ***'                               
                                                                  
'PIPE MVS V TCPIP,'TCPIPSTACK',PKT,ON | WAIT 10 | CONS'           
'PIPE MVS TRACE CT,WTRSTART=GSKWTR | WAIT 10 | CONS'              
'PIPE MVS TRACE CT,ON,COMP=SYSTCPDA,SUB=('TCPIPSTACK') | WAIT 3', 
'| EDIT "REPLY" 1 LASTLINE WORD 1 NW',                            
'",WTR=GSKWTR,END" NEXT',                                         
'| MVS | WAIT 3 | CONS'                                           

/***** ここでテストしたいコマンドを実行 *****/                                                                       
                                                                  
'PIPE MVS V TCPIP,'TCPIPSTACK',PKT,OFF | WAIT 10 | CONS'          
'PIPE MVS TRACE CT,ON,COMP=SYSTCPDA,SUB=('TCPIPSTACK') | WAIT 3',
'| EDIT "REPLY" 1 LASTLINE WORD 1 NW',                           
'",WTR=DISCONNECT,END" NEXT',                                    
'| MVS | WAIT 3 | CONS'                                          
'PIPE MVS TRACE CT,WTRSTOP=GSKWTR | WAIT 10 | CONS'              
                                                                 
SAY '*** END   IP PACKET TRACE ***'                              
                                                                 
EXIT 0                                                           

Sniffer 形式への変換

メインとなる Sniffer 形式への変換ですが、 IPCS が正式にサポートしています。
https://www.ibm.com/docs/en/zos/2.5.0?topic=ipcs-options-keywords

以下のような IPCS を実行する JCL を実行することで、z/OS の IP パケット・トレースを Sniffer 形式に変換することができます。今回のケースでは、 IP パケット・トレースが書き込まれたデータ・セット名はKATAYAM.SSLTRACE.D230124.T030550 になります。

Sniffer 形式の IP パケット・トレースが書かれるデータ・セットのレコード長は 8,000 あれば十分ですので、可変長のレコード形式 (RECFM=VB) で、レコード長を 8,000 (LRECL=8000) で定義しています。

//WSHARK1  PROC DSNAME=                                      
// EXPORT SYMLIST=(*)                                        
// SET DSNAME=&DSNAME.
//STEP01   EXEC PGM=IKJEFT01,DYNAMNBR=20,REGION=0M           
//SYSPROC  DD DSN=SYS1.SBLSCLI0,DISP=SHR                     
//SYSTSPRT DD SYSOUT=*                                       
//IPCSPRNT DD SYSOUT=*                                       
//IPCSTOC  DD SYSOUT=*                                       
//SYSUDUMP DD SYSOUT=*                                       
//SNIFFER  DD DISP=(,CATLG),DSN=&DSNAME..SNIFFER,            
//            VOL=SER=WRKVL1,UNIT=SYSDA,SPACE=(TRK,(15,15)), 
//            DCB=(LRECL=8000,RECFM=VB)                      
//SYSTSIN  DD *,SYMBOLS=JCLONLY                              
PROFILE MSGID                                                
%BLSCDDIR VOLUME (WRKVL1)                                    
IPCS NOPARM                                                          
SETDEF DA('&DSNAME.')                                                
CTRACE COMP(SYSTCPDA) OPTIONS((SNIFFER(7000,TCPDUMP) NOREASSEMBLY) + 
 GMT                                                                 
END                                                                  
/*                                                                   
// PEND                                                              
//*                                                                  
// EXEC WSHARK1,DSNAME=KATAYAM.SSLTRACE.D230124.T030550         

IP パケット・トレースは可読な形式ではありませんが、データ・セットの中身を見てみると、IPCS 実行前と実行後で以下のように変化していることが分かります。

変換前

 BROWSE    KATAYAM.SSLTRACE.D230124.T030550         Line 0000000000 Col 001 080 
 Command ===>                                                  Scroll ===> DATA 
********************************* Top of Data **********************************
.ラ...... {~ュホ'sg..........ツヤ. .......... ...EZBPTFM4CPAC    SYSTCPDA........TCPI
******************************** Bottom of Data ********************************

変換後

 BROWSE    KATAYAM.SSLTRACE.D230124.T030550.SNIFFER Line 0000000000 Col 001 080 
 Command ===>                                                  Scroll ===> DATA 
********************************* Top of Data **********************************
~¥CM....................                                                        
ウ ....j ...3...3..!ンQ1..!ンQ...、..V`x.. . 7.ンQ1.ンQ..テ.テ.J#'.. ス.ンQ1.テ.ワ...、¢、「、+」
ウ ....ク....¢...¢..!ン.-..!ン.ア..、...Yf.. . ..ン.ア.ン.-jリ.~e.. ....‾...コ .....ム......
ウ ....ケ....¢...¢..!ン.-..!ン.ア..、..... ...Zト.ン.-.ン.ア.~jリコmョ e..,‾.サ..ソ.....ユ.....セ
ウ ....ケ;...。...。..!ン.-..!ン.ア..、...Yg.. . ..ン.ア.ン.-jリ.~e..,コmョ  . ..-.......e.ヤ.セ
ウ ....W ...ル...ル..!ン.-..!ン.ア..、..マYh.. ..n.ン.ア.ン.-jリ.~e..,コmョ  . .~ー.......e...セ
ウ ....Xb...。...。..!ン.-..!ン.ア..、....、 ...I+.ン.-.ン.ア.~jリコmョ e..  ..T]・.......セ サ.e
ウ ....X ...ィ...ィ..!ン.-..!ン.ア..、....・ ...I・.ン.-.ン.ア.~jリコmョ e..  ..T#........セ サ.e
ウ ....YB...。...。..!ン.-..!ン.ア..、....ヲ ...I<.ン.-.ン.ア.~jリコmッ.e..  ..T]........セ サ.e
ウ ....YH...。...。..!ン.-..!ン.ア..、...Yi.. . ..ン.ア.ン.-jリ.~e.. コmッ. ." .........e...セ
ウ .... {...。...。..!ン.-..!ン.ア..、...Yテ.. . ..ン.ア.ン.-jリ.~e.. コmッ. ." .........e...セ
ウ .... ヘ...。...。..!ン.-..!ン.ア..、..... ...Zl.ン.-.ン.ア.~jリコmッ.e..S ..T]........セ ス.e
******************************** Bottom of Data ********************************

Wireshark で見る

Sniffer 形式のデータ・セットを FTP のバイナリー・モードで PC にダウンロードし、Wireshark から Open でそのファイルを開くと、z/OS 上の IP パケット・トレースが Wireshark で見ることができます。
(IP アドレス部分はモザイクを施しています。)

Wireshark_モザイク.png

Wireshark であれば、IP パケットの流れや、パケットの種類、その中身について簡単に確認できますし、大量の IP パケットが含まれる場合にはフィルターを簡単にかけることができます。
(モザイクだらけになりそうですので、画像はありません。。)

おわりに

z/OS 上の IP パケット・トレースを Wireshark で見る方法を説明しました。
z/OS 上の IP パケット・トレースは IPCS でレポート形式に変換することができますが、レポートが縦長になってしまいますし、大量の IP パケットが含まれる場合、必要な情報を取得することは困難と思いますので、Wireshark などの Sniffer 形式をサポートするネットワーク分析ツールを使用することで、効率的に IP パケットの分析ができます。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?