为什么即使在运行 10.6.8 的 Xserve 上禁用“net.inet.ip.forwarding”和“net.inet.ip.fw.enable”内核 sysctl 设置后,它们仍然保持启用状态?

为什么即使在运行 10.6.8 的 Xserve 上禁用“net.inet.ip.forwarding”和“net.inet.ip.fw.enable”内核 sysctl 设置后,它们仍然保持启用状态?

非常奇怪的情况。我从前任管理员那里继承了一些 Xserver,我负责在各个​​层面进行清理。我熟悉 Ubuntu 中的设置,并且非常熟悉命令行(包括从源代码编译),此外还知道如何在 OS X 中操作命令行。但在运行 10.6.8(Snow Leopard)的一台服务器上遇到了一些令人困惑的事情。

第一个奇怪的是,我想完全关闭软件防火墙。听起来很简单,只需进入服务器管理并告诉它停止防火墙即可,对吗?不!因此,如果我关闭防火墙,我会在命令行中执行以下命令进行仔细检查:

sysctl -a | grep net.inet.ip.fw.enable

结果正如预期:

net.inet.ip.fw.enable: 0

但是如果我在 5 分钟左右的时间内再次检查它,它就会神奇地再次启用:

net.inet.ip.fw.enable: 1

NAT转发也是如此。

sysctl -a | grep net.inet.ip.forwarding

在服务器管理中禁用它,结果如下:

net.inet.ip.forwarding: 0

几分钟后:

net.inet.ip.forwarding: 1

什么鬼?!我检查了 crontabs,发现我是这台机器上唯一的用户。

我确实在另一台机器上设置了服务器管理应用程序来监视这台机器,但它并不是一直在运行。而且这个问题之前就存在了。我对此并不十分熟悉,sysctl所以需要一些指导。FWIW,我确实最近设置了一些以太网调整/etc/sysctl.conf,但没有其他与上述相关的命令或设置。

为什么这些设置几分钟后就会神奇地改变?怎样才能阻止这种情况发生?

提前感谢您的帮助和指点。

编辑:/etc/hostconfig根据以下一条评论的内容:

AFPSERVER=-NO-
AUTHSERVER=-NO-
TIMESYNC=-NO-
QTSSWEBADMIN=-NO-
QTSSRUNSERVER=-NO-
MYSQLCOM=-YES-
IPFORWARDING=-NO-

答案1

只是一个想法,但您可以使用该工具auditctl来查看哪些进程正在触及您/etc/sysctl.conf

您可以在此线程中阅读有关 auditctl 的更多信息:

具体来说这个答案:

要点是你运行这个命令:

% sudo auditctl -p a -w /etc/sysctl.conf

然后观察日志文件来查看谁是犯罪进程:

% tail -f /var/log/audit/audit.log

答案2

好的,解决了这个问题。谢谢大家的建议!

发生的事情是,这台机器上有一个通过 Mac shell 程序运行的 Java 应用程序,它有不同的选项用于创建基于 Jetty 的 Web 界面。不知何故,它被设置为接管端口 80(标准 HTTP 端口),通过将端口 URL 更改为其他内容(如 666666)来禁用它,解决了这个问题。 net.inet.ip.fw.enablenet.inet.ip.forwarding保持设置0(又称:禁用),当端口更改为用于 HTTP 目的的非标准端口时不会恢复正常。

话虽如此,我仍然需要通过标准端口 80 连接来传递内容。因此,我在服务器上启用了 Web 服务,并将反向代理设置为端口 666666。一切正常。

但令我感到不安的是,该应用程序如何能够接管某些sudo级别功能(例如设置sysctl选项),而似乎从未要求输入管理员密码。这对于 Jetty 应用程序来说是正常的还是该应用程序特有的?也许它在安装时要求输入管理员密码,甚至在我使用它之前?现在不知道也不关心。但是,清除这个问题可以解决此框上的许多网络问题,因为该应用程序现在不再劫持路由和防火墙功能。

相关内容