Realize,Inc.

ポート疎通確認をする

「Pingは届くのにアプリが繋がらない」原因をVBAで特定しましょう

Pingが通っていても、目的のサービス(Webやメール等)が正常に動いているとは限りません。
今回は VBA から特定の「TCPポート」へ接続を試みることで、サーバー上のサービスが応答可能な状態にあるかを診断します。

このVBAでできること

TCPポート接続確認

指定したIPアドレスとポート番号(80番や443番など)へ、実際に接続できるかテストします。

サービス稼働状況の把握

サーバーが起動しているかだけでなく、Webサーバーソフトやリモートデスクトップが「待ち受け」ているかを確認できます。

ファイアウォールの遮断確認

通信が拒否される場合、ネットワーク経路上のファイアウォールでブロックされている可能性を疑うことができます。

sequenceDiagram
    participant PC as 自分のPC (VBA)
    participant FW as ファイアウォール
    participant Server as サーバー

    Note over PC, Server: TCPポート確認 (443番の場合)
    PC->>FW: 接続リクエスト(SYN)
    
    alt 許可されている場合
        FW->>Server: リクエスト転送
        Server-->>PC: 接続OK(SYN+ACK)
        Note over PC, Server: サービス稼働中
    else 遮断されている場合
        FW--X PC: 通信をドロップ
        Note over PC, FW: タイムアウト / 接続失敗
    end

VBAコード


Sub CheckTcpPort()

    Dim objSocket As Object
    Dim targetHost As String
    Dim targetPort As Long
    Dim waitTime As Double

    ' 接続先とポート番号を指定
    targetHost = "www.google.com"
    targetPort = 443

    On Error GoTo ErrorHandler

    ' Winsockオブジェクトの作成
    ' ※環境により利用できない場合があります
    Set objSocket = CreateObject("MSWinsock.Winsock")

    objSocket.RemoteHost = targetHost
    objSocket.RemotePort = targetPort

    ' 接続開始
    objSocket.Connect

    ' タイムアウトの設定(5秒)
    waitTime = Timer + 5

    ' 接続完了(State=7)になるまで待機
    Do While objSocket.State <> 7
        DoEvents
        If Timer > waitTime Then
            MsgBox "接続タイムアウト:ポートが閉じているか、FWで遮断されています。", vbExclamation
            objSocket.Close
            Exit Sub
        End If
    Loop

    MsgBox "接続成功:" & targetPort & "番ポートは開いています。", vbInformation

    objSocket.Close
    Exit Sub

ErrorHandler:
    MsgBox "接続失敗:サーバー未起動か、コントロールが未登録です。", vbCritical
End Sub

代表的な確認ポート一覧

トラブル時にまず確認すべき主要なポート番号です。

ポート番号 主な用途 繋がらない場合の症状
80 / 443 HTTP / HTTPS Webサイトが表示できない。
3389 RDP リモートデスクトップ接続ができない。
22 SSH Linuxサーバー等への遠隔管理ができない。
445 SMB 共有フォルダ(Windowsファイル共有)が開けない。

実務ポイント

OSI参照モデルでの切り分け

Ping(第3層:ネットワーク層)がOKで、ポート疎通(第4層:トランスポート層)がNGなら、アプリの設定やFWを疑います。

外部へのポート開放確認

自社サーバーを外部公開した際、正しくインターネットから「窓口」が見えているかの最終確認に使えます。

マナーとセキュリティ

不必要なポート確認(ポートスキャン)は攻撃予備動作とみなされる場合があります。必ず管理下の機器に対して行ってください。

よくあるトラブル

「MSWinsock」が作成できないエラー
Winsockコントロールは古いライセンス体系のため、最新の64bit版Office等では動作しないことがあります。その場合はPowerShell等との連携を検討してください。
Pingは返るのにタイムアウトになる
サーバー側でPing(ICMP)を許可していても、サービス用のポートを許可していない(FWの閉じ忘れ)ケースでよく発生します。
VPN接続時だけ失敗する
VPN装置の設定で、通してよいポート番号が制限されている可能性があります。

まとめ

  • TCPポート疎通確認は、サービスが「応答可能か」を調べる重要な手段です
  • Pingだけではわからない、ファイアウォールやサービス停止の問題を発見できます
  • OSI参照モデルの上位レイヤーを確認することで、より深い障害解析が可能になります

ネットワーク設計・トラブル対応でお困りではありませんか?

株式会社リアライズがサポートいたします。

  • ネットワーク設計・構築
  • トラブル調査・改善
  • 業務効率化・自動化
お問い合わせはこちら