$sudo /usr/libexec/ApplicationFirewall/socketfilterfw --listapps
ALF: total number of apps = 2
1 : /Applications/some.app
( Allow incoming connections )
2 : /Applications/another.app
( Block incoming connections )
Приведенная выше команда показывает, что another.app является частью моего списка доверенных приложений брандмауэра, но он настроен на блокировку входящих подключений. Как я могу настроить его таким образом, чтобы разрешить входящие соединения из командной строки и немедленно применить изменения?
У меня была такая же проблема, и я «решил» ее, выгрузив / загрузив MacPorts httpd с запущенным брандмауэром приложений Mac OS X 10.8 (socketfilterfw). Понятия не имею, почему это сработало. Одна из подсказок - как только я запустил загрузку, появилось приглашение с вопросом, разрешить ли соединения. И это несмотря на то, что приложение MacPorts httpd уже было введено в графический интерфейс параметров Filewall.
sudo port unload apache2
sudo port load apache2
Перед исправлением:
Aug 27 22:42:59 mac1 socketfilterfw : Deny _ connecting from mac2 to port _ proto=6
Во время исправления:
Aug 27 22:44:05 mac1 socketfilterfw : httpd is listening from :::_ proto=6
После исправления:
Aug 27 22:45:32 mac1 socketfilterfw : Allow _ connecting from mac2 to port _ proto=6
Я искал «httpd слушает», и за последние несколько дней это единственное появление в журнале appfilewall.
Надеюсь, это кому-то поможет. Я не знаю, почему это сработало для меня, но я использовал его дважды ... сегодня и около шести недель назад. Система перезагружается каждую неделю.
Вы можете получить больше информации о socketfilterfw, запустив его с -h:
# /usr/libexec/ApplicationFirewall/socketfilterfw -h
usage: /usr/libexec/ApplicationFirewall/socketfilterfw [-c] [-w] [-d] [-l] [-T] [-U] [-B] [-L] [-a listen or accept] [-s file to sign] [-v file to verify] [-p pid to write] [--getglobalstate] [--setglobalstate on | off] [--getblockall] [--setblockall on | off] [--listapps] [--getappblocked <path>] [--blockapp <path>] [--unblockapp <path>] [--add <path>] [--remove <path>] [--getallowsigned] [--setallowsigned] [--getstealthmode] [--setstealthmode on | off] [--getloggingmode] [--setloggingmode on | off]
...
--unblockapp <path> unblock the application at <path>
Итак, в вашем случае вы можете:
# /usr/libexec/ApplicationFirewall/socketfilterfw --unblockapp /Applications/another.app
Если вы все еще не можете попасть в него, обязательно проверьте ipfw:
# ipfw -a l
65535 0 0 allow ip from any to any
Если у вас есть другие правила, вы можете:
# ipfw flush
Чтобы удалить их.
Если ничего из этого не работает, попробуйте отключить их обоих и посмотреть, не удается ли вам подключиться:
# sysctl -w net.inet.ip.fw.enable=0
# /usr/libexec/ApplicationFirewall/socketfilterfw --setglobalstate off
Firewall already disabled
Если у вас все еще есть проблемы, вероятно, проблема с конфигурацией apache.