У меня есть портативный linux-бокс под управлением Ubuntu 16.04 с одним сетевым интерфейсом, который при подключении к сети должен убедиться, что в этой сети есть DHCP-сервер. Два случая:

  • (a) если в сети уже запущен DHCP, то на коробке должен быть только ip.

  • (b) если в сети нет DHCP, на этом компьютере должен быть запущен DHCP-сервер.

В случае (b) у меня работает dnsmasq. Однако я хотел бы, чтобы система автоматически обнаруживала (a) или (b) и запускала службу dnsmasq в зависимости от результата.

До сих пор мой подход состоял в том, чтобы настроить /etc /network /interfaces для eth0 как статического (в качестве основы для внутренне предоставляемого DHCP) и eth0:1 как настроенного dhcp. Я пытался найти что-то, что запустило бы / остановило службу dnsmasq в результате dhcp-клиента после того, как ссылка стала доступной, но не смог найти такую опцию.

1 ответ1

0

Для этого я бы написал скрипт bash, который запускает dnsmasq на основе вывода dhclient. Если dhclient не получает ответ, запустите dnsmasq. На самом деле должно быть довольно просто. Не глядя, я предполагаю, что dhclient выдаст ненулевой код завершения, если он не сможет получить аренду DHCP.

Запустите скрипт с помощью udev или, например, поместив его в /etc /network /interfaces и, если dhclient даст ненулевой код завершения, запустите dnsmasq.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .