Очень странная ситуация. Я унаследовал несколько X-серверов от предыдущего администратора, которых мне поручили очистить на разных уровнях. Я знаком с настройками в Ubuntu и очень хорошо разбираюсь в командной строке, включая компиляцию из исходных текстов, помимо того, что знаю, как управлять командной строкой в OS X. Но наткнулись на кое-что совершенно непонятное на одном из серверов, на котором работает 10.6.8 (Snow Leopard).
Первая странность, я бы хотел полностью отключить программный брандмауэр. Звучит так же просто, как войти в Server Admin и просто сказать ему, чтобы он остановил брандмауэр, верно? Нет! Итак, если я выключу брандмауэр и выполню следующую команду для двойной проверки в командной строке:
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, и я единственный пользователь на машине.
У меня есть приложение Server Admin на другом компьютере, настроенное для наблюдения за этим компьютером, но оно не работает все время. И до этого эта проблема существовала. Я не на 10% знаком с sysctl
так что нужно руководство. FWIW, у меня есть некоторые настройки Ethernet, которые я установил /etc/sysctl.conf
совсем недавно, но никаких других команд или настроек, связанных с вышеуказанным.
Почему эти настройки волшебным образом меняются через несколько минут? Что можно сделать, чтобы это остановить.
Заранее благодарим за помощь и указатели.
РЕДАКТИРОВАТЬ: содержание /etc/hostconfig
согласно одному из комментариев ниже:
AFPSERVER=-NO-
AUTHSERVER=-NO-
TIMESYNC=-NO-
QTSSWEBADMIN=-NO-
QTSSRUNSERVER=-NO-
MYSQLCOM=-YES-
IPFORWARDING=-NO-
Просто мысль, но вы могли бы использовать инструмент auditctl
чтобы увидеть, какие процессы затрагивают ваш /etc/sysctl.conf
.
Вы можете прочитать больше об auditctl в этой теме:
Конкретно этот ответ:
Суть в том, что вы запускаете эту команду:
% sudo auditctl -p a -w /etc/sysctl.conf
А затем просмотрите файл журнала, чтобы узнать, кто виноват:
% tail -f /var/log/audit/audit.log
Хорошо, решил этот. Спасибо за советы, ребята!
Произошло то, что на этом компьютере запущено Java-приложение через программу оболочки Mac, которая имеет различные варианты создания веб-интерфейса на основе Jetty. Каким-то образом он был настроен на захват порта 80 - стандартного порта HTTP - и его отключение путем изменения URL-адреса порта на что-то другое, например 666666, решило проблему. net.inet.ip.fw.enable
и net.inet.ip.forwarding
оставаться на месте 0
(он же отключен) и не оживают, когда порт изменен на нестандартный для HTTP.
Тем не менее, мне все еще нужно, чтобы контент доставлялся через стандартный порт 80. Итак, я включил веб-службы на сервере и установил обратный прокси-сервер для порта 666666. Все работает как надо.
Но меня беспокоит то, как приложение смогло взять на себя некоторые sudo
функции уровня - например, установка sysctl
варианты - казалось бы, никогда не запрашивая пароль администратора. Это нормально для приложений Jetty или специфично для этого приложения? Может быть, он запросил пароль администратора, когда он был установлен, прежде чем я даже перейду к нему? Не знаю и не волнуюсь сейчас. Но очистка устраняет множество сетевых проблем в этом окне, поскольку это приложение больше не перехватывает функции маршрутизации и брандмауэра.