Tôi thấy rằng một số quy tắc tường lửa PF hoạt động không chính xác sau khi Thunderbolt Ethernet được kết nối, nhưng hoạt động chính xác khi WiFi là bộ điều hợp mạng duy nhất. Ví dụ: hành động "return-rst" không trả về các gói TCP RST.
Cập nhật
Tôi đã tìm ra rằng lỗi này ảnh hưởng đến bất kỳ kết nối ethernet có dây . Ngay cả bộ điều hợp ethernet iMac tích hợp so với bộ điều hợp WiFi tích hợp. Đã thử nghiệm trên iMac cũ và mới hơn.
Các bước để sinh sản:
Trong bước đầu tiên, hãy thử hành vi đúng. Để làm như vậy, chúng tôi cần macbook / iMac chỉ có kết nối WiFi, không có kết nối Ethernet Thunderbolt.
Xóa tất cả các quy tắc PF
sudo pfctl -F all
Tạo quy tắc đơn giản để chặn kết nối TCP tới cổng 81, sẽ trả lại gói TCP RST để hủy kết nối ngay lập tức.
echo "block return-rst out proto tcp from any to any port 81" | sudo pfctl -e -f -
Kiểm tra nếu quy tắc mới đã được thêm chính xác.
Ở đây chúng ta có thể thấy bộ đếm của các gói phù hợp với quy tắc tường lửa.
pfctl -vsr
Packets: 0 Bytes: 0
Bây giờ đang thử kiểm tra quy tắc tường lửa bằng cách sử dụng curl kết nối với cổng 81
curl http://example.com:81
curl: (7) Failed to connect to example.com port 81: Connection refused
Xem kết nối đó bị từ chối ngay lập tức bởi quy tắc tường lửa như mong đợi. Đó là một hành vi đúng.
Bây giờ kiểm tra hành vi không chính xác. Để làm như vậy, chúng ta cần kết nối Ethernet chính hãng Apple Thunderbolt với kết nối có dây hoạt động. Kết nối WiFi có thể bị vô hiệu hóa hoặc duy trì kích hoạt, điều này không quan trọng, lỗi sẽ xuất hiện trong cả hai trường hợp.
Giữ nguyên quy tắc tường lửa
Cố gắng sử dụng curl một lần nữa
curl http://example.com:81
.....waiting....
curl: (28) Connection timed out
Bây giờ kết nối bị treo và đóng lại sau một thời gian chờ. Nhưng quy tắc tường lửa vẫn hoạt động và làm việc.
Chúng ta có thể nhìn vào quầy tính tiền pfctl -vsr
và xem quy tắc đó phù hợp và vẫn chặn kết nối. Nhưng không có trả lời TCP RST.
Thiết lập của tôi:
macOS: 10.14.1 (18B75)
MacBook Pro (Retina, 15 inch, giữa năm 2015)
Bộ điều hợp Ethernet Apple Thunderbolt 2 (57762)