HULFTに頼らないTCP疎通確認

OrangeLab. 運営チーム
作成日時: - 更新日時:
Avatar
当記事は、コミュニティ掲載記事執筆者募集よりご寄稿いただいた記事となります。
エラー分析・問題の切り分けという、HULFT運用担当者「必読」のTipsをご紹介いただきます。

1. 目的

HULFTを運用する際、HULFT導入前のサーバで該当ポートの疎通確認をしたい、または、エラーの切り分けとして疎通確認を行いたい、と思ったことはありませんか?

例えば、HULFT Windowsの疎通確認実施した際、Winsockのエラー(10054や10060)を取得したとします。

HULFTに起因しないことを証明する(HULFT以外でポート30000のTCP通信を行う)には、本記事の技術が役に立ちます。

※ 本記事のコマンド例では、ホスト名等は、下記としています。
通信先ホスト名 remote-host
通信先IP 100.100.100.100
HULFTのポートNo. 30000
※ 本記事で使用した各パッケージのバージョンは、下記の通りです。
Windows PowerShell 2.0
bash 3.2.25
python 2.4.3

2. Windows

2.1. telnetやnc(netcat)を使用しないコマンドラインのTCPクライアント

  1. コマンドプロンプトからpowershell 又は powershellを開く
  2. 下記コマンドを順に実行
    $tcp_clnt = New-Object System.Net.Sockets.tcpClient
    $tcp_clnt.connect("remote-host",30000)
    $tcp_clnt.connected
    もしくは
    $tcp_clnt = New-Object System.Net.Sockets.tcpClient
    $tcp_clnt.connect("100.100.100.100",30000)
    $tcp_clnt.connected
  3. 最後のコマンド $tcp_clnt.connected の結果、[True]が出力されれば、通信成功([False]なら失敗)

2.2. コマンドラインのTCPサーバ

  1. コマンドプロンプトからpowershell 又は powershellを開く
  2. 下記コマンドを順に実行
    $tcp_srv = [System.Net.Sockets.TcpListener]30000
    $tcp_srv.Start();
  3. TCPクライアントが接続されたと確認するには、下記で ESTABLISHED となっている通信を確認
    cmd.exe /c "netstat.exe -ano|findstr 30000"
  4. 下記コマンドでTCPサーバ停止
    $tcp_srv.Stop();

3. Linux

3.1. TCPクライアント~telnet

  1. 下記コマンドを実行
    telnet remote-host 30000
    もしくは
    telnet 100.100.100.100 30000

3.2. TCPクライアント~bashのみ使用可能 任意のデータを通信相手に送信

  1. 下記コマンドを実行
    echo -n "xxxxx" > /dev/tcp/remote-host/30000
    もしくは
    echo -n "xxxxx" > /dev/tcp/100.100.100.100/30000

3.3. コマンドラインのTCPサーバ(python2のhttpサーバ)

  1. 下記コマンドを実行
    python -m SimpleHTTPServer 30000

おまけ

1. hostsファイルも参照してくれる名前解決 【Windows】

  1. powershellから下記を実行
    [System.Net.DNS]::GetHostByName("remote-host")

2. hostsファイルも参照してくれる逆引き 【Windows】

  1. powershellから下記を実行
    [System.Net.DNS]::GetHostByAddress("100.100.100.100")

3. hostsファイルも参照してくれる名前解決 【Linux(python)】

  1. 下記を実行
    python -c 'import socket; print(socket.gethostbyname("remote-host"))'

4. hostsファイルも参照してくれる逆引き 【Linux(python)】

  1. 下記を実行
    python -c 'import socket; print(socket.gethostbyaddr("100.100.100.100"))'

さいごに

本記事の例文では「30000」ポートしか掲載していませんが、勿論「31000」ポートも利用可能です。
HULFT運用の場面で、本記事の内容が、技術情報の共有としてお役に立てば幸いです。
この記事は役に立ちましたか?
0人中0人がこの記事が役に立ったと言っています

コメント