Ich habe festgestellt, dass einige der PF-Firewall-Regeln nach dem Anschluss von Thunderbolt-Ethernet nicht ordnungsgemäß funktionieren, funktionieren jedoch ordnungsgemäß, wenn WLAN der einzige Netzwerkadapter ist. Beispielsweise gibt die Aktion "return-rst" keine TCP-RST-Pakete zurück.
Update
Ich habe herausgefunden, dass dieser Fehler eine kabelgebundene Ethernet-Verbindung betrifft . Sogar eingebauter iMac-Ethernet-Adapter gegenüber integriertem WLAN-Adapter. Getestet auf alten und neueren iMacs.
Schritte zum Reproduzieren: Im ersten Schritt versuchen wir das richtige Verhalten. Dafür benötigen wir ein Macbook / iMac mit WLAN-Verbindung und kein Thunderbolt-Ethernet.
Spülen Sie alle PF-Regeln
sudo pfctl -F all
Erstellen Sie eine einfache Regel, um die TCP-Verbindung zu Port 81 zu blockieren. Das TCP-RST-Paket sollte zurückgegeben werden, um die Verbindung sofort abzubrechen.
echo "block return-rst out proto tcp from any to any port 81" | sudo pfctl -e -f -
Prüfen Sie, ob die neue Regel korrekt hinzugefügt wurde.
Hier können wir den Zähler von Paketen sehen, die der Firewall-Regel entsprechen.
pfctl -vsr Packets: 0 Bytes: 0
Versuchen Sie jetzt, die Firewall-Regel mit curl zu testen, das eine Verbindung zu Port 81 herstellt
curl http://example.com:81 curl: (7) Failed to connect to example.com port 81: Connection refused
Wie erwartet wird diese Verbindung sofort durch die Firewall-Regel abgelehnt. Es ist ein korrektes Verhalten.
Testen Sie jetzt das falsche Verhalten. Dazu müssen wir ein echtes Apple Thunderbolt Ethernet mit einer aktiven Kabelverbindung anschließen. Die WiFi-Verbindung kann deaktiviert sein oder aktiviert bleiben. Dies ist nicht wichtig. In beiden Fällen wird ein Fehler angezeigt.
Lassen Sie die Firewall-Regeln gleich
Curl erneut verwenden
curl http://example.com:81 .....waiting.... curl: (28) Connection timed out
Jetzt hängt die Verbindung und wird nach einiger Zeit durch Timeout geschlossen. Die Firewall-Regel ist jedoch noch aktiv und funktioniert.Wir können die Paketzähler betrachten
pfctl -vsr
und feststellen, dass die Regel übereinstimmt und die Verbindung immer noch blockiert. Aber ohne TCP-RST-Antwort.
Mein Setup:
macOS: 10.14.1 (18B75)
MacBook Pro (Retina, 15 Zoll, Mitte 2015)
Apple Thunderbolt 2 Ethernet-Adapter (57762)