Назад | Перейти на главную страницу

Ретранслятор DHCP не отправляет ответы клиенту через VPN

У меня есть машина (назовем ее устройством), у которой есть соединение ipsec (VPN) с другой машиной (назовем ее шлюзом). Устройство подключено к gw через виртуальный интерфейс vti0, и в большинстве случаев все работает правильно. На стороне gw у меня есть dhcp-сервер, который я настроил для назначения ip (в сети 11.2.0.0/16) одной из виртуальных машин, размещенных на устройстве. Доступ к конкретной виртуальной машине осуществляется через интерфейс mgmt0 на устройстве.

Vti0 устройства (172.13.14.2) === туннель === GW (192.168.122.2)

 vti0 ip is 172.13.14.2 
 mgmt0 ip is 11.2.0.1
 virtual machine MAC address is fa:16:3e:4f:e6:64

 DHCP Server ip 192.168.122.10
 GW ip 192.168.122.2

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

subnet 11.2.0.0 netmask 255.255.0.0 {
range 11.2.0.2 11.2.255.254;
option routers 11.2.0.1;
}


subnet 192.168.122.0 netmask 255.255.255.0 {
        option routers 192.168.122.2;
        option subnet-mask 255.255.255.0;
        range  192.168.122.11 192.168.122.255;
}


host mgmt-node {
         hardware ethernet fa:16:3e:4f:e6:64;
         fixed-address 11.2.0.2;
 }

Итак, я установил DHCP-ретранслятор на устройстве, которое отправляет DHCP-запросы на сервер, но не отправляет ответ.

Конфигурация DHCP-ретранслятора:

# What servers should the DHCP relay forward requests to?
SERVERS="dhcp-server"
# On what interfaces should the DHCP relay (dhrelay) serve DHCP requests?
INTERFACES="mgmt0 vti0"
# Additional options that are passed to the DHCP relay daemon?
OPTIONS=""

Запросы идут так.

DHCPDISCOVER
Virtual machine request > Device relay
Device relay > GW
GW > DHCP Server

DHCPOFFER
DHCP Server > GW
GW > Device relay --- Stops

Журнал DHCP-сервера:

авг 08 10:07:40 dhcpserver-Standard-PC-i440FX-PIIX-1996 dhcpd[3328]: DHCPDISCOVER from fa:16:3e:4f:e6:64 via 11.2.0.1
авг 08 10:07:40 dhcpserver-Standard-PC-i440FX-PIIX-1996 dhcpd[3328]: DHCPOFFER on 11.2.0.2 to fa:16:3e:4f:e6:64 via 11.2.0.1

Последнее место, где я вижу пакет, - это принимаемый интерфейс устройства vti0.

Из журнала journalctl я вижу, что ретранслятор DHCP сообщает: 08 августа 07:28:39 ipsec-client-automation sh [19208]: Перенаправлен запрос BOOTREQUEST для fa: 16: 3e: 4f: e6: 64 на 192.168.122.10 08 августа 2007 г. : 28: 39 ipsec-client-automation sh [19208]: Попытка декодировать заголовок hw для чистого IP 08 августа 07:28:39 ipsec-client-automation dhcrelay [19208]: Попытка декодировать заголовок hw для чистого IP

Я не смог найти никакой информации о том, что означает «Попытка декодировать заголовок hw для чистого IP», но после этого он останавливается, и я не могу найти расширенную отладку для DHCP-реле, какие-либо идеи?

Если бы кто-нибудь мог дать совет, я был бы признателен.

Значит, ошибка была в конфигурации DHCP-ретранслятора. Должно быть так:

# What servers should the DHCP relay forward requests to?
SERVERS="192.168.122.10"

# On what interfaces should the DHCP relay (dhrelay) serve DHCP requests?
INTERFACES="mgmt0"

# Additional options that are passed to the DHCP relay daemon?
#OPTIONS="-U 172.13.14.2%vti0"
OPTIONS="-U vti0"

Единственное отличие состоит в том, что в ИНТЕРФЕЙСАХ должен быть только источник запросов и параметры, указанные с помощью -U

Если кому-то интересно, почему: Причина, по которой это происходит, заключается в том, что без опции -U giaddrs, который является частью запроса DHCP, не изменяется. Giaddrs - это адрес следующего сервера ретрансляции, на который должен идти пакет, поэтому, если он не установлен, он не направляется к нему.

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