
Я только что унаследовал сервер Mac OS X, который использует pf. Проблема, которую я пытаюсь решить, заключается в том, почему я не могу пинговать OUT сервера. Я могу пинговать машину, не беспокойтесь, но просто получаю таймауты при пинговании out.
например
$ ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8): 56 data bytes
Request timeout for icmp_seq 0
Request timeout for icmp_seq 1
Request timeout for icmp_seq 2
^C
--- 8.8.8.8 ping statistics ---
4 packets transmitted, 0 packets received, 100.0% packet loss
Существует довольно простая конфигурация pf, в которой набор известных «хороших» IP-адресов заносится в таблицу (на самом деле, в несколько таблиц), и им разрешается доступ с помощью:
pass in from { <my-good-ips1>, <my-good-ips2>, <my-good-ips3> } to any
Они также разрешены в:
pass in quick inet proto udp from any port 67 to any port 68
Все остальное заблокировано.
И (что самое главное) весь трафик разрешён:
pass out proto tcp from any to any keep state
pass out proto udp from any to any keep state
Как вы думаете, я вообще на верном пути, рассматривая pf. Или мне следует направить свои исследования в другую сторону?
решение1
Ты пропускаешь pass proto icmp
.
Обычно разумно иметь в качестве правила первого прохода следующее:
pass quick proto icmp
В противном случае вы неявно блокируете этот трафик. ICMP — это свой собственный протокол, помните, и он не охватывается TCP или UDP. СмотритеСтраница OpenBSD на PF.