Linux

無法從家庭 LAN 上的其他設備/筆記型電腦訪問部署在我的 Ubuntu 16.04 機器上的 Web 應用程序

  • September 8, 2017

我製作了 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.1290.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 數據包。

引用自:https://serverfault.com/questions/872739