無法從家庭 LAN 上的其他設備/筆記型電腦訪問部署在我的 Ubuntu 16.04 機器上的 Web 應用程序
我製作了 2 個 webapps(我正在學習 web 開發基礎知識)。一個使用 ruby-on-rails,另一個使用 apache2。
我的筆記型電腦的本地 IP 是
192.168.122.1
.以下 2 個 url 在我的機器上執行:1) ROR webapp ->
http://192.168.122.1:3000
2) Apache2 App ->http://192.168.122.1
但是,當我在 LAN 上的另一台設備/機器上鍵入相同的 URL 時,我得到 ERR_CONNECTION_REFUSED。
當我在終端中輸入以下內容時:
sudo nc -v 192.168.122.1 3000
,我收到了消息Connection to 192.168.122.1 3000 port [tcp/*] succeeded!
。我認為這不是 rails 或 apache2 的問題,而是 Ubuntu OS 中的錯誤,或者有一些關於打開埠的問題,我不明白。我嘗試使用 ufw 打開必要的埠 80 和 3000,但沒有得到預期的結果。我嘗試通過鍵入完全禁用防火牆(當然不是一個好習慣)
sudo ufw disable
。但是,它沒有任何效果。我仍然面臨同樣的問題。我正在使用 Ubuntu 16.04。大約 4 年前,我在 Ubuntu 12.04 上開發了一個基本的 Web 應用程序,從來沒有遇到過這樣的問題。
iptables:
umangmathur@Acer-Aspire-V3-571:~$ sudo iptables -L [sudo] password for umangmathur: Chain INPUT (policy ACCEPT) target prot opt source destination ACCEPT tcp -- anywhere anywhere tcp dpt:3000 ACCEPT udp -- anywhere anywhere udp dpt:domain ACCEPT tcp -- anywhere anywhere tcp dpt:domain ACCEPT udp -- anywhere anywhere udp dpt:bootps ACCEPT tcp -- anywhere anywhere tcp dpt:bootps ACCEPT tcp -- anywhere anywhere tcp dpt:http Chain FORWARD (policy ACCEPT) target prot opt source destination ACCEPT all -- anywhere 192.168.122.0/24 ctstate RELATED,ESTABLISHED ACCEPT all -- 192.168.122.0/24 anywhere ACCEPT all -- anywhere anywhere REJECT all -- anywhere anywhere reject-with icmp-port-unreachable REJECT all -- anywhere anywhere reject-with icmp-port-unreachable Chain OUTPUT (policy ACCEPT) target prot opt source destination ACCEPT udp -- anywhere anywhere udp dpt:bootpc
如果配置:
umangmathur@Acer-Aspire-V3-571:~$ ifconfig enp2s0f0 Link encap:Ethernet HWaddr b8:88:e3:0b:04:c4 UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) Interrupt:16 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:15396 errors:0 dropped:0 overruns:0 frame:0 TX packets:15396 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:1646030 (1.6 MB) TX bytes:1646030 (1.6 MB) virbr0 Link encap:Ethernet HWaddr 00:00:00:00:00:00 inet addr:192.168.122.1 Bcast:192.168.122.255 Mask:255.255.255.0 UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) wlp3s0 Link encap:Ethernet HWaddr 08:3e:8e:2a:10:81 inet addr:192.168.43.129 Bcast:192.168.43.255 Mask:255.255.255.0 inet6 addr: fe80::99e9:db42:eceb:a526/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:544441 errors:0 dropped:0 overruns:0 frame:0 TX packets:302249 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:710738799 (710.7 MB) TX bytes:46367641 (46.3 MB)
監聽埠列表(使用 netstat):
umangmathur@Acer-Aspire-V3-571:~$ sudo netstat -patune | grep LISTEN [sudo] password for umangmathur: tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 123 23438 1110/mysqld tcp 0 0 0.0.0.0:139 0.0.0.0:* LISTEN 0 31251 2361/smbd tcp 0 0 127.0.1.1:53 0.0.0.0:* LISTEN 0 26992 1508/dnsmasq tcp 0 0 192.168.122.1:53 0.0.0.0:* LISTEN 0 27672 1406/dnsmasq tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 0 233420 1082/sshd tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 0 23217 923/cupsd tcp 0 0 192.168.122.1:3000 0.0.0.0:* LISTEN 1000 71774 4678/192.168.122.1: tcp 0 0 0.0.0.0:445 0.0.0.0:* LISTEN 0 31250 2361/smbd tcp6 0 0 :::139 :::* LISTEN 0 31249 2361/smbd tcp6 0 0 :::80 :::* LISTEN 0 28945 1861/apache2 tcp6 0 0 :::22 :::* LISTEN 0 233422 1082/sshd tcp6 0 0 ::1:631 :::* LISTEN 0 23216 923/cupsd tcp6 0 0 :::445 :::* LISTEN 0 31248 2361/smbd
看起來您的應用程序正在偵聽
virbr0
,這是在某些虛擬化環境中用於 NAT 的虛擬網橋介面。如果您在物理電腦上執行,應用程序應綁定到
192.168.43.129
或0.0.0.0
.如果您在虛擬化環境(VirtualBox、Qemu、VMWare)上執行,則必須創建橋接介面或創建埠重定向規則。
您的筆記型電腦的 IP 實際上是:
wlp3s0 Link encap:Ethernet HWaddr 08:3e:8e:2a:10:81 inet addr:192.168.43.129 Bcast:192.168.43.255 Mask:255.255.255.0 inet6 addr: fe80::99e9:db42:eceb:a526/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:544441 errors:0 dropped:0 overruns:0 frame:0 TX packets:302249 errors:0 dropped:0 overruns:0 carrier:0
查看 RX 和 TX 數據包。