[Решено] Проблема с DHCP у dnsmasq / isc-dhcp-server

Автор Varro, 15 сентября 2016, 09:32:49

« назад - далее »

0 Пользователи и 2 гостей просматривают эту тему.

Varro

Доброго времени суток. Такая проблема: есть ПК на дебиане 8 (условно "сервер") с установленным dnsmasq и к нему через свитч подключаются другие ПК (как правило, с Windows7). У сервера две сетевые карты: eth0 смотрит в интернет, а eth1 - идет к свитчу и другим ПК. Но почему-то на остальных ПК айпишник не выделяется, пакеты уходят, но не приходят, и соответственно нет инета.

/etc/network/interfaces
source /etc/network/interfaces.d/*

# The loopback network interface
auto eth0
allow-hotplug eth0
iface eth0 inet dhcp

auto eth1
    iface eth1 inet static
        address 192.168.31.1
        netmask 255.255.255.0


/etc/dnsmasq.conf
interface=eth1
except-interface=eth0
listen-address=127.0.0.1, 192.168.31.1
dhcp-range=192.168.31.100,192.168.31.150,12h


ip a

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:22:b0:e1:78:a5 brd ff:ff:ff:ff:ff:ff
    inet 192.168.31.1/24 brd 192.168.31.255 scope global eth1
       valid_lft forever preferred_lft forever
    inet6 fe80::222:b0ff:fee1:78a5/64 scope link
       valid_lft forever preferred_lft forever
3: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0e:a6:1b:72:ad brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.106/24 brd 192.168.1.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::20e:a6ff:fe1b:72ad/64 scope link
       valid_lft forever preferred_lft forever


Подскажите пожалуйста, в чем может быть дело?


Varro

netstat -nul
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State     
udp        0      0 0.0.0.0:10000           0.0.0.0:*                         
udp        0      0 0.0.0.0:42487           0.0.0.0:*                         
udp        0      0 0.0.0.0:61438           0.0.0.0:*                         
udp        0      0 0.0.0.0:53              0.0.0.0:*                         
udp        0      0 0.0.0.0:67              0.0.0.0:*                         
udp        0      0 0.0.0.0:68              0.0.0.0:*                         
udp        0      0 0.0.0.0:111             0.0.0.0:*                         
udp        0      0 0.0.0.0:58497           0.0.0.0:*                         
udp        0      0 192.168.1.255:137       0.0.0.0:*                         
udp        0      0 192.168.1.116:137       0.0.0.0:*                         
udp        0      0 192.168.31.255:137      0.0.0.0:*                         
udp        0      0 192.168.31.1:137        0.0.0.0:*                         
udp        0      0 0.0.0.0:137             0.0.0.0:*                         
udp        0      0 192.168.1.255:138       0.0.0.0:*                         
udp        0      0 192.168.1.116:138       0.0.0.0:*                         
udp        0      0 192.168.31.255:138      0.0.0.0:*                         
udp        0      0 192.168.31.1:138        0.0.0.0:*                         
udp        0      0 0.0.0.0:138             0.0.0.0:*                         
udp        0      0 0.0.0.0:670             0.0.0.0:*                         
udp        0      0 127.0.0.1:680           0.0.0.0:*                         
udp        0      0 0.0.0.0:5353            0.0.0.0:*                         
udp6       0      0 :::37641                :::*                               
udp6       0      0 :::40274                :::*                               
udp6       0      0 :::53                   :::*                               
udp6       0      0 :::111                  :::*                               
udp6       0      0 :::670                  :::*                               
udp6       0      0 :::2214                 :::*                               
udp6       0      0 :::5353                 :::*               

endru

Цитата: Varro от 15 сентября 2016, 14:25:48udp        0      0 0.0.0.0:67              0.0.0.0:*                         
udp        0      0 0.0.0.0:68              0.0.0.0:*         
тут все ок, нужно смотреть tcpdump:
tcpdump -i eth1 port 67 or port 68 -e -n
а вообще я бы добавил в конфиг эту строку:
dhcp-authoritative
+ требуются уточнения:
1) используется ли виртуализация сервера? если да, то какая?
2) какой коммутатор стоит? есть возможность подключить напрямую ПК к eth1, чтобы исключить проблему на коммутаторе?
3) что с iptables? Настраивался? на всякий случай показывай вывод команды iptables-save

ihammers

Так на всякий случай спрошу, а машинах надеюсь прописан dhcp, а не статика? И ещё вывод в студию:
~# sysctl -a | grep forward

PS: плюс если это возможно, то логи сервера dnsmasq.
Debian GNU/Linux Bookworm, LXQt/OpenBox: AMD Ryzen 5 5600G / 64Gb RAM
_______________________________
Debian GNU/Linux Bookworm, без графики: AMD Phenon X4 / 16Gb RAM
_______________________________
Debian GNU/Linux Bookworm, LXQt/OpenBox: Acer Aspire One 722 AMD C60 / 8Gb RAM / ATI HD6290

Varro

#5
Цитата: endru от 16 сентября 2016, 04:15:49а вообще я бы добавил в конфиг эту строку:
dhcp-authoritative
Добавил.

tcpdump -i eth1 port 67 or port 68 -e -n
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth1, link-type EN10MB (Ethernet), capture size 262144 bytes
08:56:46.245445 54:a0:50:79:fb:45 > ff:ff:ff:ff:ff:ff, ethertype IPv4 (0x0800), length 342: 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 54:a0:50:79:fb:45, length 300
08:56:46.246135 00:22:b0:e1:78:a5 > ff:ff:ff:ff:ff:ff, ethertype IPv4 (0x0800), length 342: 192.168.31.1.67 > 255.255.255.255.68: BOOTP/DHCP, Reply, length 300
08:56:46.264156 54:a0:50:79:fb:45 > ff:ff:ff:ff:ff:ff, ethertype IPv4 (0x0800), length 342: 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 54:a0:50:79:fb:45, length 300
08:56:53.057200 54:a0:50:79:fb:45 > ff:ff:ff:ff:ff:ff, ethertype IPv4 (0x0800), length 342: 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 54:a0:50:79:fb:45, length 300
08:56:53.057776 00:22:b0:e1:78:a5 > ff:ff:ff:ff:ff:ff, ethertype IPv4 (0x0800), length 342: 192.168.31.1.67 > 255.255.255.255.68: BOOTP/DHCP, Reply, length 300
08:56:53.058552 54:a0:50:79:fb:45 > ff:ff:ff:ff:ff:ff, ethertype IPv4 (0x0800), length 348: 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 54:a0:50:79:fb:45, length 306
08:56:53.106382 00:22:b0:e1:78:a5 > ff:ff:ff:ff:ff:ff, ethertype IPv4 (0x0800), length 344: 192.168.31.1.67 > 255.255.255.255.68: BOOTP/DHCP, Reply, length 302
08:56:56.239293 54:a0:50:79:fb:45 > ff:ff:ff:ff:ff:ff, ethertype IPv4 (0x0800), length 342: 192.168.31.116.68 > 255.255.255.255.67: BOOTP/DHCP, Request from 54:a0:50:79:fb:45, length 300
08:56:56.239753 00:22:b0:e1:78:a5 > 54:a0:50:79:fb:45, ethertype IPv4 (0x0800), length 342: 192.168.31.1.67 > 192.168.31.116.68: BOOTP/DHCP, Reply, length 300


Цитата: endru от 16 сентября 2016, 04:15:49
1) используется ли виртуализация сервера? если да, то какая?
2) какой коммутатор стоит? есть возможность подключить напрямую ПК к eth1, чтобы исключить проблему на коммутаторе?
3) что с iptables? Настраивался? на всякий случай показывай вывод команды iptables-save
1) Нет, не используется.
2) Коммутатор LG LS3105PA, точно рабочий - через него сейчас иногда пускаю инет на вин7 и дебиан. Но пробовал и другой коммутатор, и напрямую, тот же результат. Хотя на счет напрямую - пробовал обычным кабелем. Не нужен ли тут кросс-кабель?
3) iptables не настраивал. iptables-save ничего не выводит.

Цитата: ihammers от 16 сентября 2016, 04:23:31Так на всякий случай спрошу, а машинах надеюсь прописан dhcp, а не статика?
Да, конечно DHCP.

sysctl -a | grep forward
net.ipv4.conf.all.forwarding = 0
net.ipv4.conf.all.mc_forwarding = 0
net.ipv4.conf.default.forwarding = 0
net.ipv4.conf.default.mc_forwarding = 0
net.ipv4.conf.eth0.forwarding = 0
net.ipv4.conf.eth0.mc_forwarding = 0
net.ipv4.conf.eth1.forwarding = 0
net.ipv4.conf.eth1.mc_forwarding = 0
net.ipv4.conf.lo.forwarding = 0
net.ipv4.conf.lo.mc_forwarding = 0
net.ipv4.ip_forward = 0
net.ipv4.ip_forward_use_pmtu = 0
net.ipv6.conf.all.forwarding = 0
net.ipv6.conf.all.mc_forwarding = 0
net.ipv6.conf.default.forwarding = 0
net.ipv6.conf.default.mc_forwarding = 0
net.ipv6.conf.eth0.forwarding = 0
net.ipv6.conf.eth0.mc_forwarding = 0
net.ipv6.conf.eth1.forwarding = 0
net.ipv6.conf.eth1.mc_forwarding = 0
net.ipv6.conf.lo.forwarding = 0
net.ipv6.conf.lo.mc_forwarding = 0

endru

Цитата: Varro от 16 сентября 2016, 09:12:10Не нужен ли тут кросс-кабель?
Проверяется очень легко, соединяем на прямую, настраиваем статику на клиенте - пингуем. пинг идет - значит кросс не нужен.
По tcpdump: вывод явно говорит о проблеме в настройках dnsmasq. Какие я подсказать не смогу, т.к. никогда его не использовал, уж очень привык к isc-dhcp-server и bind9.
Как вариант можно попробовать добавить  маску сети, раз она явно не указана(без маски сети могут быть большие проблемы)
dhcp-range=192.168.31.100,192.168.31.150,255.255.255.0,12h

Varro

Цитата: endru от 16 сентября 2016, 10:03:55Как вариант можно попробовать добавить  маску сети, раз она явно не указана(без маски сети могут быть большие проблемы)
Попробовал,результат тот же.

Цитата: endru от 16 сентября 2016, 10:03:55isc-dhcp-server/quote]
Удалил dnsmasq, поставил его. Уже лучше - пинги идут, айпишник выделяется, но инета все равно нет (на дебиане, само собой, инет есть).

/etc/dhcp/dhcpd.conf
default-lease-time 3600;
max-lease-time 36000;

option subnet-mask 255.255.255.0;
option broadcast-address 192.168.31.255;
option domain-name-servers 8.8.8.8, 4.4.4.4;
option domain-name "mydomain.example";

subnet 192.168.31.0 netmask 255.255.255.0 {
  range 192.168.31.10 192.168.31.50;
  option routers 192.168.31.1;
}


Плюс дописал в /etc/nat и сделал "chmod +x /etc/nat"
#!/bin/sh

#Включаем форвардинг пакетов
echo 1 > /proc/sys/net/ipv4/ip_forward

#Разрешаем траффик на lo
iptables -A INPUT -i lo -j ACCEPT

#Разрешаем доступ из внутренней сети наружу
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT

#Включаем NAT
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.31.0/24 -j MASQUERADE

#Разрешаем ответы из внешней сети
iptables -A FORWARD -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT

#Запрещаем доступ снаружи во внутреннюю сеть
iptables -A FORWARD -i eth0 -o eth1 -j REJECT


Может, надо что-то еще сделать?

endru

ты сначала интернет настрой! а потом уже будешь форварды не понятные делать... честно не понимаю зачем перенаправления делать если выше только провайдер.
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Varro

Цитата: endru от 17 сентября 2016, 08:19:23честно не понимаю зачем перенаправления делать если выше только провайдер
Я просто пытался ориентироваться на эту статью

Цитата: endru от 17 сентября 2016, 08:19:23iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Удалил все из /etc/nat, выполнил - все равно инета нет...


Varro

Цитата: endru от 19 сентября 2016, 15:17:24iptables-save
Странно, после перезагрузки почему-то ничего не выдает. Если после  iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE, то:
# Generated by iptables-save v1.4.21 on Mon Sep 19 15:59:17 2016
*nat
:PREROUTING ACCEPT [24:1655]
:INPUT ACCEPT [4:375]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -o eth0 -j MASQUERADE
COMMIT
# Completed on Mon Sep 19 15:59:17 2016


route стабильно выдает:
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         192.168.1.20    0.0.0.0         UG    0      0        0 eth0
192.168.1.0     *               255.255.255.0   U     0      0        0 eth0
192.168.31.0    *               255.255.255.0   U     0      0        0 eth1

endru

Вообще мы отошли от темы уже. Предлагаю начать новую, либо изменить название текущей темы (для этого нужно отредактировать 1 сообщение).

Чтобы сохранить настройки iptables после перезагрузки сервера, можно сделать так:
сохраняем текущие настройки
iptables-save > /etc/network/iptables
при поднятии интерфейса применяем настройки iptables:
iface eth0 inet dhcp
        pre-up cat /etc/network/iptables  | /sbin/iptables-restore

Теперь про интернет:
Кто будет включать перенаправление?
Открываем /etc/sysctl.conf находим и меняем 0 на 1:
net.ipv4.ip_forward=1
применяем новые правила:
sysctl -p
проверяем работу интернета.

Varro

Большое спасибо за помощь, теперь все заработало :)