Finden Sie heraus, was die HTTP-Anforderung auf macOS Mojave blockiert?

Ich habe einen einfachen HTTP-Server, der mit einem ausgeführt wird index.html, den ich versuche, über LAN einem anderen Gerät zu übermitteln. Ich kann mit localhost auf die Website auf dem Hostcomputer zugreifen und sie wird als erfolgreiches HTTP 200 aufgezeichnet. Wenn ich versuche, mit dem anderen Clientgerät darauf zuzugreifen, zeigt der HTTP-Server jedoch keine Anzeichen einer Anfrage und das Gerät hat eine Zeitüberschreitung.

Ich glaube, dass eine Firewall in meinem Mac die Verbindung blockiert, aber ich höre, dass es mehrere Firewalls in einem Mac gibt und sie diese möglicherweise mit jedem Betriebssystem-Update ändern.

z.B

Also verwende ich jetzt macOS Mojave und habe sehr wenig Erfahrung mit Netzwerktools, um zu überprüfen, was in meinem Netzwerk vor sich geht (verzeihen Sie also bitte meine Unwissenheit).

  • Welche Firewalls verwendet macOS Mojave?

  • Wo finde ich die Protokolle (damit ich sehen kann, ob die HTTP-Anfrage meines anderen Geräts abgelehnt wurde)?

  • Gibt es noch etwas, das ich vielleicht nicht weiß und das meine HTTP-Anfrage stoppen kann? Wenn ja, welche Tools kann ich zur Überprüfung verwenden?

--------- Zusätzliche Details ---------

  • Ich habe einen eckigen Webpack-Entwicklungsserver, der an seinem üblichen Port 4200 dient, und verwende dann Ghostlab , um ihn an Port 8005 für meine externen Geräte zu verwenden. (Dies funktionierte jedoch nicht mehr, also habe ich das Folgende getan, um zu sehen, ob ich auf andere Weise auf den Dist-Ordner der Website zugreifen kann.)
  • Ich hatte das Knotenpaket http-server verwendet und eine Testwebsite nur mit index.html bedient. Es dient sowohl auf http://127.0.0.1:8080 als auch auf der LAN-IP-Adresse http://192.168.0.28:8080 .
  • Ich kann 192.168.0.28:8080 lokal auf dem Chrome-Browser des Host-Computers erreichen, aber auf einem iOS-Client-Gerät, das den Browser von Safari verwendet, erhält es nie eine Antwort. Also denke ich, dass eine Firewall es irgendwo auf der ganzen Linie blockiert. Obwohl ich in der Lage bin, dies über appfirewall.log (das anscheinend verschwunden ist) oder ähnliche Orte zu bestätigen, von denen ich möglicherweise nicht weiß, dass ich sie mir ansehen sollte, versuche ich herauszufinden.

---- Weitere Details -----

Danke Franz für deine Antwort.

Unten gezeigt ist meine Routing-Tabelle

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

--PF--

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

Schnittstellenhinweise:

Ich konnte den vollständigen Befehl für nicht ausführen

for DUDE in $( ifconfig -lu ); do ifconfig ${DUDE} | grep -q “192.168.0.19” && echo ${DUDE}; 

Befehle, die mit dem HTTP-Webserver des Knotens an Port 8080 ausgeführt wurden

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

Ich studiere immer noch, was einige dieser Ausgaben bedeuten, und werde daran arbeiten, ein Remote-Gerät dazu zu bringen, sich mit meinem Mac zu verbinden. Werde bald weitere Updates liefern.

------- Nächstes Update ---------

Also habe ich versucht, eine Verbindung mit dem beliebigen Port sowohl auf dem lokalen als auch auf dem Remote-Computer herzustellen.

Beginnen Sie mit dem Abhören von Port 54321

nc -v -b en0 -l 54321

Daran anschließen..

nc -v -z 192.168.0.19 54321

Lokale Antwort =>

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!

Fernantwort =>

nc: connectx to 192.168.0.19 port 54321 (tcp) failed: Operation timed out

Webserver-Verbindungsversuch...

echo -n "GET / HTTP/1.0\r\n\r\n" | nc 192.168.0.19 8080

Lokale Antwort =>

HTTP/1.1 400 Bad Request

Webserver-Antwort von lokaler Anfrage =>

  • keine Änderung in den Protokollen

Fernantwort =>

HTTP/1.1 400 Bad Request

Webserver-Antwort von Remote-Anfrage =>

  • keine Änderung in den Protokollen
Wie greifen Sie von dem anderen Computer auf die Webseite zu? Verwenden Sie die IP-Adresse des Servercomputers? Verwenden Sie den Bonjour-Hostnamen des Servers? Welcher HTTP-Server wird verwendet? Der eingebaute Apache? Etwas anderes?
@Gummibando - Danke für die Antwort. Ich habe die Frage mit zusätzlichen Details aktualisiert.
Ist der Webserver richtig konfiguriert? Wenn Sie versuchen, solche Probleme zu beheben, ist es oft am besten, alles Komplexe zu finden und zu deaktivieren, das Sie versuchen zu tun - OSX-Firewall deaktivieren, Proxys deaktivieren usw. usw. Sobald dies funktioniert, können Sie damit beginnen, es wieder komplex zu machen .
Sie können curl versuchen, um einen Statuscode zu erhalten. curl -I [webserver IP Here] -o >(cat >&1) -w "%{http_code}" 1>&2 superuser.com/questions/272265/…

Antworten (2)

Mein Freund, kommen wir zur Sache:

  1. Öffnen Sie auf der Box, auf der der Webserver ausgeführt wird, die Terminal-App und werden Sie zum Superuser, indem Sie das sudo -sKennwort Ihres Benutzers eingeben und eingeben.

  2. Zeigen Sie mir Ihre Firewall-Konfiguration und die Routing-Tabelle. Poste die Ausgabe von pfctl -vvv -s all, sowienetstat -nr

  3. Starten Sie den Webserver und stellen Sie sicher, dass er ordnungsgemäß für die Bereitstellung konfiguriert ist. Eine Fehlkonfiguration würde den Rahmen dieser Antwort sprengen. Ich gehe davon aus, dass der Webserver auf einem Host mit der NAT/Intranet-IP-Adresse 192.168.0.28 läuft.

  4. Ermitteln Sie die Netzwerkschnittstelle im Intranet und starten Sie einen Listener auf einem beliebigen Port 54321:

    for DUDE in $( ifconfig -lu ) ; do ifconfig ${DUDE}  | grep -q “192.168.0.28” && echo ${DUDE} ; done
    

    Dadurch erhalten Sie die Netzwerkschnittstelle. Stellen Sie dann sicher, dass etwas an Port 8080 gebunden ist

    netstat -an | grep 8080
    

    Wenn hier nichts zurückgegeben wird, ist Ihr Webserver nicht an eine Schnittstelle @ Port 8080 gebunden, und es liegt wahrscheinlich eine Webserver-Fehlkonfiguration oder eine Prozess-Race-Bedingung vor, die an diese Schnittstelle an dieser Portnummer bindet. Letzteres kann passieren, wenn ein anderer Prozess bereits eine bestimmte Schnittstelle / Port gebunden hat. Führen Sie eine aus lsof -i | grep 8080, um zu sehen, was diesen Port belegt, wenn überhaupt.

    Starten Sie einen Listener auf einem beliebigen Port 54321 mitnc -v -b [network interface] -l 54321

  5. Starten Sie auf einem entfernten Mac-, BSD-, Linux- oder sogar UNIX-Host, der mit demselben NAT-/Intranet-Netzwerk verbunden ist, eine Eingabeaufforderung, um auf eine System-Shell zuzugreifen – indem Sie die Terminal-App in den Dienstprogrammen auf einem Mac öffnen … oder weiter Auf einer Windoze-Box führen Sie cmd.exe und Telnet zu 192.168.0.28:8080 aus. Nicht sicher, ob Doppelpunkt die richtige Syntax für die CMD-Shell ist.

  6. Versuchen Sie, sich mit dem Listener zu verbinden, den wir gerade auf Port 54321 eingerichtet habennc -v -z 192.168.0.28 54321

  7. Versuchen Sie, sich mit Ihrem problematischen Webserver über zu verbinden

    echo -n "GET / HTTP/1.0\r\n\r\n" | nc 192.168.0.28 8080
    

Das sollte helfen, das Problem zu isolieren, bis ich die Firewall-Konfiguration und die oben angeforderte Routing-Tabelle sehen kann ...


Es gibt keine Filterregeln in Ihrem PF-Regelsatz, vorausgesetzt, der com.apple-Anker hat keine gesetzt – überprüfen Sie dies mit a

sudo pfctl -vvv -a com.apple -sr

Und bitte vergib mir das Versehen:

sudo /usr/libexec/ApplicationFirewall/socketfilterfw --getglobalstate

Es ist wahrscheinlich eingeschaltet. Lassen Sie uns, ohne an seiner Konfiguration herumzuspielen, es vorübergehend deaktivieren und dann die oben beschriebenen nc-Tests erneut testen ...:

sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setglobalstate off

Führen Sie dann die obigen Tests erneut aus. Ändern Sie „Aus“ oben in „Ein“, um die App-Firewall danach wieder zu aktivieren. Ich bin ziemlich zuversichtlich, dass dies das Problem lösen wird. Wenn dies der Fall ist, müssen wir nur die App-Firewall konfigurieren – ein Spaziergang im Park, und ich werde beraten, nachdem ich die Ergebnisse kenne …

F.

Vielen Dank für diese Antwort, ich habe die Frage mit weiteren Details aktualisiert, die die Ergebnisse der Routing-Tabellen zeigen.
Ok, die Schnittstelle ist en0, Sie hatten die falsche IP-Adresse. Verwenden Sie 192.168.0.19 und führen Sie pfctl -vvv -s all erneut aus. Denken Sie daran, das „alle“ am Ende einzufügen. Routing sieht auf den ersten Blick ok aus. Mach bitte die NC-Befehle.
Ok hatte die Frage mit pfctl info aktualisiert. Ja, nachdem ich mich wieder mit dem Netzwerk verbunden hatte, hatte NAT die IP meines Geräts auf 192.168.0.19 geändert, aber beim ersten Mal war es 192.168.0.28. :)
Ich habe auch die Ergebnisse des nc-Befehls hinzugefügt
Bitte sehen Sie sich den unteren Teil meiner Antwort oben an - und teilen Sie mir die Ergebnisse mit. Ich bleibe zuversichtlich, dass wir einer Lösung des Problems nahe sind...

Mein erster Gedanke ist, dass Sie zunächst keinen klaren Netzwerkpfad von Ihrem iOS-Gerät zum Mac haben. Laden Sie ein Dienstprogramm wie https://apps.apple.com/us/app/ping-network-utility/id576773404 herunter und pingen Sie Ihren Mac an. Berichte mal ob der Ping funktioniert.

Wenn Sie den Mac nicht einmal anpingen können, ist es höchst unwahrscheinlich, dass Sie eine Verbindung zu ihm herstellen können. Bevor Sie in Firewalls eintauchen, überprüfen Sie, ob Ihr Router so eingestellt ist, dass Geräte miteinander kommunizieren können. Einige erlauben standardmäßig keine Verbindungen zwischen Geräten, sondern nur zu Geräten im Internet.

Danke dafür. Ich hatte die App heruntergeladen und sie sagt immer wieder, dass die Anfrage abgelaufen ist.