通过命令行在 Mac OS X Lion 防火墙中启用传入连接

通过命令行在 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 是我防火墙信任的应用程序列表的一部分,但它被设置为阻止传入连接。我如何从命令行将其设置为允许传入连接,并使更改立即生效?

答案1

我遇到过同样的问题,通过在运行 Mac OS X 10.8 应用程序防火墙 (socketfilterfw) 的情况下卸载/加载 MacPorts httpd 来“解决”了该问题。不知道为什么这样做有效。一个线索是,我一运行加载,就会弹出一个提示,询问是否允许连接。尽管已经在文件墙选项 GUI 中输入了 MacPorts httpd 应用程序,但仍然如此。

  1. 系统偏好设置 > 安全和隐私 > 防火墙:如果防火墙已关闭,则将其打开
  2. sudo port unload apache2
  3. 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 日志中唯一出现的现象。

希望这对某些人有帮助。我不知道为什么它对我有用,但我已经用过两次了……今天和大约六周前。系统每周都会重启。

答案2

您可以通过使用 -h 运行来获取有关 socketfilterfw 的更多信息:

# /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 可能存在配置问题。

相关内容