问题:我的 Macbook Pro 上有一个本地 Apache 实例。我需要它监听除 en0 和 en1 之外的所有网络接口(基本上,从 Parallels 监听 lo 和 vnicX)。
我知道“Listen *:80”,但这不是这种特殊情况下的解决方案。我能想到的唯一办法是使用 OS X 防火墙阻止这些接口上传入 Apache 的请求。但我找不到任何可行的示例,也无法自己制定这样的规则。
有人可以帮忙吗?
答案1
答案2
我建议使用防火墙设置。它们位于“设置”->“安全和隐私”->“防火墙”中。
答案3
在阅读 OS X 安全指南后,我使用了 ipfw。它在 Mountain Lion 中运行良好。以下是我所做的:
创建一个名为 /etc/ipfw.conf 的文件,内容如下:
add 1000 deny tcp from any to any dst-port 80 via en0
add 2000 deny tcp from any to any dst-port 80 via en1
如果您使用 USB 调制解调器,您可能需要采用略有不同的规则集(例如,阻止所有但允许“lo0”接口)。
创建一个名为 /Library/LaunchDaemons/ipfw.plist 的文件,内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://
www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>ipfw</string>
<key>Program</key>
<string>/sbin/ipfw</string>
<key>ProgramArguments</key>
<array>
<string>/sbin/ipfw</string>
<string>/etc/ipfw.conf</string>
</array>
<key>RunAtLoad</key>
<true />
</dict>
</plist>
使用 launchd 注册:
launchctl load -w /Library/LaunchDaemons/ipfw.plist
检查规则是否已注册:
ipfw print
你应该得到:
01000 deny tcp from any to any dst-port 80 via en0
02000 deny tcp from any to any dst-port 80 via en1
65535 allow ip from any to any
最后一条规则是需要!
现在您可以尝试从另一台计算机连接到您自己的电脑并检查连接是否被阻止。请注意,您始终可以从自己的电脑连接到自己的电脑。尝试使用您的智能手机或朋友的电脑。