Studi Kasus: Service berjalan di
http://192.168.0.254:1111/di laptop sendiri, namun tidak bisa diakses saat laptop tidak terhubung ke jaringan.
Mengapa Ini Terjadi?
Ketika laptop terhubung ke jaringan (WiFi/LAN), router akan memberikan IP lokal seperti
192.168.0.254. IP ini
bersifat sementara β hanya aktif selama laptop terhubung ke jaringan tersebut. Saat terputus, IP tersebut hilang dari interface jaringan laptop, sehingga service yang berjalan di port
1111 tidak lagi bisa diakses via IP tersebut.
Solusi 1: Gunakan
localhost atau
127.0.0.1 (Termudah)
Cara paling sederhana dan selalu tersedia adalah mengakses service via
loopback address:
http://localhost:1111/
http://127.0.0.1:1111/ 127.0.0.1 adalah alamat loopback yang
selalu aktif di semua sistem operasi, tidak peduli apakah laptop sedang online atau offline.
β
Kelebihan: Tidak perlu konfigurasi apapun
β
Kekurangan: URL berbeda dari sebelumnya
Solusi 2: Tambahkan IP Alias ke Interface Loopback
Jika ingin tetap menggunakan URL
http://192.168.0.254:1111/, tambahkan IP tersebut sebagai alias di interface loopback laptop.
Linux
Sementara (hilang setelah reboot):
sudo ip addr add 192.168.0.254/32 dev lo Permanen (Ubuntu/Debian via Netplan):
β οΈ
Catatan: Cara ini membutuhkan
systemd-networkdaktif dan khusus untuk Ubuntu Server. Untuk Ubuntu Desktop (NetworkManager), gunakan metode
systemd service di bawah.
Edit file
/etc/netplan/01-netcfg.yaml:
network:
version: 2
ethernets:
lo:
addresses:
- 127.0.0.1/8
- 192.168.0.254/32 Perbaiki permission file (wajib, atau netplan akan error):
sudo chmod 600 /etc/netplan/01-netcfg.yaml Aktifkan systemd-networkd lalu terapkan:
sudo systemctl enable --now systemd-networkd
sudo netplan apply Permanen (via
/etc/rc.local):
# Tambahkan baris ini sebelum "exit 0"
ip addr add 192.168.0.254/32 dev lo Permanen via systemd service (Direkomendasikan β ):
Cara ini paling reliable, bekerja di Ubuntu Desktop maupun Server, tidak bergantung pada netplan atau NetworkManager.
Buat file service:
sudo nano /etc/systemd/system/loopback-alias.service Isi file:
[Unit]
Description=Loopback IP Alias
After=network.target
[Service]
Type=oneshot
ExecStartPre=-/usr/bin/ip addr del 192.168.0.254/32 dev lo
ExecStart=/usr/bin/ip addr add 192.168.0.254/32 dev lo
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target π‘ Tanda
-di depan
ExecStartPreberarti
abaikan error jika IP belum terpasang.
π‘ Path
/usr/bin/ipdigunakan karena di Ubuntu modern,
ipberada di
/usr/bin/, bukan
/sbin/.
Aktifkan service:
sudo systemctl daemon-reload
sudo systemctl enable --now loopback-alias.service macOS
Sementara:
sudo ifconfig lo0 alias 192.168.0.254 Permanen (via LaunchDaemon):
Buat file
/Library/LaunchDaemons/com.local.loopback.plist:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.local.loopback</string>
<key>ProgramArguments</key>
<array>
<string>/sbin/ifconfig</string>
<string>lo0</string>
<string>alias</string>
<string>192.168.0.254</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist> Aktifkan:
sudo launchctl load /Library/LaunchDaemons/com.local.loopback.plist Windows
Sementara (Command Prompt sebagai Administrator):
netsh interface ip add address "Loopback Adapter" 192.168.0.254 255.255.255.255 Jika belum punya Loopback Adapter, install via
Device Manager β Add Legacy Hardware β Microsoft Loopback Adapter.
Permanen:
Tambahkan IP statis
192.168.0.254 di pengaturan adapter
Microsoft Loopback Adapter melalui:
Control Panel β Network and Internet β Network Connections β Loopback Adapter β Properties β IPv4
Solusi 3: Bind Service ke
0.0.0.0
Pastikan service/aplikasi yang berjalan di port
1111 di-bind ke semua interface (
0.0.0.0) bukan hanya ke IP tertentu. Dengan begitu service tetap bisa diakses via
localhost,
127.0.0.1, maupun IP lokal manapun.
Contoh konfigurasi umum:
Node.js:
app.listen(1111, '0.0.0.0', () => {
console.log('Server running on 0.0.0.0:1111');
}); Python (Flask):
app.run(host='0.0.0.0', port=1111) Nginx:
server {
listen 0.0.0.0:1111;
} Perbandingan Solusi
| Solusi | Kemudahan | Permanen | URL Sama | Kompatibilitas |
|---|---|---|---|---|
Gunakanlocalhost:1111 | βββ Sangat mudah | β | β | Semua OS |
| systemd service (rekomendasi) | ββ Sedang | β | β | Ubuntu Desktop & Server |
| Netplan | β Kompleks | β | β | Ubuntu Server saja |
Bind ke0.0.0.0 | ββ Sedang | β | β | Semua OS |
Rekomendasi
- Untuk
penggunaan sehari-hari: cukup ganti ke
http://localhost:1111/ - Untuk
URL tetap sama (
192.168.0.254:1111): gunakan IP alias di loopback - Untuk
konfigurasi aplikasi yang benar: pastikan service bind ke
0.0.0.0
Verifikasi
Setelah konfigurasi, pastikan IP alias aktif:
# Linux
ip addr show lo
# macOS
ifconfig lo0
# Windows
ipconfig /all Test koneksi:
curl http://192.168.0.254:1111/
# atau
curl http://localhost:1111/ Troubleshooting
β
RTNETLINK answers: File exists
IP sudah terpasang sebelumnya. Solusi: tambahkan
ExecStartPre dengan tanda
- untuk hapus IP lama sebelum menambah ulang (sudah diterapkan di konfigurasi service di atas).
β
Permissions for /etc/netplan/... are too open
Perbaiki permission file netplan:
sudo chmod 600 /etc/netplan/01-netcfg.yaml β
systemd-networkd is not running
Netplan membutuhkan
systemd-networkd. Aktifkan dengan:
sudo systemctl enable --now systemd-networkd Atau gunakan metode
systemd service yang tidak membutuhkan networkd.
β Path
/sbin/ip not found
Di Ubuntu modern, path binary
ip ada di
/usr/bin/ip. Cek dengan:
which ip Ditulis berdasarkan pengalaman nyata konfigurasi di Ubuntu Desktop.