LinuxForum.Fans
Тема

[Решено] Не работает dnsmasq как DHCP-сервер

Автор: intelfx 2 сообщений 2631 просмотров
#174305

Доброго времени суток.
Я настраиваю некоторое подобие роутера на своём ноутбуке:
Внутренний интерфейс - wlan0 (режим ad-hoc)
Внешний интерфейс - ppp0
Роутинг - NAT через iptables
DHCP/DNS - dnsmasq

Всё уже настроено (8.8.8.8 с удалённого компьютера пингуется),
но не работает DHCP-сервер в составе dnsmasq.

Причём, если вместо dnsmasq юзать dhcpd, то всё получается.
Но dhcpd не синхронизируется с DNS-сервером, а без этого невозможно использовать имена хостов (вроде "http://webserver").

Параметры wlan0: 192.168.1.1, маска 255.255.255.0
Конфиг dhcpd (рабочий):

text

option domain-name "lan";
max-lease-time 7200;

subnet 192.168.1.0 netmask 255.255.255.0 { range 192.168.1.50 192.168.1.100; option routers 192.168.1.1; option broadcast-address 192.168.1.255; }

Конфиг dnsmasq (нерабочий):

text

domain-needed
bogus-priv

local=/lan/ domain=lan listen-address=127.0.0.1,192.168.1.1

dhcp-option=option:router,192.168.1.1 dhcp-option=option:netmask,255.255.255.0 dhcp-option=option:ip-forward-enable,0

Подскажите, пожалуйста, что можно попытаться изменить в конфиге? Сам конфиг практически без изменений взят из роутера на DD-WRT.

#174621

Решение таки было найдено, причём оно идёт вразрез с официальным FAQ dnsmasq'а.
Оно состояло в том, чтобы установить broadcast-адрес на внутреннем интерфейсе (wlan0) не "192.168.1.255", а "255.255.255.255".

text

ip addr add 192.168.1.1/24 brd 255.255.255.255 dev wlan0

Вот та самая цитата из FAQ, которого я в начале придерживался:


The first thing to check is the broadcast address set for the
ethernet interface. This is normally the adddress on the connected
network with all ones in the host part. For instance if the
address of the ethernet interface is 192.168.55.7 and the netmask
is 255.255.255.0 then the broadcast address should be
192.168.55.255. Having a broadcast address which is not on the
network to which the interface is connected kills things stone
dead.
Войдите или зарегистрируйтесь, чтобы ответить.