Systemd Service Run When Network Interface Up / Down (eth0)

Обычно, когда удаленная машина пытается подключиться к вашему серверу postfix, postfix будет пытаться чтобы выполнить поиск адреса в DNS и сообщить об этом в файле

, например,

connect from 66-220-155-155.outmail.facebook.com[66.220.155.155]

или

connect from mail-it0-x249.google.com[2607:f8b0:4001:c0b::249]

. Теперь, если IP-адрес не может быть правильно преобразован в имя, вместо этого он сообщает unknown :

например

connect from unknown[42.119.145.220]
connect from unknown[192.3.220.210]
connect from unknown[39.52.115.55]

Теперь в вашем случае соединение с 195.22.126.189. Если мы попытаемся найти это, мы получим ошибки DNS, и поэтому postfix просто сообщает unknown .

Просмотр последовательностей «подключение / отключение» для серверов является нормальным явлением в Интернете; это могут быть спамеры, бот-боты, неправильно настроенные серверы, инструменты сканирования ... Мой личный сервер, который только обрабатывает почту, видел 10 из них за последние 4 часа.

2
20.04.2017, 19:14
2 ответа

События Ethernet up/down (и многое другое) сообщаются ядром через сокет netlink. Вы просматриваете сообщения с помощью ip monitor, который, предположительно, можно использовать в сценарии оболочки, чтобы избежать опроса.

Я также обнаружил, что в Debian, по крайней мере, есть пакет для netplug, который является демоном, который слушает сообщения netlink, а затем запускает сценарий оболочки на добавление, повышение и понижение соединения. Затем ваш сценарий оболочки может использовать systemctl для запуска/остановки ваших устройств.

(Предположительно, Network Manager и systemd-networkd также прослушивают эти события, и, возможно, есть способ подключить к ним сценарий, но, похоже, вы их не используете)

.
2
27.01.2020, 22:10

Этот вопрос о ServerFault указывает, что решение будет таким же простым, как добавление одной строки в раздел [Install]вашей пользовательской службы:

[Install]
WantedBy=<the appropriate device unit>.device

Если, с другой стороны, вы хотите, чтобы ваша служба запускалась, когда сетевое подключение вашей системы находится в сети, независимо от типа сетевого подключения , см. man systemd.specialи прочтите инструкции для использование network-online.targetспецифично для вашей версии systemd. Для версии systemd в моей системе рекомендуется добавить это в вашу службу:

[Unit]
Wants=network-online.target
After=network-online.target

... но я думаю, что видел здесь разные инструкции для разных версий systemd, поэтому сначала проверьте man systemd.specialвашего дистрибутива.

1
27.01.2020, 22:10

Теги

Похожие вопросы