Назад | Перейти на главную страницу

Что это за элементы DGRAM в NETSTAT?

Мне назначен сервер, который отправляет тонны данных в нашу сторону и не используется. Так что, скорее всего, он скомпрометирован. Кажется, что на сервере действительно ничего не вышло из строя, за исключением того, что в netstat указаны мили и мили этих элементов DGRAM.

unix  2      [ ]         DGRAM                    878377447 1165/java            
unix  2      [ ]         DGRAM                    773862304 1165/java            
unix  2      [ ]         DGRAM                    690302532 1165/java            
unix  2      [ ]         DGRAM                    223108186 1165/java            
unix  2      [ ]         DGRAM                    10318852 1165/java            
unix  2      [ ]         DGRAM                    4196896942 1165/java            
unix  2      [ ]         DGRAM                    3847577732 1165/java            
unix  2      [ ]         DGRAM                    3754238011 1165/java            
unix  2      [ ]         DGRAM                    3729499062 1165/java            
unix  2      [ ]         DGRAM                    3686466054 1165/java            
unix  2      [ ]         DGRAM                    3488420039 1165/java            
unix  2      [ ]         DGRAM                    3357838223 1165/java            
unix  2      [ ]         DGRAM                    3207591570 1165/java            
unix  2      [ ]         DGRAM                    3128277321 1165/java            
unix  2      [ ]         DGRAM                    3088626078 1165/java            
unix  2      [ ]         DGRAM                    2958537971 1165/java            
unix  2      [ ]         DGRAM                    2653604223 1165/java            
unix  2      [ ]         DGRAM                    2591912878 1165/java            
unix  2      [ ]         DGRAM                    2344638274 1165/java            
unix  2      [ ]         DGRAM                    2328447790 1165/java            
unix  2      [ ]         DGRAM                    2218612906 1165/java

После дальнейшего расследования выяснилось, что это почтовый процесс zimbra.

zimbra    1165  3.1  8.2 3717464 319584 ?      Sl   Sep22 1933:59 /opt/zimbra/common/lib/jvm/java/bin/java -XX:ErrorFile=/opt/zimbra/log -client -Xmx256m -Dhttps.protocols=TLSv1,TLSv1.1,TLSv1.2 -Djdk.tls.client.protocols=TLSv1,TLSv1.1,TLSv1.2 -Djava.net.preferIPv4Stack=true -Dzimbra.home=/opt/zimbra -Djava.library.path=/opt/zimbra/lib -Djava.ext.dirs=/opt/zimbra/common/lib/jvm/java/jre/lib/ext:/opt/zimbra/lib/jars:/opt/zimbra/lib/ext-common:/opt/zimbra/lib/ext/clamscanner:/opt/zimbra/lib/ext/zimbra-license:/opt/zimbra/lib/ext/twofactorauth:/opt/zimbra/lib/ext/com_zimbra_ssdb_ephemeral_store -Djava.io.tmpdir=/opt/zimbra/data/tmp -Dpython.cachedir.skip=true org.python.util.jython /opt/zimbra/libexec/zmconfigd

Что это такое и почему их так много? Может ли кто-нибудь дать мне некоторое представление об этом?

Спасибо

Это сокеты для дейтаграмм Unix. Они работают как UDP (протокол без установления соединения), но на сокетах unix (например, /dev/log). Они в основном используются для ведения журнала или, возможно, для обмена сообщениями / синхронизацией процесса / потока.

zmconfigd имеет ошибку, из-за которой он выделяет новые сокеты unix dgram в бесконечном цикле.

Вероятная причина в следующем:

  • Он был написан на Python, скомпилирован с помощью jython, чтобы запустить его на виртуальной машине Java.
  • Java не знает сокетов Unix (вероятно, он был намеренно пропущен в стандартном API Java для обеспечения кросс-платформенной совместимости). Сокеты Unix можно обрабатывать только с помощью JNI. JNI - это интерфейс C для Java, поэтому он не собирает мусор (или может иметь неожиданное поведение со сборщиком мусора, если он был написан неправильно).
  • Вероятно, существует неожиданное взаимодействие между jython API, обрабатывающим сокеты unix, и сборщиком мусора JVM.

Я не знаю, когда именно возникла эта ошибка. Это происходило не на всех известных мне зимбрах. Возможно, что позже сборщик мусора начнет работать, и создание сокетов unix dgram однажды остановится, но это может быть больше, чем ограничения вашей текущей системы.

Тем не мение, zmconfigd не является важной частью Zimbra - он только регулярно проверяет некоторые изменения конфигурации и перезапускает службу zimbra, работающую с ними. Если вы хорошо знаете zimbra, она вам не нужна, поэтому вы можете просто отключить ее (каким-то образом - я не знаю, как может быть отключен один компонент zimbra навсегда без взлома zimbra).

Другой обходной путь - периодически перезапускать zmconfigd (запускать zmconfigctl restart как пользователь zimbra, ежечасно из cron).