dnsmasq не запускается при загрузке Ubuntu 13.10

Вопрос или проблема

dnsmasq не запускается при загрузке Ubuntu 13.10, показывая ошибку в syslog:

dnsmasq не удалось создать слушающий сокет для 192.168.0.10: Не удается назначить запрашиваемый адрес

Когда я запускаю его вручную, все работает без проблем. Вот файл dnsmasq.conf:

bogus-priv
server=212.27.40.240
server=212.27.40.241
local=/mydomain.0./
# interface=eth0
listen-address=127.0.0.1
listen-address=192.168.0.10
expand-hosts
domain=mydomain.0.
dhcp-range=192.168.0.20,192.168.0.100,24h
dhcp-option=3,192.168.0.1
dhcp-option=vendor:MSFT,2,1i
cname="www.mydomain.0",myhost

Как я понимаю, NetworkManager использует урезанную версию dnsmasq, что может конфликтовать с полной версией. Думаю, это и есть причина проблемы. Я хотел бы, чтобы хост с сервером на нем и все остальные хосты в сети использовали dnsmasq.

Есть идеи, что происходит?

Похоже, что адрес или порт уже используется. Попробуйте отключить networkmanager, чтобы посмотреть, поможет ли это. Скорее всего, это не причина, так как вы можете получить доступ к адресу, когда вручную запускаете службу.

Кроме того, это может происходить во время загрузки, если ваш адрес не был назначен серверу до запуска службы dnsmasq. Если это так, убедитесь, что вашему серверу назначен статический IP-адрес.

У меня была такая же проблема в 14.04. Это оказалось сочетанием NetworkManager и dnsmasq. В /var/log/syslog вы можете увидеть, что eth0 не готов, когда dnsmasq пытается запуститься.

Моим решением было отключить eth0 для NM, настроив eth0 в /etc/network/interfaces.
Добавьте
iface eth0 inet dhcp … или подобное в конфигурацию.
Таким образом, eth0 доступен, когда запускается dnsmasq.

У меня была такая же ошибка, я не запустил интерфейс eth0, и IP-адрес сервера не был назначен. Поэтому решение проблемы заключалось в следующем:

  1. Запустить интерфейс eth0 и назначить IP с помощью sudo ifup eth0 и проверить с помощью sudo ip a
  2. Перезапустить сервер dnsmask sudo service dnsmasq restart

Если это помогает, моя конфигурация выглядела следующим образом
/etc/network/interfaces

allow-hotplug eth0
iface eth0 inet dhcp
    address 192.168.2.1
    netmask 255.255.255.0
    network 192.168.2.0
    broadcast 192.168.2.255
    dns-nameservers 8.8.8.8
    dns-search lan
    post-up /sbin/iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE

/etc/dnsmasq.conf

interface=eth0      # Использовать интерфейс eth0  
listen-address=192.168.2.1 # Явно указать адрес, по которому слушать  
bind-interfaces      # Привязаться к интерфейсу, чтобы убедиться, что мы не отправляем данные в другое место  
server=8.8.8.8       # Перенаправлять DNS-запросы к Google DNS  
domain-needed        # Не перенаправлять короткие имена  
bogus-priv           # Никогда не перенаправлять адреса в нерутируемых адресных пространствах.  
dhcp-range=192.168.2.50,192.168.2.150,12h # Назначать IP-адреса в диапазоне от 172.24.1.50 до 172.24.1.150 с арендным временем 12 часов  

Моей целью было получить DHCP-сервер, чтобы иметь возможность перенаправлять кабельный трафик на WLAN моего ноутбука

.

Ответ или решение

Запуск dnsmasq при старте Ubuntu 13.10 может сталкиваться с проблемами, если интерфейс, на котором он пытается слушать, не готов или не имеет назначенного IP-адреса. Эта проблема может проявляться в виде ошибки в системном журнале:

dnsmasq failed to create listening socket for 192.168.0.10: Cannot assign requested address

Основные причины проблемы

  1. Конфликт с NetworkManager: Часто NetworkManager может использовать свою упрощённую версию dnsmasq, что может приводить к конфликту с полновесной версией. Это не всегда прямая причина проблемы старта dnsmasq, но стоит проверить логи для выявления возможных конфликтов.

  2. Не готовность сетевого интерфейса: Если интерфейс (например, eth0) ещё не получил IP-адрес к моменту старта службы dnsmasq, это может вызвать такую ошибку. Вам нужно убедиться, что интерфейс имеет статический IP-адрес или получает его достаточно быстро.

Решение

  1. Проверка и настройка интерфейса eth0:

    • Убедитесь, что eth0 имеет корректные настройки в файле /etc/network/interfaces. Добавьте туда следующие строки:
      allow-hotplug eth0
      iface eth0 inet static
       address 192.168.0.10
       netmask 255.255.255.0
    • Замените, если нужно, на inet dhcp, если вы предпочитаете динамическое назначение IP в сети.
  2. Изменение конфигурации dnsmasq:

    • Убедитесь, что конфигурация /etc/dnsmasq.conf соответствует вашим сетевым настройкам. Если вы назначаете интерфейсу конкретный IP, используйте опции:
      interface=eth0
      listen-address=192.168.0.10
      bind-interfaces
    • Если интерфейсу присваивается другой IP, внесите соответствующие изменения.
  3. Проверка запуска службы:

    • После настройки интерфейса вручную его можно запустить с помощью:
      sudo ifup eth0
    • Перезапустите службу dnsmasq для проверки изменений:
      sudo service dnsmasq restart
    • Убедитесь, что ошибок в логах /var/log/syslog нет.
  4. Оптимальное взаимодействие с NetworkManager:

    • В случае необходимости отключите управление eth0 через NetworkManager, добавив соответствующие строки в конфигурациях.

Таким образом, главное внимание следует уделить обеспечению доступности IP-адреса интерфейса к моменту старта службы dnsmasq. Успешное решение этой задачи обеспечит корректный запуск и работу dnsmasq на вашем сервере, что позволит использовать все возможности DHCP и DNS-сервера для вашей локальной сети.

Оцените материал
Добавить комментарий

Капча загружается...