У меня есть простой http-сервер, работающий с index.html
, который я пытаюсь обслуживать на другом устройстве по локальной сети. Я могу получить доступ к веб-сайту на хост-компьютере, используя localhost, и он записывается как успешный HTTP 200. Хотя, когда я пытаюсь получить к нему доступ с другого клиентского устройства, http-сервер не показывает никаких признаков запроса, и время ожидания устройства истекло.
Я считаю, что брандмауэр на моем Mac блокирует соединение, но я слышал, что на Mac есть несколько брандмауэров, и они могут изменять его с каждым обновлением ОС.
например
Поток, показывающий, что в ОС установлено несколько брандмауэров
Журналы брандмауэра теперь исчезли (не удается просмотреть appfirewall.log)
Итак, сейчас я использую macOS Mojave, и у меня очень мало опыта использования сетевых инструментов для проверки того, что происходит в моей сети (поэтому, пожалуйста, простите мое невежество).
Какие брандмауэры использует macOS Mojave?
Где я могу найти журналы (чтобы я мог видеть, был ли отклонен http-запрос моего другого устройства)?
Есть ли что-то еще, о чем я могу не знать, что может остановить мой http-запрос? Если да, то какие инструменты я могу использовать для проверки?
--------- Дополнительная информация ---------
---- Дальнейшие детали -----
Спасибо, Франциск, за ответ.
Ниже показана моя таблица маршрутизации
Routing tables
Internet:
Destination Gateway Flags Refs Use Netif Expire
default 192.168.0.1 UGSc 147 0 en0
127 127.0.0.1 UCS 0 0 lo0
127.0.0.1 127.0.0.1 UH 9 277366 lo0
169.254 link#5 UCS 0 0 en0 !
192.168.0 link#5 UCS 3 0 en0 !
192.168.0.1/32 link#5 UCS 2 0 en0 !
192.168.0.1 b0:c2:87:51:37:e7 UHLWIir 58 52 en0 583
192.168.0.2 link#5 UHLWIi 1 152 en0 !
192.168.0.13 0:71:47:32:79:99 UHLWI 0 81 en0 285
192.168.0.19/32 link#5 UCS 1 0 en0 !
192.168.0.19 80:e6:50:a:23:64 UHLWI 0 2 lo0
192.168.0.255 ff:ff:ff:ff:ff:ff UHLWbI 0 1 en0 !
224.0.0/4 link#5 UmCS 3 0 en0 !
224.0.0.251 1:0:5e:0:0:fb UHmLWI 0 0 en0
224.6.7.8 1:0:5e:6:7:8 UHmLWI 0 8 en0
239.255.255.250 1:0:5e:7f:ff:fa UHmLWI 0 149 en0
255.255.255.255/32 link#5 UCS 1 0 en0 !
255.255.255.255 ff:ff:ff:ff:ff:ff UHLWbI 0 1 en0 !
Internet6:
Destination Gateway Flags Netif Expire
default fe80::b2c2:87ff:fe51:37e7%en0 UGc en0
default fe80::%utun0 UGcI utun0
default fe80::%utun1 UGcI utun1
::1 ::1 UHL lo0
2606:6000:609b:1200::/64 link#5 UC en0
2606:6000:609b:1200::4 80:e6:50:a:23:64 UHL lo0
2606:6000:609b:1200:14c1:e8b6:1ff0:8ef1 80:e6:50:a:23:64 UHL lo0
2606:6000:609b:1200:81e5:bdd5:155e:a21d 80:e6:50:a:23:64 UHL lo0
fe80::%lo0/64 fe80::1%lo0 UcI lo0
fe80::1%lo0 link#1 UHLI lo0
fe80::%en0/64 link#5 UCI en0
fe80::14d6:6308:5edd:9f41%en0 80:e6:50:a:23:64 UHLI lo0
fe80::b2c2:87ff:fe51:37e7%en0 b0:c2:87:51:37:e7 UHLWIir en0
fe80::%awdl0/64 link#7 UCI awdl0
fe80::74f1:5eff:fefa:3028%awdl0 76:f1:5e:fa:30:28 UHLI lo0
fe80::%utun0/64 fe80::1d55:b5dc:3cd5:864%utun0 UcI utun0
fe80::1d55:b5dc:3cd5:864%utun0 link#11 UHLI lo0
fe80::%utun1/64 fe80::df6e:b1c3:74ea:f75c%utun1 UcI utun1
fe80::df6e:b1c3:74ea:f75c%utun1 link#12 UHLI lo0
ff01::%lo0/32 ::1 UmCI lo0
ff01::%en0/32 link#5 UmCI en0
ff01::%awdl0/32 link#7 UmCI awdl0
ff01::%utun0/32 fe80::1d55:b5dc:3cd5:864%utun0 UmCI utun0
ff01::%utun1/32 fe80::df6e:b1c3:74ea:f75c%utun1 UmCI utun1
ff02::%lo0/32 ::1 UmCI lo0
ff02::%en0/32 link#5 UmCI en0
ff02::%awdl0/32 link#7 UmCI awdl0
ff02::%utun0/32 fe80::1d55:b5dc:3cd5:864%utun0 UmCI utun0
ff02::%utun1/32 fe80::df6e:b1c3:74ea:f75c%utun1 UmCI utun1
-- ПФ --
pfctl -vvv -s all
=>
No ALTQ support in kernel
ALTQ related functions disabled
TRANSLATION RULES:
@0 nat-anchor "com.apple/*" all
[ Owner : nil Priority : 0 ]
[ Evaluations: 1003456 Packets: 0 Bytes: 0 States: 0 ]
[ Inserted: uid 0 pid 89 ]
@0 rdr-anchor "com.apple/*" all
[ Owner : nil Priority : 0 ]
[ Evaluations: 2053469 Packets: 0 Bytes: 0 States: 0 ]
[ Inserted: uid 0 pid 89 ]
FILTER RULES:
@0 scrub-anchor "com.apple/*" all fragment reassemble
[ Owner : nil Priority : 0 ]
[ Evaluations: 3848799 Packets: 0 Bytes: 0 States: 0 ]
[ Inserted: uid 0 pid 89 ]
@0 anchor "com.apple/*" all
[ Owner : nil Priority : 0 ]
[ Evaluations: 2053469 Packets: 0 Bytes: 0 States: 0 ]
[ Inserted: uid 0 pid 89 ]
DUMMYNET RULES:
@0 dummynet-anchor "com.apple/*" all
[ Owner : nil Priority : 0 ]
[ Evaluations: 0 Packets: 0 Bytes: 0 States: 0 ]
[ Inserted: uid 0 pid 89 ]
INFO:
Status: Enabled for 1 days 15:36:27 Debug: Urgent
Hostid: 0x995c6c3b
Checksum: 0x79872649e3817f920d20509d6509b712
State Table Total Rate
current entries 0
searches 2551721 17.9/s
inserts 0 0.0/s
removals 0 0.0/s
Source Tracking Table
current entries 0
searches 0 0.0/s
inserts 0 0.0/s
removals 0 0.0/s
Counters
match 2053469 14.4/s
bad-offset 0 0.0/s
fragment 0 0.0/s
short 0 0.0/s
normalize 0 0.0/s
memory 0 0.0/s
bad-timestamp 0 0.0/s
congestion 0 0.0/s
ip-option 1451 0.0/s
proto-cksum 0 0.0/s
state-mismatch 0 0.0/s
state-insert 0 0.0/s
state-limit 0 0.0/s
src-limit 0 0.0/s
synproxy 0 0.0/s
dummynet 0 0.0/s
Limit Counters
max states per rule 0 0.0/s
max-src-states 0 0.0/s
max-src-nodes 0 0.0/s
max-src-conn 0 0.0/s
max-src-conn-rate 0 0.0/s
overload table insertion 0 0.0/s
overload flush states 0 0.0/s
TIMEOUTS:
tcp.first 120s
tcp.opening 30s
tcp.established 86400s
tcp.closing 900s
tcp.finwait 45s
tcp.closed 90s
tcp.tsdiff 30s
udp.first 60s
udp.single 30s
udp.multiple 60s
icmp.first 20s
icmp.error 10s
grev1.first 120s
grev1.initiating 30s
grev1.estblished 1800s
esp.first 120s
esp.estblished 900s
other.first 60s
other.single 30s
other.multiple 60s
frag 30s
interval 10s
adaptive.start 6000 states
adaptive.end 12000 states
src.track 0s
LIMITS:
states hard limit 10000
app-states hard limit 10000
src-nodes hard limit 10000
frags hard limit 5000
tables hard limit 1000
table-entries hard limit 200000
OS FINGERPRINTS:
696 fingerprints loaded
Примечания к интерфейсу:
Я не смог выполнить полную команду для
for DUDE in $( ifconfig -lu ); do ifconfig ${DUDE} | grep -q “192.168.0.19” && echo ${DUDE};
Команды, которые выполнялись с веб-сервером node http на порту 8080
ifconfig ${DUDE}
=>
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
options=1203<RXCSUM,TXCSUM,TXSTATUS,SW_TIMESTAMP>
inet 127.0.0.1 netmask 0xff000000
inet6 ::1 prefixlen 128
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1
nd6 options=201<PERFORMNUD,DAD>
gif0: flags=8010<POINTOPOINT,MULTICAST> mtu 1280
stf0: flags=0<> mtu 1280
XHC20: flags=0<> mtu 0
en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
ether 80:e6:50:0a:23:64
inet6 fe80::14d6:6308:5edd:9f41%en0 prefixlen 64 secured scopeid 0x5
inet 192.168.0.19 netmask 0xffffff00 broadcast 192.168.0.255
inet6 2606:6000:609b:1200:14c1:e8b6:1ff0:8ef1 prefixlen 64 autoconf secured
inet6 2606:6000:609b:1200:d9dc:a4c3:7c4b:14e4 prefixlen 64 autoconf temporary
inet6 2606:6000:609b:1200::4 prefixlen 64 dynamic
nd6 options=201<PERFORMNUD,DAD>
media: autoselect
status: active
p2p0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 2304
ether 02:e6:50:0a:23:64
media: autoselect
status: inactive
awdl0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1484
ether 76:f1:5e:fa:30:28
inet6 fe80::74f1:5eff:fefa:3028%awdl0 prefixlen 64 scopeid 0x7
nd6 options=201<PERFORMNUD,DAD>
media: autoselect
status: active
en1: flags=8963<UP,BROADCAST,SMART,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
options=60<TSO4,TSO6>
ether 72:00:05:09:7f:80
media: autoselect <full-duplex>
status: inactive
en2: flags=8963<UP,BROADCAST,SMART,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
options=60<TSO4,TSO6>
ether 72:00:05:09:7f:81
media: autoselect <full-duplex>
status: inactive
bridge0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
options=63<RXCSUM,TXCSUM,TSO4,TSO6>
ether 72:00:05:09:7f:80
Configuration:
id 0:0:0:0:0:0 priority 0 hellotime 0 fwddelay 0
maxage 0 holdcnt 0 proto stp maxaddr 100 timeout 1200
root id 0:0:0:0:0:0 priority 0 ifcost 0 port 0
ipfilter disabled flags 0x2
member: en1 flags=3<LEARNING,DISCOVER>
ifmaxaddr 0 port 8 priority 0 path cost 0
member: en2 flags=3<LEARNING,DISCOVER>
ifmaxaddr 0 port 9 priority 0 path cost 0
nd6 options=201<PERFORMNUD,DAD>
media: <unknown type>
status: inactive
utun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 2000
inet6 fe80::1d55:b5dc:3cd5:864%utun0 prefixlen 64 scopeid 0xb
nd6 options=201<PERFORMNUD,DAD>
utun1: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1380
inet6 fe80::df6e:b1c3:74ea:f75c%utun1 prefixlen 64 scopeid 0xc
nd6 options=201<PERFORMNUD,DAD>
netstat -an | grep 8080
=>
tcp4 0 0 *.8080 *.* LISTEN
Я все еще изучаю, что означают некоторые из этих выходных данных, и буду работать над подключением удаленного устройства к моему Mac. Скоро будут предоставлены дальнейшие обновления.
------- Следующее обновление ---------
Поэтому я попытался подключиться к произвольному порту как на локальной, так и на удаленной машине.
Начать прослушивание на порту 54321
nc -v -b en0 -l 54321
Подключение к нему..
nc -v -z 192.168.0.19 54321
Местный ответ =>
found 0 associations
found 1 connections:
1: flags=82<CONNECTED,PREFERRED>
outif lo0
src 192.168.0.19 port 49845
dst 192.168.0.19 port 54321
rank info not available
TCP aux info available
Connection to 192.168.0.19 port 54321 [tcp/*] succeeded!
Удаленный ответ =>
nc: connectx to 192.168.0.19 port 54321 (tcp) failed: Operation timed out
Попытка подключения к веб-серверу...
echo -n "GET / HTTP/1.0\r\n\r\n" | nc 192.168.0.19 8080
Местный ответ =>
HTTP/1.1 400 Неверный запрос
Ответ веб-сервера от локального запроса =>
Удаленный ответ =>
HTTP/1.1 400 Bad Request
Ответ веб-сервера от удаленного запроса =>
Друг мой, приступим к делу:
В окне, на котором запущен веб-сервер, откройте приложение «Терминал» и станьте суперпользователем, набрав sudo -s
и введя пароль пользователя.
Покажите мне конфигурацию вашего брандмауэра и таблицу маршрутизации. Опубликовать вывод pfctl -vvv -s all
, а такжеnetstat -nr
Запустите веб-сервер и убедитесь, что он правильно настроен для обслуживания. Неправильная конфигурация выходит за рамки этого ответа. Я предполагаю, что веб-сервер работает на хосте с IP-адресом NAT/внутренней сети 192.168.0.28.
Определите сетевой интерфейс в интрасети и запустите прослушиватель на произвольном порту 54321:
for DUDE in $( ifconfig -lu ) ; do ifconfig ${DUDE} | grep -q “192.168.0.28” && echo ${DUDE} ; done
Это даст вам сетевой интерфейс. Затем убедитесь, что что-то привязано к порту 8080.
netstat -an | grep 8080
Если здесь ничего не возвращается, ваш веб-сервер не привязан к интерфейсу с портом 8080, и, вероятно, существует неправильная конфигурация веб-сервера или условие гонки процесса, привязанное к этому интерфейсу с этим номером порта. Последнее может произойти, когда другой процесс уже привязан к определенному интерфейсу/порту. Сделайте, lsof -i | grep 8080
чтобы увидеть, что занимает этот порт, если что-то.
Запустите прослушиватель на произвольном порту 54321 с помощьюnc -v -b [network interface] -l 54321
На удаленном хосте Mac, BSD, Linux или даже UNIX, который подключен к той же сети NAT/интрасеть, запустите командную строку для доступа к системной оболочке — открыв приложение «Терминал» в «Утилитах» на Mac... Или на в окне Windoze запустите cmd.exe и подключитесь по телнету к 192.168.0.28:8080. Не уверен, что двоеточие является правильным синтаксисом для оболочки CMD.
Попытка подключиться к слушателю, который мы только что установили на порт 54321 с помощьюnc -v -z 192.168.0.28 54321
Попытайтесь подключиться к проблемному веб-серверу через
echo -n "GET / HTTP/1.0\r\n\r\n" | nc 192.168.0.28 8080
Это должно помочь изолировать проблему, пока я не увижу конфигурацию брандмауэра и таблицу маршрутизации, которую я запросил выше...
В вашем наборе правил PF нет правил фильтрации, при условии, что якорь com.apple ничего не задал — дважды проверьте с помощью
sudo pfctl -vvv -a com.apple -sr
И прошу простить меня за такую оплошность:
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --getglobalstate
Скорее всего он включен. Не заморачиваясь с его конфигурацией, давайте временно отключим его, а затем повторно протестируем тесты nc, которые я описал выше...:
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setglobalstate off
Затем повторите тесты выше. Измените «выкл.» выше на «вкл.», чтобы после этого снова включить брандмауэр приложения. Я вполне уверен, что это решит проблему. Если это так, то нам просто нужно настроить брандмауэр приложения - прогулка в парке, и я посоветую, узнав результаты...
Ф.
Моя первая мысль заключается в том, что у вас нет четкого сетевого пути от вашего устройства iOS до Mac с самого начала. Загрузите утилиту, например https://apps.apple.com/us/app/ping-network-utility/id576773404 , и пропингуйте свой Mac. Сообщите, работает ли пинг.
Если вы даже не можете пропинговать Mac, маловероятно, что вы сможете к нему подключиться. Прежде чем погрузиться в брандмауэры, убедитесь, что ваш маршрутизатор настроен так, чтобы устройства могли взаимодействовать друг с другом. Некоторые не разрешают подключения между устройствами по умолчанию, только к устройствам в Интернете.
Гуммибандо
Джонатан002
ФиддлДеДи
пользователь1787331
curl -I [webserver IP Here] -o >(cat >&1) -w "%{http_code}" 1>&2
superuser.com/questions/272265/…