Включение входящих подключений в брандмауэре Mac OS X Lion через командную строку
$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 является частью моего списка доверенных приложений брандмауэра, но он настроен на блокировку входящих соединений. Как я могу настроить его так, чтобы он разрешал входящие соединения из командной строки и немедленно вносил изменения?
2 ответа
У меня возникла та же проблема, и я "решил" ее, выгрузив / загрузив MacPorts httpd с запущенным межсетевым экраном приложения Mac OS X 10.8 (socketfilterfw). Понятия не имею, почему это сработало. Одна подсказка - как только я запустил загрузку, всплыло окно с вопросом, разрешать ли соединения. Это несмотря на то, что вы уже вошли в приложение Macports httpd в графическом интерфейсе параметров файловой системы.
- Системные настройки> Безопасность и конфиденциальность> Брандмауэр: включите брандмауэр, если он выключен
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 is listening", и в последние несколько дней это единственное событие в журнале 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.