こんにちは。今回の記事では、「WinSCPでポート開放ができているはずなのに、グローバルIPで接続ができない」というご相談について取り上げます。具体的には、Ubuntu 24.04.1 LTS のサーバーと Windows 10 のクライアントを使い、SSH用の 22番ポート を開放しているにもかかわらず、グローバルIPでの接続がタイムアウト になるという現象です。ローカルIPでは正常に接続できるのに、グローバルIPを指定するとエラーになってしまう――このような状況に悩まれている方は意外と多いのではないでしょうか。
ここでは、相談者さんが実際に遭遇された状況をなるべく詳しくご紹介しながら、トラブルシューティングのヒントや、調べるべきポイントをわかりやすくまとめていきたいと思います。ちょっとした設定の見落としや、ネットワーク構成の誤解などが原因になっていることもあるので、一つひとつ順を追って確認していきましょう。
- 相談者の体験談:ポート開放は大丈夫なはずなのに…
- なぜローカルIPではOKで、グローバルIPだとNGになるのか
- 相談者に寄り添ったアドバイス:確認しておきたい手順
- もし他に気になる点があれば…
- 最後にまとめ
相談者の体験談:ポート開放は大丈夫なはずなのに…
まずは、今回ご相談いただいた内容の詳細を整理してみましょう。相談者さんは 「WinSCPでリモートサーバー(Ubuntu 24.04.1 LTS)にSFTP接続したい」 というご要望をお持ちでした。SFTPはSSHを利用したファイル転送プロトコルなので、22番ポート を使って通信します。相談者さんは次のように状況を説明されています。
- サーバーOS:Ubuntu 24.04.1 LTS
- クライアントOS:Windows 10
- 開放状況:
- ウェブ上のポート開放確認サイトで22番が開いていると表示される
- ファイアウォールの設定でも22番は
allowになっている
- 接続状況:
- ローカルIPを使うと正常に接続できる
- グローバルIPではタイムアウトしてしまう
- その他:
- IPアドレスは固定できている
さらに相談者さんは、「ポート開放ができているという表示も出ていて、ファイアウォールもOK、それなのにグローバルIPで接続できないのはなぜ?どこを探ったら良い?」という疑問を持たれています。
相談者さんとしては、「ウワサに聞く『NATの設定』『ISP側のブロック』『セキュリティグループの設定漏れ』などがあるのだろうか?」と、頭の片隅にちらついているものの、何からチェックすべきかがイマイチ分からず困っているご様子です。「もうどこか変な設定しちゃったんだろうか…」と不安を抱えていらっしゃるのではないでしょうか。
こういった状況では、あらゆる角度から**「通信経路がちゃんと通るように設定されているか」** を洗い出す必要があります。特に、ルーターやモデムのポートフォワーディング設定や、ISP(契約プロバイダ)の制限がないか、クラウド環境であればセキュリティグループなど、確認箇所は多岐にわたります。一見「ポートは開いているしファイアウォールもOK」という状態でも、実は別の箇所でブロックされていることがよくあるんです。
なぜローカルIPではOKで、グローバルIPだとNGになるのか
ローカルIPで接続できているということは、基本的にUbuntu側のSSHサービスや、サーバー自体の内部的な設定は大きく間違っていない可能性が高いです。つまり、「SSHが起動していない」とか「22番ポートでlistenしていない」という問題ではないでしょう。
一方で、グローバルIP を使ったアクセスは、ルーターやモデム、さらに上位プロバイダを通過してサーバーに通信が届きます。その経路で何かしらのブロックや誤設定があると、接続は失敗します。
ここで疑われるポイントを整理してみましょう。
-
ルーターのポートフォワーディング設定が正しいか
- 「外部から22番ポートにアクセスが来たら、サーバーのローカルIPの22番に転送する」というルールが必要
- もしNASなどの他デバイスで22番ポートを使っていると競合している可能性もある
-
複数のルーターがある(多段ルーター環境)
- 光回線のONU(モデム)と市販のWi-Fiルーターが両方ルーティングしている場合など
- 一方のルーターでは転送設定があっても、もう片方で設定がされていないケース
-
ISP(プロバイダ)が22番ポートの通信をブロックしている
- 特定のISPや回線サービスでは、メール送信の25番ポートだけでなく、SSHなどの22番ポートもブロックしている場合がある
- 個人宅向けのプランではサーバーサービスが制限されている可能性
-
ファイアウォールやiptables、UFWの設定
- Ubuntuに限らず、OSレベルのファイアウォール設定が想定外になっている場合
- 確認サイトでは「ポート開放済み」と出ても、実際には特定のIPレンジしか許可されていない等のレアケース
-
IPv4とIPv6の混在・勘違い
- ルーターや回線がIPv6接続になっていて、実はIPv4でのポート転送がうまく動いていないケースも考えられる
- 「グローバルIP」と思っていたものがIPv6アドレスだった、ということも一部環境ではありうる
-
サーバー側のSSH設定
sshd_configが特定のインターフェースのみListenしている- 通常は
0.0.0.0で待ち受けていればOKだが、設定によっては内部ネットワーク(ローカルIP)だけを許可しているケースもある - この場合、リモートからの接続はブロックされる可能性がある
- 通常は
これらの点を一つひとつ検証して、「本当に通信が通っているのか?」を切り分けていく必要があります。
相談者に寄り添ったアドバイス:確認しておきたい手順
ここからは、相談者さんが「どこを探ったらいいの?」というポイントに対して、順を追った確認方法やヒントを紹介します。ぜひ一つずつご自身の環境に当てはめてみてください。
1. ルーターのポートフォワーディング(NAPT/NAT設定)の再確認
- 「本当に22番ポートがサーバーのローカルIPに転送されているか?」
ルーターの管理画面に入り、設定を再度チェックしてください。 - もしも別の機器(NASなど)で22番ポートを使っていると、競合を起こしているかもしれません。
- ルーターを複数利用している場合、上位ルーターでも同じ設定が必要です。
2. ISP(プロバイダ)のサービス仕様を要確認
- ISPによっては、固定グローバルIPを有料オプションでしか提供しない ことがあります。実際にはグローバルではなく「プライベートIPを割り当てられているだけ」というケースもあるのです。
- また、ISPがサーバー用途(特にSSH)をブロックしている可能性も否定できません。回線プランの仕様やサポートページ、契約書などをチェックしましょう。
3. ファイアウォールやOSの設定をもう一度点検
- Ubuntuの場合、
ufw statusやiptables -Lでルールを確認します。 - 「特定のIP以外からのアクセスを拒否」にしていたり、あるいはIPテーブルのPREROUTING, POSTROUTINGの記載に問題がないかを見てみましょう。
- サーバー側でSSHデーモン (
sshd) が全てのインターフェースで待ち受けているか (ListenAddress 0.0.0.0など) も確認してください。
4. IPv6接続の可能性を考慮
- 最近の回線では、自動的にIPv6接続が有効になっていることがあります。
- 自分が使っている「グローバルIP」というのが、IPv4 アドレスなのか IPv6 アドレスなのかをまず確認しましょう。
- もしIPv6しか割り当てられていない場合は、ルーター側での「ポート転送」という概念が変わってくるので注意が必要です。
5. 物理的な配線やマシン構成にミスがないか
- ルーターのLANポートからサーバーへ直結しているか、管理していないハブを介していないか、配線をトラブルシュートするのも大切です。
- 意外とありがちなのが、LANポートとWANポートが逆になっている、あるいは光回線終端装置(ONU)と市販ルーターの配線が正しくない、といったケースです。
6. ログを活用してタイムアウトの原因を探る
- サーバー側のSSHログ(
/var/log/auth.logやjournalctl -u sshなど)を確認して、「接続の試み」自体が記録されているかを見ましょう。 - ログが全く残っていない場合は、そもそもサーバーに通信が届いていないと考えられます。
- 逆に「接続を試みたけど鍵認証で失敗」「パスワードが違う」といったエラーメッセージなら、ポート転送やファイアウォールは問題なく通っていると言えます。
もし他に気になる点があれば…
上記のステップを踏んでもどうしてもつながらない場合、次のようなことも視野に入れてみてください。
- 回線自体の問題
- たとえばモバイル回線やCATV系の回線は、独自の制限が入っていることもあります。
- セキュリティソフトやアンチウイルス設定
- Windows側のセキュリティソフトが通信をブロックしているケースもありえます。
- リモートからのテスト
- 「外部からサーバーにアクセスしてみる」テストをするときに、実は同じLAN内部の別PCからグローバルIPを指定してアクセスしているだけ…というケースもあります。ルーターによっては「NAPTループバック」をサポートしていないと、自宅内から自宅のグローバルIP宛のアクセスが失敗することがあります。
いろいろな角度からチェックしてみてくださいね。
最後にまとめ
「WinSCPでポート開放はできているはずなのに、グローバルIPで接続できない」 というとき、相談者さんのようにファイアウォール設定も問題なさそうなのに、なぜかタイムアウトになってしまう現象は珍しくありません。ローカルIPではOK、グローバルIPではNGという場合、多くはネットワーク構成(ルーターやISP)に起因する問題であることが多いです。
- まずはルーターのポートフォワーディングが正しく機能しているか(多段ルーター含む)を要チェック
- ISP側の仕様やブロックがないかを調べる
- Ubuntu側のSSH設定やファイアウォールのルールを再点検する
- IPv6接続ではないか、またはNAPTループバックがサポートされているかも確認
- サーバー側ログ(
/var/log/auth.logなど)を見て、接続要求が届いているか把握する
このステップを踏んでいくと、多くの場合は原因が突き止められます。
ちょっと面倒かもしれませんが、一つずつ確認していくことで、必ず「ここがおかしいんだ」というヒントを見つけられるはずです。
もし自分一人で原因を特定できそうになければ、インターネットプロバイダのサポート窓口や、ルーターのメーカーサポートに問い合わせるのも有効です。「自宅でサーバーを公開したいんですが、22番ポートは使えますか?」 と明確に尋ねてみると、方針や制限が確認できます。
相談者さんのご状況、そして同じように「ポート開放できたはずなのに繋がらない…」と悩まれている方々が、少しでもヒントを得られますよう願っています。どうぞ焦らず、一歩ずつ対処を進めてみてくださいね。もしまた何か疑問や具体的なログが出てきたら、どんどん質問やご相談を投げかけてもらえればと思います。
皆さんの環境がうまく接続できるよう、応援しています。