Я сделал 2 веб-приложения (изучаю основы веб-разработки). Один с использованием ruby-on-rails, а другой с использованием apache2.
Локальный IP-адрес моего ноутбука 192.168.122.1
.
На моей машине работают следующие 2 URL: 1) Веб-приложение ROR -> http://192.168.122.1:3000
2) Приложение Apache2 -> http://192.168.122.1
Однако, когда я набираю те же 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, либо есть что-то об открытии портов, чего я не понимаю. Я попытался открыть необходимые порты 80 и 3000 с помощью ufw, но не получил желаемых результатов. Я попытался полностью отключить брандмауэр (конечно, не очень хорошая практика), набрав sudo ufw disable
. Но это не подействовало. Я все еще сталкиваюсь с той же проблемой.
Я использую Ubuntu 16.04. Я разработал базовое веб-приложение почти 4 года назад на Ubuntu 12.04, и никогда не сталкивался с такими проблемами.
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
Ifconfig:
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.