ネットワークの基礎から実務まで、順番に学べるメニューです。
ポート疎通確認をする
「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参照モデルの上位レイヤーを確認することで、より深い障害解析が可能になります
ネットワーク設計・トラブル対応でお困りではありませんか?
株式会社リアライズがサポートいたします。
- ネットワーク設計・構築
- トラブル調査・改善
- 業務効率化・自動化