Давеча потребовалось мне раздавать IP адреса по dhcp в локальной сети ДЦ OVH. А адреса с маской 255.255.255.255. И, как водится, шлюз у них один на всех (чтобы масками не добавлять, перерасход же получается — из 8 адресов только 5 используется). Так еще из локалки выпускают только под определенным маком, иначе на шлюзе блочат так, что не видно интернета.
В дата центре OVH шлюз (GATEWAY_IP) у всех IP адресов выделенного сервера начинается так же, как основной IP сервера, а заканчивается на .254. Например для сервера с IP 198.27.92.15 у всех IP будет шлюзом 198.27.92.254 Это очень хороший ход, к слову. Удобно конфигурировать.
После того, как был установлен Proxmox 6 из коробки OVH, я накатил isc-dhcpd server:
apt install -y isc-dhcp-server
cp /etc/dhcp/dhcpd.conf{,.backup}
echo '' > /etc/dhcp/dhcpd.conf
touch /var/lib/misc/dhcp.leases
nano /etc/dhcp/dhcpd.conf
Теперь нужно написать конфиг серверу, чтобы он раздавал IP адреса для виртуальных машин в сети. Пример я напишу ниже. Сразу оговорюсь — конфиг не идеален, так как работает не со всеми ОС. В частности, на FreeBSD сеть не взлетает, так как Фря не принимает маршрут на такой шлюз. Попытки подсунуть ей маршруты через dhcp не помогли. Адрес IP получает, а настройки сети нет. Если кто то знает, как пропихнуть все-таки маршрут — напишите, пожалуйста, в комментарии.
# мой конфиг isc-dhcpd # Здесь 192.168.246.xxx - адреса для виртуалок (FAILOVER_IP в терминах OVH) # 10.10.10.254 - шлюз основного IP сервера (GATEWAY_IP ) option classless-routes code 121 = array of unsigned integer 8; option classless-routes 24, 192,168,246, 10,10,10,254, 0, 10,10,10,254; subnet 0.0.0.0 netmask 0.0.0.0 { range 192.168.246.170 192.168.246.175; option subnet-mask 255.255.255.255; option broadcast-address 192.168.246.255; option domain-name-servers 8.8.8.8, 1.1.1.1, 208.67.222.222; option domain-name "srv22.vps-server.ru"; option routers 10.10.10.254; default-lease-time 120; max-lease-time 600; } host VM0 {hardware ethernet 02:00:00:01:01:5b; fixed-address 192.168.246.170; } host VM1 {hardware ethernet 02:00:00:01:01:ef; fixed-address 192.168.246.171; } # |
Обращаю пристальное внимание, на то, что для каждого дополнительного IP address нужно указать MAC. Конечно же, именно этот MAC нужно присвоить виртуалке при её создании. Для примера в конце конфига добавлены две строки виртуальных машин VM0 и VM1.
Необходимо заметить, что ISC-dhcp-server довольно капризная в настройке вещь. И понять по выхлопу лога ненавистного systemd почему оно не взлетает не представляется возможным. Поэтому приходится прибегать при отладке к использованию костылей.
# Запуск isc-dhcpd для отладки конфига: # Для отладки помогает отлично ! /usr/sbin/dhcpd -lf /var/lib/misc/dhcp.leases -cf /etc/dhcp/dhcpd.conf |
После того, как конфиг отлажен и работает, можно убить процесс dhcpd и запустить его в режиме демона:
# Убиваем процессы dhcpd
killall dhcpd -9
/etc/init.d/isc-dhcp-server restart
[ ok ] Restarting isc-dhcp-server (via systemctl): isc-dhcp-server.service.
Отмечу также, что MAC адреса необходимо получить в клиентской панели управления OVH.
Для работы сети с виртуалкой на FreeBSD следует в ней добавить два маршрута:
route add-host GATEWAY_IP/32 -interface em0
route add defaultGATEWAY_IP
Или добавить в /etc/rc.conf следующие строки:
ifconfig_em0="inet FAILOVER_IP netmask 255.255.255.255 broadcast FAILOVER_IP"
static_routes="net1 net2"
route_net1="-net GATEWAY_IP/32 -interface em0"
route_net2="default GATEWAY_IP"
На этом всё. Напоминаю, выделенные серверы в России с безлимитным трафиком и виртуальные серверы с честной виртуализацией KVM в различных локациях лучше всего приобретать в компании vps-server.ru. Эти ребята работают более 15 лет на рынке хостинга, имеют огромный опыт администрирования и эксплуатации серверов.
Внимательным читателям :o) сообщаю промокод со скидкой 30% на весь срок аренды некоторых выделенных серверов этой компании в России — diman-rulit2021