Я обнаружил, что некоторые правила брандмауэра PF работают неправильно после подключения Thunderbolt Ethernet, но работают правильно, когда WiFi является единственным сетевым адаптером. Например, действие return-rst не возвращает пакеты TCP RST.
Обновление
Я понял, что эта ошибка влияет на любое проводное соединение Ethernet . Даже встроенный адаптер Ethernet iMac против встроенного адаптера WiFi. Проверено на старых и новых iMac.
Шаги для воспроизведения: на первом шаге давайте попробуем исправить поведение. Для этого нам понадобится MacBook / iMac с подключением только по WiFi, без подключения Thunderbolt Ethernet.
Сбросить все правила PF
sudo pfctl -F all
Создайте простое правило для блокировки TCP-соединения с портом 81, которое должно возвращать TCP-пакет RST, чтобы немедленно прервать соединение.
echo "block return-rst out proto tcp from any to any port 81" | sudo pfctl -e -f -
Проверьте, правильно ли было добавлено новое правило.
Здесь мы видим счетчик пакетов, которые соответствуют правилу брандмауэра.
pfctl -vsr
Packets: 0 Bytes: 0
Теперь пытаемся проверить правило брандмауэра с помощью curl, который подключается к порту 81
curl http://example.com:81
curl: (7) Failed to connect to example.com port 81: Connection refused
Посмотрите, что соединение немедленно отклонено правилом брандмауэра, как и ожидалось. Это правильное поведение.
Теперь проверьте неправильное поведение. Для этого нам нужно подключить подлинный Apple Thunderbolt Ethernet с активным проводным соединением. Соединение WiFi можно отключить или оставить включенным, это не имеет значения, ошибка появится в обоих случаях.
Оставьте правила брандмауэра такими же
Попытка использовать curl снова.
curl http://example.com:81
.....waiting....
curl: (28) Connection timed out
Теперь соединение зависает и через некоторое время закрывается по таймауту. Но правило брандмауэра все еще активно и работает.
Мы можем посмотреть на счетчики пакетов
pfctl -vsr
и убедиться, что правило совпадает и все еще блокирует соединение. Но без TCP RST отвечу.
Мои настройки:
macOS: 10.14.1 (18B75)
MacBook Pro (Retina, 15-дюймовый, середина 2015 г.)
Ethernet-адаптер Apple Thunderbolt 2 (57762)