Mac-Osx-Server

為什麼 net.inet.ip.forwardingnet.inet.ip.fw.enable 核心 sysctl 設置在執行 10.6.8 的 Xserve 上禁用後仍保持啟用狀態?

  • July 21, 2017

很離奇的情況。我從以前負責清理各個級別的管理員那裡繼承了一些 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

在 Server Admin 中禁用它,結果如下:

net.inet.ip.forwarding: 0

幾分鐘後:

net.inet.ip.forwarding: 1

怎麼回事?!?我檢查了 crontabs,我是機器上唯一的使用者。

我確實在另一台機器上設置了伺服器管理應用程序來監視這台機器,但它並沒有一直執行。而這個問題在此之前確實存在。我不是 10% 熟悉,sysctl所以需要一些指導。FWIW,我/etc/sysctl.conf最近確實進行了一些乙太網調整,但沒有其他命令或設置連接到上述內容。

為什麼這些設置會在幾分鐘後神奇地改變?可以做些什麼來阻止它。

提前感謝您的幫助和指點。

編輯:/etc/hostconfig根據以下評論之一的內容:

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

好的,解決了這個。謝謝大家的建議!

發生的事情是在這台機器上通過 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 應用程序來說是正常的還是對這個應用程序來說是特殊的?也許它在我安裝它之前就要求輸入管理員密碼?暫時不知道也不關心。但是,既然這個應用程序不再劫持路由和防火牆功能,那麼清除這個就可以清除這個盒子上的許多網路問題。

只是一個想法,但您可以使用該工具auditctl查看哪些程序正在觸及您的/etc/sysctl.conf.

您可以在此執行緒中閱讀有關 auditctl 的更多資訊:

具體來說這個答案:

要點是你執行這個命令:

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

然後查看日誌文件,看看誰是有罪的程序:

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

引用自:https://serverfault.com/questions/474079