LINUX.ORG.RU
решено ФорумAdmin

DHCP Relay на Debian

 ,


0

1

Всем доброго времени суток! Сложилась следующая ситуация... Трафик ходит так: L-RTR-A <-> L-FW <-> L-RTR-B <-> L-CLI-B

На машине L-RTR-A поднят DHCP-сервер с двумя подсетями с адресами 172.16.100.1/24 и 172.16.50.2/30

Конфиг DHCP-сервера:

shared-network NET {
#Pool 1
# A slightly different configuration for an internal subnet.
subnet 172.16.100.0 netmask 255.255.255.0 {
  range 172.16.100.65 172.16.100.75;
  option domain-name-servers 172.16.20.10;
  option domain-name "moscow.com";
  option routers 172.16.100.1;
  option broadcast-address 172.16.100.255;
  default-lease-time 86400;
  max-lease-time 86400;
}
#Pool 2
# A slightly different configuration for an internal subnet.
subnet 172.16.200.0 netmask 255.255.255.0 {
  range 172.16.200.65 172.16.200.75;
  option domain-name-servers 172.16.20.10;
  option domain-name "moscow.com";
  option routers 172.16.200.1;
  option broadcast-address 172.16.200.255;
  default-lease-time 86400;
  max-lease-time 86400;
 }
}
#Group
group {
host L-CLI-B {
  hardware ethernet 08:00:07:26:c0:a5;
  fixed-address 172.16.200.61;
 }
}

Затем трафик идет на маршрутизатор L-FW, после чего, по идее, попадает на DHCP-Relay (L-RTR-B) Конфиг:

172.16.100.1 (адрес DHCP-сервера)
ens32 (входящий интерфейс) ens33 (выходящий интерфейс)

На всех машинах, кроме клиентских прописал:

sysctl -w net.ipv4.ip_forward=1 >> /etc/sysctl.conf
iptables -t nat -A POSTROUTING -j MASQUERADE

Проблема: L-CLI-B ни в какую не может принять динамический адрес...



Последнее исправление: AnKoN (всего исправлений: 1)

iptables -t nat -A POSTROUTING -j MASQUERADE

офигенно! Нам не жалко маскарадинга, будем маскарадить все!

У тебя между 172.16.200.1 и 172.16.100.1 пакеты ходят?

С какими параметрами запущен dhcprelay?

tcpdump-ом не пробовал смотреть?

vel ★★★★★
()
Ответ на: комментарий от vel

Между сетками пинги ходят абсолютно спокойно

Dhcprelay запущен с дефолтными параметрами...

Tcpdump-ом смотрел-глухо (т.е ничего не выводит)

AnKoN
() автор топика
Ответ на: комментарий от AnKoN

Dhcprelay запущен с дефолтными параметрами...

Этот как? Просто с адресом сервера?

Tcpdump-ом смотрел-глухо (т.е ничего не выводит)

tcpdump-ом можно посмотреть 3 местах: запросы и ответы в сети клиента, ретранслированные запросы/ответы между dhcprelay и dhcp-сервером, запросы и ответы на dhcp-сервере.

И что, везде глухо?

dhcprelay можно запускать с отладкой.

при запуске tcpdump нужно обязательно указывать "-n" иначе при тормозах с dns-ом оно будет тупо молчать.

vel ★★★★★
()
Ответ на: комментарий от vel

По поводу dhcprelay. На нём указан IP-адрес сервер(172.16.100.1), затем входящий(ens33) и исходящий интерфейс(ens34)

tcpdump-ом я слушал только с ключом по интерфейсу (-i)

Если не сложно, можешь подсказать, как запустить Relay c отладкой, а то я камень :)

AnKoN
() автор топика
Ответ на: комментарий от vel

Выполнил данные команды на DHCP-Relay (L-RTR-B)

В ответ абсолютное «молчание», т.е. ничего не выводит

AnKoN
() автор топика
Ответ на: комментарий от vel

Как мне кажется, проблема закрадывается в маршрутизаторе, который располагается между сервом и релеем.

Потому что когда я тестил этот конфиг без L-FW-все работало

AnKoN
() автор топика
Ответ на: комментарий от AnKoN

ты в сети клиента dhcp запросы видишь ?

Обрати внимание, что пересылаемые запросы идут с порта 67, а не с 68, как у нормального клиента.

vel ★★★★★
()
Последнее исправление: vel (всего исправлений: 1)
Ответ на: комментарий от vel

Странности...

Спустя некое количество времени пошли сообщения

Выхлоп dhcrelay -4 -d 172.16.100.1:

16 packets captured
16 packets received by filter
Forwared BOOTREQUEST for 00:0c:29:e2:d1:90 to 172.16.100.1
Выхлоп tcpdump -ni any «udp and port 67»:
14:49:14.018469 IP 172.16.55.2.67 > 172.16.100.1.67: BOOTP/DHCP, Request from 00:0c:29:e2:d1:90, length 300
...

AnKoN
() автор топика
Ответ на: комментарий от vel

L-RTR-A на команду tcpdump -ni any «udp and port 67» ответил:

15:21:47.255695 IP 172.16.50.1.67 >> 172.16.100.1.67: BOOTP/DHCP, Request form 00:0c:29:a6:a1:0d, length 300
....

AnKoN
() автор топика
Ответ на: комментарий от AnKoN

Замечательно! Это запрос, а ответ куда ушел, если он был ?

В лога dhcpd посмотри.

На самом деле нужно было tcpdump запустить немного с другими опциями «tcpdump -nvi any -s0 udp and port 67» Тогда будет виден gateway-ip и тогда будет ясно из какого subnet dhcpd будет брать адреса.

vel ★★★★★
()
Ответ на: комментарий от vel

В логах вот такое:


Oct 31 14:34:46 L-RTR-A dhcpd[1125]: Abandoning IP address 172.16.100.65: pinged before offer
Oct 31 14:34:52 L-RTR-A dhcpd[1125]: DHCPDISCOVER from 00:0c:29:20:87:b3 via ens34
Oct 31 14:34:53 L-RTR-A dhcpd[1125]: DHCPOFFER on 172.16.100.66 to 00:0c:29:20:87:b3 (debian) via ens34
Oct 31 14:34:53 L-RTR-A dhcpd[1125]: DHCPREQUEST for 172.16.100.66 (172.16.100.1) from 00:0c:29:20:87:b3 (debian) via ens34
Oct 31 14:34:53 L-RTR-A dhcpd[1125]: DHCPACK on 172.16.100.66 to 00:0c:29:20:87:b3 (debian) via ens34
Oct 31 14:48:29 L-RTR-A dhcpd[1125]: DHCPRELEASE of 172.16.100.65 from 00:0c:29:20:87:b3 via ens34 (not found)
Oct 31 14:48:29 L-RTR-A dhcpd[1125]: DHCPDISCOVER from 00:0c:29:20:87:b3 via ens34
Oct 31 14:48:30 L-RTR-A dhcpd[1125]: DHCPOFFER on 172.16.100.67 to 00:0c:29:20:87:b3 (debian) via ens34
Oct 31 14:48:30 L-RTR-A dhcpd[1125]: DHCPREQUEST for 172.16.100.67 (172.16.100.1) from 00:0c:29:20:87:b3 (debian) via ens34
Oct 31 14:48:30 L-RTR-A dhcpd[1125]: DHCPACK on 172.16.100.67 to 00:0c:29:20:87:b3 (debian) via ens34

Зато при запуске команды tcpdump -nvi any -s0 udp and port 67 вот это:


15:42:41.011955 IP (tos 0x0, ttl 63, id 25988, offset 0, flags [DF], proto UDP (17), length 328)
    172.16.50.1.67 > 172.16.100.1.67: BOOTP/DHCP, Request from 00:0c:29:a6:a1:0d, length 300, hops 1, xid 0xc6d04d18, Flags [none]
          Gateway-IP 172.16.200.1
          Client-Ethernet-Address 00:0c:29:a6:a1:0d
          Vendor-rfc1048 Extensions
            Magic Cookie 0x63825363
            DHCP-Message Option 53, length 1: Discover
            Hostname Option 12, length 7: "L-CLI-B"
            Parameter-Request Option 55, length 13:
              Subnet-Mask, BR, Time-Zone, Default-Gateway
              Domain-Name, Domain-Name-Server, Option 119, Hostname
              Netbios-Name-Server, Netbios-Scope, MTU, Classless-Static-Route
              NTP
15:42:47.546776 IP (tos 0x0, ttl 63, id 26172, offset 0, flags [DF], proto UDP (17), length 328)
    172.16.50.1.67 > 172.16.100.1.67: BOOTP/DHCP, Request from 00:0c:29:a6:a1:0d, length 300, hops 1, xid 0xc6d04d18, secs 7, Flags [none]
          Gateway-IP 172.16.200.1
          Client-Ethernet-Address 00:0c:29:a6:a1:0d
          Vendor-rfc1048 Extensions
            Magic Cookie 0x63825363
            DHCP-Message Option 53, length 1: Discover
            Hostname Option 12, length 7: "L-CLI-B"
            Parameter-Request Option 55, length 13:
              Subnet-Mask, BR, Time-Zone, Default-Gateway
              Domain-Name, Domain-Name-Server, Option 119, Hostname
              Netbios-Name-Server, Netbios-Scope, MTU, Classless-Static-Route
              NTP
15:42:47.546954 IP (tos 0x0, ttl 63, id 26173, offset 0, flags [DF], proto UDP (17), length 328)
    172.16.50.1.67 > 172.16.100.1.67: BOOTP/DHCP, Request from 00:0c:29:a6:a1:0d, length 300, hops 1, xid 0xc6d04d18, secs 7, Flags [none]
          Gateway-IP 172.16.200.1
          Client-Ethernet-Address 00:0c:29:a6:a1:0d
          Vendor-rfc1048 Extensions
            Magic Cookie 0x63825363
            DHCP-Message Option 53, length 1: Discover
            Hostname Option 12, length 7: "L-CLI-B"
            Parameter-Request Option 55, length 13:
              Subnet-Mask, BR, Time-Zone, Default-Gateway
              Domain-Name, Domain-Name-Server, Option 119, Hostname
              Netbios-Name-Server, Netbios-Scope, MTU, Classless-Static-Route
              NTP

Как-то так

AnKoN
() автор топика
Ответ на: комментарий от vel

Да, DHCP-сервер «повешен» на 172.16.100.1, который «смотрит» в сторону L-ClI-A, и есть ещё один интерфейс с адресом 172.16.50.2/30, который смотрит в сторону L-FW с адресом 172.16.50.1.

AnKoN
() автор топика
Ответ на: комментарий от vel

Ммммм, нет

Указан только интерфейс c адресом 172.16.100.1/24

AnKoN
() автор топика
Ответ на: комментарий от vel

Как мне кажется, нужно что-то сделать с этим маршрутизатором….

Потому что если из цепочки его исключить-то всё работает совершенно спокойно

AnKoN
() автор топика
Ответ на: комментарий от AnKoN

с этим маршрутизатором

Каким ? L-FW ?

Если его убрать, то все работает?

Ну так разреши на нем пропускать udp c порта 67 на порт 67

«iptables -I FORWARD -p udp --sport 67 --dport 67 -j ACCEPT»

Если мучает паранойя, то сделай 2 правила ( туда и обратно ) с указанием адресов dhcpd и dhcrelay

PS Если «iptables -t nat -A POSTROUTING -j MASQUERADE» есть на всех роутерах, это 3.14ц! Так делать нельзя.

vel ★★★★★
()
Ответ на: комментарий от vel

Идиотизм...

Когда я применил эти правила, ничего не изменилось

Запрос сервер получает, а вот ответы, почему-то, не долетают до места назначения

Даже и не знаю, что можно предположить

AnKoN
() автор топика
Ответ на: Идиотизм... от AnKoN

А ответ отправляются в сторону клиента? Ты их tcpdump-от видишь ?

dhcpd так же как dhcrelay имеет ключик -d, который выводит логи на консоль

Если dhcpd принимает запрос, но у него нет подходящих subnet, то ответ не отсылает.

vel ★★★★★
()
Ответ на: комментарий от vel

Победа....

Наконец-то оно заработало...

Список изменений:

1. В «/etc/default/isc-dhcp-server» добавил второй интерфейс

INTERFACES="ens33 ens34"

2. В «/etc/dhcp/dhcpd.conf» привел к следующему виду:

#Configuration for DHCP

#DHCP Pool 1
subnet 172.16.100.0 netmask 255.255.255.0 {
  range 172.16.100.65 172.16.100.75;
  option domain-name-servers 172.16.20.10;
  option domain-name "moscow.com";
  option routers 172.16.100.1;
  option broadcast-address 172.16.100.255;
  default-lease-time 86400;
  max-lease-time 86400;
 }
#Subnet
subnet 172.16.50.0 netmask 255.255.255.252 {
 }

#DHCP Pool 2
shared-network ZZ {
subnet 172.16.200.0 netmask 255.255.255.0 {
  range 172.16.200.65 172.16.200.75;
  option domain-name-servers 172.16.20.10;
  option domain-name "moscow.com";
  option routers 172.16.200.1;
  option broadcast-address 172.16.200.255;
  default-lease-time 86400;
  max-lease-time 86400;
 }
}

3. Ударил в бубен и готово

P.S. Сложно работать, когда ты кирпич. :) Спасибо за направление

AnKoN
() автор топика
27 января 2020 г.
Ответ на: Победа.... от AnKoN

У меня заработало только после установки frr и настройки ospf на l-fw, l-rtr-a, l-rtr-b. l-cli-b получил адрес моментально. Также были баги на l-srv, dns не хотел поднимать изветсную зону до убийства apparmora и ребута.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.