web-dev-qa-db-ja.com

10.6.8を実行しているXserveで `net.inet.ip.forwarding`および` net.inet.ip.fw.enable`カーネルsysctl設定を無効にしても、有効のままになるのはなぜですか?

非常に奇妙な状況。以前の管理者からいくつかのXserverを継承しましたが、さまざまなレベルでのクリーンアップを担当しています。私はUbuntuの設定に精通しており、OS Xのコマンドラインを操作する方法を知っていることに加えて、ソースからのコンパイルを含むコマンドラインに非常に慣れています。しかし、10.6.8(Snow Leopard)を実行しているサーバーの1つでまったく困惑する何かに遭遇しました。

まず奇妙なことに、ソフトウェアファイアウォールを完全にオフにしたいと思います。サーバー管理にアクセスしてファイアウォールを停止するように指示するのと同じくらい簡単に聞こえますか?いいえ!したがって、ファイアウォールをオフにして、次のコマンドを実行してコマンドラインを再確認すると、次のようになります。

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

WTF?!?私はcrontabをチェックしましたが、私はマシン上の唯一のユーザーです。

別のマシンにサーバー管理アプリを設定してこのマシンを監視していますが、常に実行されているわけではありません。そして、この問題はそれ以前に存在していました。私はsysctlに10%精通していないので、いくつかのガイダンスが必要です。 FWIW、ごく最近/etc/sysctl.confで設定したイーサネットの調整がいくつかありますが、上記に関連する他のコマンドや設定はありません。

これらの設定が数分後に魔法のように変化するように見えるのはなぜですか?それを止めるために何ができるか。

ヘルプとポインタを事前に感謝します。

編集:以下のコメントの1つによる/etc/hostconfigの内容:

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

さて、これを解決しました。アドバイスの皆さん、ありがとう!

何が起こったのかというと、このマシンでMacシェルプログラムを介して実行されているJavaアプリケーションがあり、JettyベースのWebインターフェイスを作成するためのさまざまなオプションがあります。どういうわけかこれはポート80を引き継ぐように設定されていました。標準のHTTPポート、およびポートURLを666666などの他のポートに変更して無効にすると、問題が解決しました。net.inet.ip.fw.enableおよびnet.inet.ip.forwarding0(別名:無効)に設定されたままで、ポートがHTTPの目的で非標準ポートに変更されると、元に戻ります。

それでも、標準のポート80接続を介してコンテンツを配信する必要があります。そこで、サーバーでWebサービスをオンにし、そこからポート666666にリバースプロキシを設定しました。すべてが正常に動作します。

しかし、私を悩ませているのは、アプリケーションが、管理者パスワードを要求することなく、Sudoオプションの設定などのいくつかのsysctlレベルの機能を引き継ぐことができた方法です。 Jettyアプリでは正常ですか、それともこのアプリに特有ですか?たぶんそれは私がそれに行く前にそれがインストールされたときに管理者パスワードを要求しましたか?今はわからない、気にしない。しかし、これをクリアすると、このアプリケーションがルーティングとファイアウォール機能をハイジャックしなくなったため、このボックスの多くのネットワークの問題がクリアされました。

1
JakeGould

考えただけですが、ツールauditctlを使用して、どのプロセスが/etc/sysctl.confに影響を与えているかを確認できます。

このスレッドでauditctlの詳細を読むことができます:

具体的にはこの答え:

要点は、次のコマンドを実行することです。

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

次に、ログファイルを見て、誰が有罪のプロセスであるかを確認します。

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