Ubuntu からインターネットへローカルサービスを公開する:ポートフォワーディング完全ガイド
公開日: 28 May 2025
-
想定される前提条件 : Ubuntuの基本知識、ターミナル、基本的なネットワーク概念
-
技術的な概念 : NAT, ポートフォワーディング, ファイアウォール, リバースプロキシ
-
システムコマンド : ターミナルの使用、ネットワーク構成
-
高度なセクション : モニタリング, セキュリティ, クラウドの代替案
問題:NATとプライベートアドレス
デフォルトでは、お使いのインターネットボックスは NAT(Network Address Translation)を使用して、ご家庭内ネットワークのすべてのデバイス間で1つのパブリック IP アドレスを共有します。お使いのローカルマシンは、インターネット上ではルーティングできないプライベート IP アドレス(192.168.x.x、10.x.x.x など)を使用します。
Ubuntu マシンでサービスを起動すると(たとえばポート 8080 のウェブサーバーなど)、それはローカルネットワークからしかアクセスできません。インターネットからアクセスできるようにするには、ポートフォワーディングを設定する必要があります。
ステップ 1: あなたのパブリック IP アドレスを特定する
まず、インターネット接続のパブリックIPアドレスを取得しましょう:
# Plusieurs méthodes au choix
curl ifconfig.me
curl ipecho.net/plain
wget -qO- http://ipecho.net/plain
# Ou encore
curl -s checkip.amazonaws.com
このIPアドレスは、インターネットユーザーがあなたのサービスにアクセスするために使用するものです。
ステップ2:UbuntuマシンのローカルIPアドレスを確認する
Ubuntuマシンはローカルネットワーク上のプライベートIPアドレスを持っています。確認するには:
# Afficher toutes les interfaces réseau
ip addr show
# Ou plus spécifiquement pour l'interface principale
ip route get 1.1.1.1 | awk '{print $7; exit}'
# Alternative avec hostname
hostname -I | awk '{print $1}'
このアドレスをメモしてください(例えば`192.168.1.100`), 設定のためにそれが必要になります。
ステップ3: ルーターでポートフォワーディングを設定する
構成はお使いのボックスのモデルによって異なりますが、原理は同じです:
管理インターフェースへのアクセス
ブラウザを開き、ボックスのウェブインターフェイスにアクセスしてください:
-
フリーボックス</think>`192.168.1.1` ou
mafreebox.freebox.fr -
Livebox Orange:`192.168.1.1`
-
SFRボックス</think>`192.168.1.1`
-
Bbox Bouygues :
192.168.1.254
リダイレクトの設定
ポートフォワーディング専用のセクションを探してください(名前は変わります):
-
ポート転送
-
NAT/PAT
-
ポートフォワーディング
-
ゲームサーバー
これらの設定で新しいルールを作成:
| フィールド | 値 |
|---|---|
名前/説明 |
Ubuntuウェブサービス"(または他の明示的な名前) |
外部ポート(またはパブリックポート) |
8080 |
内部IPアドレス |
UbuntuマシンのIPアドレス (例: 192.168.1.100) |
内部ポート (または プライベートポート) |
8080 |
プロトコル |
TCP |
状態 |
有効 |
ステップ 4 :Ubuntu 上のサービスの設定
サービスが localhost だけではなく、すべてのインターフェイスでリッスンしていることを確認してください:
# ✅ Correct : écoute sur toutes les interfaces
python3 -m http.server 8080 --bind 0.0.0.0
# ❌ Incorrect : écoute seulement en local
python3 -m http.server 8080 --bind 127.0.0.1
サービスが正しくリスンしていることを確認する:
# Vérifier les ports en écoute
sudo netstat -tlnp | grep :8080
# ou avec ss (plus moderne)
sudo ss -tlnp | grep :8080
何かのように見えるはずです`0.0.0.0:8080`そして いいえ`127.0.0.1:8080`。
ステップ 5 : Ubuntuファイアウォールの設定
UbuntuはデフォルトでUFW(Uncomplicated Firewall)を使用します。必要に応じて、その状態を確認し、ポートを許可してください:
# Vérifier le statut du pare-feu
sudo ufw status
# Si le pare-feu est actif, autoriser le port 8080
sudo ufw allow 8080/tcp
# Ou plus spécifiquement pour un service web
sudo ufw allow 'Apache' # si vous utilisez Apache
sudo ufw allow 'Nginx Full' # si vous utilisez Nginx
ステップ 6 : テストと検証
ローカルネットワークからのテスト
最初に、ローカルネットワークの別のマシンからアクセスをテストしてください:
# Remplacez par l'IP locale de votre machine Ubuntu
curl http://192.168.1.100:8080
外部からのテスト
今、インターネットから公開 IP アドレスを使用してテストしてください:
# Remplacez par votre IP publique
curl http://VOTRE_IP_PUBLIQUE:8080
また、オンラインツールを使用することもできます:
ベストプラクティスとセキュリティ
基本的なセキュリティ
# Configurer fail2ban pour protéger contre les attaques par force brute
sudo apt update && sudo apt install fail2ban
# Limiter l'accès avec UFW (exemple : autoriser seulement certaines IP)
sudo ufw allow from 203.0.113.0/24 to any port 8080
接続の監視
# Surveiller les connexions en temps réel
sudo netstat -an | grep :8080
# Logs des connexions (selon votre application)
sudo tail -f /var/log/nginx/access.log # pour Nginx
sudo journalctl -f -u your-service # pour un service systemd
リバースプロキシの使用
セキュリティと柔軟性を向上させるため、Nginxなどのリバースプロキシの使用を検討してください:
server {
listen 80;
server_name votre-domaine.com;
location / {
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
ポートフォワーディングの代替案
クラウドソリューション
-
ngrok一時的なセキュアトンネル
-
Cloudflareトンネル: 無料で安全なソリューション
-
serveo.net: シンプルなSSHトンネル
# Exemple avec ngrok
ngrok http 8080
# Exemple avec serveo
ssh -R 80:localhost:8080 serveo.net
VPSとリバースプロキシ
プロフェッショナルな使用の場合、VPN経由でローカルインフラストラクチャへ向けるリバースプロキシを備えたVPSの使用を検討してください。
トラブルシューティング
よくある問題
| 問題 | 解決策 |
|---|---|
外部からアクセスできないサービス |
ポートフォワーディングの設定を確認し、サービスが 0.0.0.0 でリッスンしていることを確認してください。 |
接続が拒否されました |
サービスが起動していないか、127.0.0.1のみでリッスンしています |
接続タイムアウト |
ファイアウォール(ボックスまたはUbuntu)の問題またはポート転送の設定ミス |
パブリックIPアドレスは定期的に変更されます |
動的なDNS(DynDNS、No-IPなど)を設定してください |
ネットワークデバッグ
# Tester la connectivité locale
telnet localhost 8080
# Tester depuis une autre machine du réseau
telnet 192.168.1.100 8080
# Vérifier les routes réseau
ip route show
# Analyser le trafic réseau
sudo tcpdump -i any port 8080
結論
ローカルサービスをインターネットに公開するには、ポートフォワーディング、セキュリティ、監視の注意深い設定が必要です。このアプローチは開発や個人プロジェクトに最適ですが、本番環境ではより堅牢な代替手段(VPS、CDN、クラウドサービス)を検討してください。
重要なことは常に安全を心に留めておくことです:強力なパスワードを使用し、定期的にシステムを更新し、公開されているサービスへのアクセスを監視してください。
お気軽に、コメントでご経験やご質問を共有してください!
関連記事
31 May 2026
14 May 2026