非常奇怪的情况。我从前任管理员那里继承了一些 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.enable
并net.inet.ip.forwarding
保持设置0
(又称:禁用),当端口更改为用于 HTTP 目的的非标准端口时不会恢复正常。
话虽如此,我仍然需要通过标准端口 80 连接来传递内容。因此,我在服务器上启用了 Web 服务,并将反向代理设置为端口 666666。一切正常。
但令我感到不安的是,该应用程序如何能够接管某些sudo
级别功能(例如设置sysctl
选项),而似乎从未要求输入管理员密码。这对于 Jetty 应用程序来说是正常的还是该应用程序特有的?也许它在安装时要求输入管理员密码,甚至在我使用它之前?现在不知道也不关心。但是,清除这个问题可以解决此框上的许多网络问题,因为该应用程序现在不再劫持路由和防火墙功能。