如何在Firewall OS X 10.9.4中打开特定端口


15

如何在防火墙中打开特定端口?我不能使用“允许来自应用程序的连接”,因为我想打开Jenkins的端口,这不在列表中...


您希望Jenkins能够收听哪些端口和协议?这篇文章将帮助您了解它配置的端口... stackoverflow.com/a/10106086/475228
bmike

在proto Tcp端口8080
Guy

这篇文章是否ipfw具有相关性?apple.stackexchange.com/questions/33871 / ...
bmike

Answers:


7

Apple的OS X Mavericks包含三个防火墙。首先,可以使用系统设置配置应用程序级防火墙。但是还有ipfw,一个包过滤防火墙,比如GNU / Linux上的netfilter / iptables和pf(FreeBSD / OpenBSD)。

您可以使用命令行配置ipfw,也可以使用free / libre WaterRoof等图形前端。

您可以从ipfw命令开始,如:

sudo ipfw add 31010 allow tcp from any to any dst-port 8080

7
ipfw已被弃用,并于2016
slashdottir中

21

我在OS X Yosemite(10.10.3)下遇到了同样的问题。发现此博客文章提供了明确的说明。我们不能再使用ipfw,因为它已被弃用。相反,使用pfctl,遗憾的是缺少一个很好的命令行方式来告诉它打开一个端口。相反,你需要:

  1. 在文本编辑器中打开/etc/pf.conf。
  2. 像这样添加一行:

#在所有接口上打开TCP 8080端口

将proto tcp从任何端口传递到任何端口8080

  1. 保存文件。
  2. 加载更改:

sudo pfctl -f /etc/pf.conf

如果需要打开udp端口,请更改tcpudp,如果需要,请添加第二行。其他细节可以在man pf.conf

还要确保您的服务器正在侦听您希望它可以访问的实际接口(或所有接口,使用0.0.0.0::0),而不是localhost(127.0.0.1::1)。


3
哇,重启?你真的要重启才能打开一个端口吗?
jcollum 2015年

1
传递-n给pfctl验证规则,并且有针对性地不加载它们。仅 -f /etc/pf.conf用于加载规则。验证它们已加载pfctl -sr。但是,虽然pfctl规则是必要的,但它本身并不足以允许访问给定端口上的El Capitan。
Brian M. Hunt 2015年

...还必须确保应用程序绑定到主机名(不是localhost); 一个$ hostname在命令行中获取主机名。此外,可以通过进入系统偏好设置 - >安全和隐私 - >防火墙 - >关闭防火墙然后打开防火墙来重新启动防火墙,而不是重新启动。
Brian M. Hunt 2015年

@Keen奇妙的头像 - 美好的回忆!
Dónal

6

ipfw已被Apple弃用。山狮和后来使用pfctl。

http://support.apple.com/kb/ht5413


5
你可以发布特定的命令来打开一个端口吗?
2014年

如果要添加特定端口,我认为您需要编辑配置文件(请参阅krypted.com/mac-security / ...并使用192.168搜索该部件)。另一方面,如果您想确保应用程序未被阻止,则jamfnation.jamfsoftware.com/discussion.html?id=6566在最终评论中有一个非常好的摘要。我仍然主要使用10.6,所以我没有使用过pfctl。
肯特

1

这是一个单线,而不是要求用户搞乱Vim。对自动化很有用。

sed -i '' -e '$a\pass in proto tcp from any to any port 8080' /etc/pf.conf; pfctl -vnf /etc/pf.conf

或Linux用户的替代方案

sed -i -e '$a\pass in proto tcp from any to any port 8080' /etc/pf.conf; pfctl -vnf /etc/pf.conf

只需确保8080将示例更改为您想到的任何内容。如果你愿意,用udp交换tcp。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.