「DNSは正常に引ける」
「pingも通る」
「80番は通るのに443番だけNG」
「同じIPなのにポートによって結果が違う」
この症状はネットワーク・OS・ミドルウェア・LBの どこか1箇所でも設計ミスがあると必ず発生します。
本記事では、特定ポートだけ通信できない時の原因を体系的に整理し、 現場でそのまま使える切り分け手順と対策を解説します。
目次
まず結論:原因はほぼ5パターンに集約される
- ポート自体がLISTENしていない
- Firewallでポート単位に遮断されている
- SELinuxがポートを許可していない
- LB/NW機器がポート単位で制御している
- アプリが接続を即切断している
DNSはIPを引くだけなので、この問題には直接関与しません。
① 本当に「そのポート」がLISTENしているか
最初に確認すべきはサーバ側でポートが開いているかです。
# LISTENポート確認
ss -lntp
# 特定ポートのみ確認
ss -lntp | grep 443
ありがちな原因
- 設定ファイルでは有効だがプロセス未起動
- 127.0.0.1でのみLISTENしている
対策
- 0.0.0.0 / :: でLISTENしているか確認
- systemdの起動状態を確認
systemctl status nginx
② クライアント側からポート疎通を明示的に確認
pingが通っても、TCP/UDPは別物です。
# TCP疎通確認
nc -vz example.com 443
# curlで実通信
curl -v https://example.com
結果の読み方
- timeout → FW / 経路
- refused → ポート未LISTEN
- 即切断 → アプリ / LB
③ Firewall(firewalld / iptables)によるポート遮断
ポート単位で遮断されているケースは非常に多いです。
firewalld確認
firewall-cmd --list-all
iptables確認
iptables -L -n
よくあるミス
- 80番だけ許可して443を忘れる
- INPUTはOKだがOUTPUTが制限されている
対策
- 対象ポートが明示的に許可されているか確認
firewall-cmd --add-port=443/tcp --permanent
firewall-cmd --reload
④ SELinuxが「そのポート」を拒否している
SELinuxはポート番号単位で通信を制御します。
SELinux状態確認
getenforce
ポート許可状況確認
semanage port -l | grep http
典型的な失敗
- Apacheを非標準ポートで起動
- ポートをsemanageに登録していない
対策
# 例:8080をhttpとして許可
semanage port -a -t http_port_t -p tcp 8080
AVCログ確認
ausearch -m AVC -ts recent
⑤ LB(ロードバランサ)のポート設定ミス
LB配下ではポート単位の設計ミスが非常に多発します。
よくある原因
- LB → バックエンドの転送ポート不一致
- health checkは通るが実通信は別ポート
- idle timeout切れ
対策
- LBのリスナーポートと転送先確認
- バックエンドFWも併せて確認
⑥ 経路・NATで特定ポートだけ破棄される
NW機器ではポート単位で制御されている場合があります。
確認
traceroute example.com
クラウド環境では以下も要確認です。
- Security Group
- NACL
- ルーティングテーブル
⑦ アプリが接続を拒否・即切断している
ポートは開いているが、アプリが拒否するケースです。
典型例
- 接続数上限
- IP制限
- 認証前に切断
確認
# 接続状態確認
ss -ant | grep 443
対策
- アプリログ確認
- max connection設定見直し
即解決のためのチェックリスト
- ポートはLISTENしているか
- FWで許可されているか
- SELinuxポート登録済みか
- LB設定に不整合はないか
- アプリが拒否していないか
まとめ
「DNSは引けるが特定ポートだけ通信できない」場合、
- DNSは原因ではない
- ポート単位の制御が必ず存在する
LISTEN → FW → SELinux → LB → アプリの順で切り分ければ、 いち早く原因へ辿り着けます。
あわせて読みたい


DNSは引けるが通信できない時の切り分け
「名前解決はできているのに通信できない」「digやnslookupは成功するが、curlやncが失敗する」「pingは通るのにアプリ通信だけNG」 このトラブルは現場で非常に発生頻…
あわせて読みたい


SELinuxが原因で通信できない時の切り分け手順【Firewall正常でも要注意】
Linuxサーバーで「ポートはLISTENしている」「Firewallも開いている」 にもかかわらず通信できない場合、原因として非常に多いのが SELinux です。 本記事では、SELinux…
あわせて読みたい


firewalldとSELinuxの役割の違い【混同しがちな通信制御を完全整理】
Linuxサーバーで通信トラブルが起きた際、 firewalld(iptables)とSELinuxの役割を混同していると、 切り分けに時間がかかり、誤った対処をしてしまいがちです。 本記…
