
Возможно ли каким-то образом использовать Xinetd (или любое другое решение) для прослушивания входящих пакетов для IP-адреса, который не назначен интерфейсу, и запустить демон (как это делает Xinetd)?
Итак, моя Linux-машина — это GW по умолчанию, все пакеты отправляются на нее. Я хотел бы распознавать определенные пакеты с IP-адресом назначения, который не привязан к интерфейсу, и реагировать на него (запускать демон)
Спасибо!
решение1
Да, включить net.ipv4.ip_nonlocal_bind
настройку:
echo "net.ipv4.ip_nonlocal_bind = 1" > /etc/sysctl.d/enable-nolocal-bind.conf"
sysctl net.ipv4.ip_nonlocal_bind=1
(последняя строка — «включить сейчас», первая строка — сделать это постоянным). Теперь вы можете привязать демоны к любому IP-адресу.
Однако это может не сработать так, как вы ожидали. В той же локальной сети компьютеры не используют gw по умолчанию для связи. Они отправляют пакеты напрямую, например, делая запросы ARP, чтобы узнать MAC-адрес системы, куда отправить пакет. Если ответа нет, он не вернется к отправке пакета на gw по умолчанию. Вместо этого он выдаст ошибку.
решение2
В Linux маршруты типа local являются петлевыми и будут доставлены на localhost. Также известны какЛюбойIP.
Маршрутизируйте префикс настолько большим, насколько это необходимо. Если вы используете IPv6, возможно, зарезервируйте целый /64 для этой цели, скажем 2001:db8:bdd2:c0e::/64
. Маршрутизируйте его на этот хост (Linux box), а в Linux box отправьте его на local.
Настройте xinetd для прослушивания нужного порта.
В результате любой IP-адрес в этой сети, скажем 2001:db8:bdd2:c0e::138
, будет завершаться на этом сервере и запускать серверную программу.