У меня есть машина (назовем ее устройством), у которой есть соединение 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 к нему, не зная, как его найти.