Saya mencoba untuk membuka port 3000 di Ubuntu 12.04, karena saya memiliki server web yang mendengarkannya. Saya sedikit keluar dari zona nyaman saya di sini, dan menghabiskan banyak waktu mencoba menyelesaikan masalah tanpa hasil.
Port tampaknya terbuka di firewall:
$> sudo ufw status
Status: active
To Action From
-- ------ ----
...
3000/tcp ALLOW Anywhere
3000/tcp ALLOW Anywhere (v6)
Server mendengarkan dengan baik pada port itu:
$> netstat -an | grep "LISTEN "
...
tcp 0 0 127.0.0.1:3000 0.0.0.0:* LISTEN
...
Dan saya bahkan dapat wget
memperbaiki halaman indeks:
$> wget localhost:3000
Connecting to localhost (localhost)|127.0.0.1|:3000... connected.
HTTP request sent, awaiting response... 200 OK
Dan file yang diterima berisi apa yang saya harapkan ("hello world" :).
Namun, ketika mencoba dari komputer lain, atau jika wget mydomain.com:3000
saya mendapatkannya "connection refused"
, dan nmap memberi tahu saya bahwa port tidak terbuka:
$> nmap -A -T4 mydomain.com
Host is up (0.00032s latency).
...
Not shown: 999 closed ports
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 5.9p1 Debian 5ubuntu1 (protocol 2.0)
...
Service Info: OS: Linux
Tahu apa yang harus saya coba selanjutnya ???
EDIT
Inilah yang memberi traceroute:
$> traceroute mydomain.com
traceroute to mydomain.com (176.31.x.x), 30 hops max, 60 byte packets
1 mydomain.com (176.31.x.x) 0.034 ms 0.013 ms 0.010 ms
traceroute mydomain.com
komputer jarak jauh. Anda dapat ** mengeluarkan dua oktet terakhir dari IP (server) terakhir untuk privasi.Jawaban:
Jika server Anda hanya mendengarkan antarmuka localhost, Anda tidak akan dapat mengaksesnya dari komputer jarak jauh. Ini tampaknya menjadi masalah utama Anda, karena hanya 127.0.0.1:3000 terdaftar di output netstat Anda.
Anda juga perlu memastikan bahwa "mydomain.com" menyelesaikan ke alamat IP yang benar untuk mesin Anda, sehingga menghubungkannya akan menghasilkan komunikasi dengan antarmuka eksternal mesin itu.
sumber
eth0
, atau sesuatu seperti itu), alamat IP (192.168.1.99, atau sesuatu seperti itu), atau alamat MAC. Ini tergantung pada programnya.Saya punya masalah baru-baru ini dengan server HTTPS nodejs, dan solusi untuk itu adalah tidak menggunakan "localhost", "127.0.0.1" atau bahkan nama domain. Itu menggunakan "0.0.0.0"
Saya percaya ini bertindak sebagai wildcard, sekarang memungkinkan untuk resolusi publik melalui nama domain dan juga berfungsi dengan "localhost"
Sunting: Berikut ini tautan ke halaman serverfault pada topik 0.0.0.0: /server/78048/whats-the-difference-between-ip-address-0-0-0-0--- 127-0-0-1
sumber
}).listen(3000, '127.0.0.1');
ke}).listen(3000, '0.0.0.0');
dalam kode saya.Apakah ada kemungkinan Anda menggunakan AWS atau layanan cloud lainnya? Dalam hal ini port harus dibuka pada level konfigurasi inctance (OS) atau setelahnya. Khususnya di AWS Anda harus mencari "Grup Keamanan" di mana Anda harus membuka akses ke port 3000
sumber