Sasaran : Menengah
  • Prasyarat yang diasumsikan : pengetahuan dasar Ubuntu, terminal, konsep jaringan dasar

  • Konsep Teknis : NAT, forwarding port, firewall, proxy terbalik

  • Perintah sistem : penggunaan terminal, konfigurasi jaringan

  • Bagian lanjutan : pemantauan, keamanan, alternatif cloud

Masalah: NAT dan alamat pribadi

Masalah : Anda mengembangkan aplikasi web di mesin Ubuntu Anda dan ingin membuatnya dapat diakses dari luar jaringan rumah Anda? Anda berada di tempat yang tepat! Dalam artikel ini, kita akan melihat cara mengekspos layanan lokal (misalnya di port 8080) ke Internet dengan mengonfigurasi port forwarding pada router internet Anda.

Secara default, box internet Anda menggunakan NAT (Network Address Translation) untuk berbagi satu alamat IP publik antara semua perangkat di jaringan rumah Anda. Mesin lokal Anda menggunakan alamat IP pribadi (192.168.x.x, 10.x.x.x, dst.) yang tidak dapat dirutekan di Internet.

Saat Anda menjalankan layanan pada mesin Ubuntu Anda (misalnya server web pada port 8080), layanan tersebut hanya dapat diakses dari jaringan lokal Anda. Untuk membuatnya dapat diakses dari Internet, kita harus mengkonfigurasi alihkan port.

Langkah 1: Identifikasi alamat IP publik Anda

Pertama-tama, mari kita dapatkan alamat IP publik koneksi internet Anda:

# 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

Alamat IP ini akan digunakan oleh pengguna internet untuk mengakses layanan Anda.

Langkah 2 : Mengetahui alamat IP lokal dari mesin Ubuntu Anda

Mesin Ubuntu Anda memiliki alamat IP pribadi di jaringan lokal Anda. Untuk mengetahuinya :

# 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}'

Catat alamat ini (misalnya`192.168.1.100`), kita akan membutuhkannya untuk konfigurasi.

Langkah 3 : Mengatur forwarding port pada router Anda

Konfigurasi bervariasi tergantung pada model kotak Anda, tetapi prinsipnya tetap sama:

Akses ke antarmuka administrasi

Buka browser Anda dan buka antarmuka web dari kotak Anda :

  • Freebox:`192.168.1.1` ou mafreebox.freebox.fr

  • Livebox Orange:`192.168.1.1`

  • SFR Box : 192.168.1.1

  • Bbox Bouygues:`192.168.1.254`

Konfigurasi Pengalihan

Cari bagian khusus untuk port forwarding (nama-nama bervariasi):

  • Pengalihan port

  • NAT/PAT

  • Penerusan Port

  • Server game

Buat aturan baru dengan parameter ini:

lapangan nilai

Nama/Deskripsi

Layanan Web Ubuntu" (atau nama eksplisit lain)

Port eksternal (atau port publik)

8080

Alamat IP internal

Alamat IP mesin Ubuntu Anda (contoh: 192.168.1.100)

Port internal (atau port pribadi)

8080

protokol

TCP

keadaan

diaktifkan

Langkah 4: Konfigurasi layanan di Ubuntu

Pastikan layanan Anda mendengarkan di semua antarmuka, bukan hanya di 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

Untuk memastikan bahwa layanan Anda mendengarkan dengan benar:

# Vérifier les ports en écoute
sudo netstat -tlnp | grep :8080
# ou avec ss (plus moderne)
sudo ss -tlnp | grep :8080

Anda seharusnya melihat sesuatu seperti`0.0.0.0:8080`dan tidak`127.0.0.1:8080`.

Langkah 5 : Konfigurasi firewall Ubuntu

Ubuntu menggunakan UFW (Uncomplicated Firewall) secara default. Periksa statusnya dan izinkan port jika diperlukan :

# 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

Tahap 6 : Pengujian dan validasi

Uji dari jaringan lokal

Pertama, uji akses dari sebuah komputer lain di jaringan lokal Anda:

# Remplacez par l'IP locale de votre machine Ubuntu
curl http://192.168.1.100:8080

Test dari luar

Sekarang, uji dari Internet menggunakan IP publik Anda :

# Remplacez par votre IP publique
curl http://VOTRE_IP_PUBLIQUE:8080

Anda juga dapat menggunakan alat online seperti :

Praktik terbaik dan keamanan

keamanan dasar

# 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

Pemantauan koneksi

# 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

Penggunaan reverse proxy

Untuk keamanan dan fleksibilitas yang lebih baik, pertimbangkan penggunaan reverse proxy seperti 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;
    }
}

Alternatif untuk port forwarding

Solusi cloud

  • ngrokterowongan aman sementara

  • Cloudflare Tunnelsolusi gratis dan aman

  • serveo.net: tunnel SSH sederhana

# Exemple avec ngrok
ngrok http 8080

# Exemple avec serveo
ssh -R 80:localhost:8080 serveo.net

VPS dan reverse proxy

Untuk penggunaan profesional, pertimbangkan menggunakan VPS dengan reverse proxy yang mengarah ke infrastruktur lokal Anda melalui VPN.

Pemecahan Masalah

Masalah umum

Masalah Solusi

Layanan tidak dapat diakses dari luar

Periksa konfigurasi port forwarding dan bahwa layanan mendengarkan pada 0.0.0.0

Koneksi ditolak

Layanan tidak dimulai atau hanya mendengarkan pada 127.0.0.1

Timeout koneksi

Masalah firewall (box atau Ubuntu) atau port forwarding yang salah dikonfigurasi

IP publik berubah secara teratur

Konfigurasi DNS dinamis (DynDNS, No-IP, etc.)

Debug jaringan

# 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

Kesimpulan

Menampilkan layanan lokal ke Internet memerlukan konfigurasi yang berhati-hati untuk port forwarding, keamanan, dan monitoring. Meskipun pendekatan ini sempurna untuk pengembangan atau proyek pribadi, pertimbangkan alternatif yang lebih kuat (VPS, CDN, layanan cloud) untuk penggunaan produksi.

Yang penting adalah selalu mengingat keamanan: gunakan kata sandi yang kuat, perbarui sistem Anda secara teratur, dan pantau akses ke layanan Anda yang terpapar.

Jangan ragu untuk berbagi pengalaman dan pertanyaan Anda di komentar!

Artikel terkait