Вопрос или проблема
Я использую Elementary OS Freya (Ubuntu 14.04). Я установил DNSMASQ и, запустив команду, получил следующую ошибку:
$ sudo service dnsmasq start
* Запуск DNS-ретранслятора и DHCP-сервера dnsmasq
dnsmasq: неверные параметры командной строки: попробуйте --help [ошибка]
В /var/log/syslog
я нашел:
22 дек 10:34:10 Marcelo-PC dnsmasq[3176]: неверные параметры командной строки: попробуйте --help
22 дек 10:34:10 Marcelo-PC dnsmasq[3176]: не удалось запуститься
Запуская sh -x /etc/init.d/dnsmasq
, я получаю:
marcelo@Marcelo-PC:~$ sh -x /etc/init.d/dnsmasq start
+ set +e
+ PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
+ DAEMON=/usr/sbin/dnsmasq
+ NAME=dnsmasq
+ DESC=DNS-ретранслятор и DHCP-сервер
+ ENABLED=1
+ [ -r /etc/default/dnsmasq ]
+ . /etc/default/dnsmasq
+ ENABLED=1
+ CONFIG_DIR=/etc/dnsmasq.d,.dpkg-dist,.dpkg-old,.dpkg-new
+ [ -r /etc/default/locale ]
+ . /etc/default/locale
+ LANG=en_US.UTF-8
+ export LANG
+ test -x /usr/sbin/dnsmasq
+ [ -f /lib/lsb/init-functions ]
+ . /lib/lsb/init-functions
+ run-parts --lsbsysinit --list /lib/lsb/init-functions.d
+ [ -r /lib/lsb/init-functions.d/01-upstart-lsb ]
+ . /lib/lsb/init-functions.d/01-upstart-lsb
+ unset UPSTART_SESSION
+ _RC_SCRIPT=/etc/init.d/dnsmasq
+ [ -r /etc/init//etc/init.d/dnsmasq.conf ]
+ _UPSTART_JOB=dnsmasq
+ [ -r /etc/init/dnsmasq.conf ]
+ [ -r /lib/lsb/init-functions.d/20-left-info-blocks ]
+ . /lib/lsb/init-functions.d/20-left-info-blocks
+ [ -r /lib/lsb/init-functions.d/50-ubuntu-logging ]
+ . /lib/lsb/init-functions.d/50-ubuntu-logging
+ LOG_DAEMON_MSG=
+ FANCYTTY=
+ [ -e /etc/lsb-base-logging.sh ]
+ true
+ [ ! ]
+ [ != yes ]
+ [ -x /sbin/resolvconf ]
+ RESOLV_CONF=/var/run/dnsmasq/resolv.conf
+ [ ! ]
+ DNSMASQ_USER=dnsmasq
+ test 1 != 0
+ log_daemon_msg Запуск DNS-ретранслятора и DHCP-сервера dnsmasq
+ [ -z Запуск DNS-ретранслятора и DHCP-сервера ]
+ log_use_fancy_output
+ TPUT=/usr/bin/tput
+ EXPR=/usr/bin/expr
+ [ -t 1 ]
+ [ xxterm != x ]
+ [ xxterm != xdumb ]
+ [ -x /usr/bin/tput ]
+ [ -x /usr/bin/expr ]
+ /usr/bin/tput hpa 60
+ /usr/bin/tput setaf 1
+ [ -z ]
+ FANCYTTY=1
+ true
+ /usr/bin/tput xenl
+ /usr/bin/tput cols
+ COLS=169
+ [ 169 ]
+ [ 169 -gt 6 ]
+ /usr/bin/expr 169 - 7
+ COL=162
+ log_use_plymouth
+ [ n = y ]
+ plymouth --ping
+ printf * Запуск DNS-ретранслятора и DHCP-сервера dnsmasq
* Запуск DNS-ретранслятора и DHCP-сервера dnsmasq + /usr/bin/expr 169 - 1
+ /usr/bin/tput hpa 168
+ printf
+ start
+ [ ! -d /var/run/dnsmasq ]
+ start-stop-daemon --start --quiet --pidfile /var/run/dnsmasq/dnsmasq.pid --exec /usr/sbin/dnsmasq --test
+ start-stop-daemon --start --quiet --pidfile /var/run/dnsmasq/dnsmasq.pid --exec /usr/sbin/dnsmasq -- -x /var/run/dnsmasq/dnsmasq.pid -u dnsmasq -r /var/run/dnsmasq/resolv.conf -7 /etc/dnsmasq.d,.dpkg-dist,.dpkg-old,.dpkg-new
dnsmasq: неверные параметры командной строки: попробуйте --help
+ return 2
+ log_end_msg 1
+ [ -z 1 ]
+ [ 162 ]
+ [ -x /usr/bin/tput ]
+ log_use_plymouth
+ [ n = y ]
+ plymouth --ping
+ printf \r
+ /usr/bin/tput hpa 162
+ [ 1 -eq 0 ]
+ printf [
[+ /usr/bin/tput setaf 1
+ printf ошибка
ошибка+ /usr/bin/tput op
+ echo ]
]
+ return 1
+ exit 1
И я не могу заставить DNSMASQ работать. Единственная раскомментированная строка в моем dnsmasq.conf
:
address=/nintendowifi.net/192.168.0.8
Как я могу понять, в чем проблема?
Ошибка связана с пакетом dns-root-data
. DNSmasq не должен требовать его, но он требует. Выполните следующие шаги:
sudo apt-get purge dnsmasq
sudo apt-get autoremove
sudo apt-get install dnsmasq
Не забудьте вставить свою конфигурацию (если такая есть) обратно в /etc/dnsmasq.conf
Если это не сработало, попробуйте это (работает, по крайней мере, в Debian 9 и Raspian)
sudo nano /etc/init.d/dnsmasq
Где читается
if [ -f $ROOT_DS ]; then
Закомментируйте следующую строку (добавьте # в начало строки) и вставьте эту строку ниже:
`DNSMASQ_OPTS="$DNSMASQ_OPTS `mawk -- '{ printf " --trust-anchor=.,%d,%d,%d,%s", $5, $6, $7, $8 }' $ROOT_DS`"`
Структура /usr/share/dns/root.ds
была изменена. Поля раньше разделялись только пробелами, теперь они разделяются табуляцией (\t)
Ответ или решение
Чтобы заставить DNSMASQ работать на Elementary OS Freya (Ubuntu 14.04), выполните следующие шаги, основываясь на предоставленных вами деталях и описании проблемы.
1. Анализ проблемы
Вы столкнулись с ошибкой при попытке запустить DNSMASQ. Сообщение об ошибке указывает на наличие неверных параметров командной строки, возникающих при старте службы. Лог /var/log/syslog
также подтверждает это сообщение.
2. Исправление конфигурации
Проблема может заключаться в конфликте с пакетом dns-root-data
, который, как показывают ваши логи, на самом деле не требуется для функционирования DNSMASQ, но может быть установлен как зависимость.
Пошаговая инструкция
-
Удалите DNSMASQ и связанные пакеты:
sudo apt-get purge dnsmasq sudo apt-get autoremove
Это гарантирует, что все возможные проблемы с конфигурацией будут устранены, и пакеты обновятся.
-
Установите DNSMASQ заново:
sudo apt-get install dnsmasq
После переустановки вам необходимо будет повторно внести любые изменения в файл конфигурации /etc/dnsmasq.conf
(если они у вас были).
3. Проверка конфигурации
Убедитесь, что файл конфигурации /etc/dnsmasq.conf
настроен правильно. Ваша единственная строчка:
address=/nintendowifi.net/192.168.0.8
может не быть причиной проблемы, однако лучше полностью проверить файл на наличие ошибок или конфликтующих настроек.
4. Проверка прав и зависимостей
Убедитесь, что вы запускаете команду с достаточными правами. Если у вас установлен resolvconf
, проверьте, правильно ли он настроен, так как dnsmasq
может зависеть от него для настройки DNS.
5. Альтернативное решение
Если вышеописанные шаги не помогли, попробуйте внести изменения в скрипт инициализации DNSMASQ. Откройте файл:
sudo nano /etc/init.d/dnsmasq
Найдите строку:
if [ -f $ROOT_DS ]; then
Закомментируйте следующую строку и замените её на:
DNSMASQ_OPTS="$DNSMASQ_OPTS `mawk -- '{ printf " --trust-anchor=.,%d,%d,%d,%s", $5, $6, $7, $8 }' $ROOT_DS`"
Это изменение связано с форматом файла /usr/share/dns/root.ds
, который изменился и требует адаптации для корректной работы.
6. Запуск службы
После внесения изменений попробуйте снова запустить службу DNSMASQ:
sudo service dnsmasq start
7. Устранение ошибок
Если ошибка сохраняется, вы можете проверить текущие активности и конфигурацию, выполнив:
sudo sh -x /etc/init.d/dnsmasq start
Это даст более подробную информацию о том, что делает скрипт и где может возникать проблема.
Заключение
Следуя указанным шагам, вы сможете устранить проблемы с запуском DNSMASQ на вашей системе. Не забудьте учитывать все изменения, которые вносите, чтобы в случае возникновения новых проблем, у вас была возможность вернуть систему к прежнему состоянию. Для большей уверенности в работе, не лишним будет обратить внимание на актуальные обновления и изменения, произошедшие в более новых версиях Ubuntu.