问题:我的Macbook Pro上有一个本地Apache实例。 我需要它来监听除en0和en1之外的所有networking接口(基本上,从Parallels上监听lo和vnicX)。
我知道“Listen *:80”,但在这种情况下这不是一个解决scheme。 我可以想象的是,如果使用OS X防火墙阻止在这些接口上传入的Apache请求, 但是我找不到任何实际的例子,不能自己制定这样的规则。
请有人帮忙吗?
可以将Apache configuration为侦听所有地址( Listen *:80 )或特定地址( Listen 192.168.23.42:80 )。 它不能被configuration为不监听特定的地址(或接口)。 如果你需要的话,你可以使用防火墙来阻止这些接口的连接。 像这样的东西可能会诀窍:
ipfw add deny any to dst-port 80 in via en0 ipfw add deny any to dst-port 80 in via en1
我会去使用防火墙设置。 他们在设置 – >安全和隐私 – >防火墙。
阅读OS X安全指南后,我使用了ipfw。 它在山狮行得很好。 这是我做的:
使用以下内容创build一个名为/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”接口)。
创build一个名为/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
最后的规则是必要的!
现在,您可以尝试从另一台计算机连接到您自己的计算机 ,并检查连接是否被阻止。 请注意,您始终可以从自己的计算机连接到自己的计算机。 试试你的智能手机或朋友的电脑。