Zapewne znajdą się osoby, które mają serwer dedykowany z Proxmoxem w OVH i wykupiły dodatkowe adresy IP żeby podpiąć pod wirtualne maszyny (czyli odpowiednio skonfigurować karty sieciowe). Problem w tym, że dokumentacja w OVH czy na wiki Proxmoxa może nie być do końca jasna jak to zrobić. Poniżej przykład jak podpiąć nowy adres IP do wirtualnej maszyny (opis dotyczy pełnej wirtualizacji, podpięcie IP do kontenera jest opisane na wiki Proxmoxa https://pve.proxmox.com/wiki/OVH#IPv4 )
Poniżej opis, który przedstawia jak to zrobić w systemie Debian 9 oraz CentOS 7.
Przygotowanie
Podpięcie IP failover jako głównego IP w wirtualnej maszynie polega na wcześniejszym wygenerowaniu adresu MAC w panelu OVH w sekcji IP serwera dedykowanego (każde IP musi mieć wygenerowany swój MAC) i przypisaniu go do karty sieciowej wirtualnej maszyny w panelu Proxmoxa (zakładka hardware w wybranej wirtualnej maszynie).
Sterownik najlepiej ustawić na VirtIO, w polu MAC address wpisujemy to co zostało wygenerowane przez OVH. Bridge ustawiamy na vmbr0, klikamy OK i restartujemy wirtualną maszynę.
Podpięcie IP failover w systemie Debian
Po restarcie wirtualnej maszyny edytujemy plik interfejsów czyli /etc/network/interfaces (warto wcześniej sprawdzić nazwy kart poleceniem ifconfig ponieważ nazwa np. eth będzie w Debianie 8, a w Debianie 9 będzie to już oznaczenie ens. Każdy musi skonfigurować interfejs zgodny z tym, który jest w systemie) i uzupełniamy jak poniżej:
auto ens18 allow-hotplug ens18 address xxx.xxx.xxx.xxx netmask 255.255.255.255 post-up ip route add xxx.xxx.xxx.254 dev ens18 post-up ip route add default via xxx.xxx.xxx.254 pre-down ip route del xxx.xxx.xxx.254 dev ens18 pre-down ip route del default via xxx.xxx.xxx.254
Zamiast xxx.xxx.xxx.xxx wpisujemy przydzielony IP failover i nie podajemy gateway ponieważ system zapewne go nie przyjmie. Wprowadzamy natomiast komendami post-up ip route routing przez bramę, którą jest nasze IP failover z końcówką 254 czyli na przykładzie mam IP failover 100.123.100.123 to bramą jest 100.123.100.254 (wszystko to jest opisane w emailu od OVH, w którym jest podane jakie IP należy ustawić jeżeli wykorzystujemy całą pulę oraz jakie jeżeli konfigurujemy vrack).
Gotowy przykład
auto ens18 allow-hotplug ens18 address 100.123.100.123 netmask 255.255.255.255 post-up ip route add 100.123.100.254 dev ens18 post-up ip route add default via 100.123.100.254 pre-down ip route del 100.123.100.254 dev ens18 pre-down ip route del default via 100.123.100.254
Po skonfigurowaniu karty sieciowej zapisujemy plik i restartujemy kartę lub cały system (jak kto woli).
Co ciekawe pod Debianem podanie w konfiguracji interfejsu wartości gateway i wpisaniu bramy z końcówka 254 powoduje problemy z nieosiągalnością sieci, ale jak podamy np. bramę, która jest w emailu opisana przy konfiguracji vrack to już jest OK. Taka ciekawostka 😉 Dlatego tego pola nie ma w tym przypadku (bo nie ustawiamy VRack) i wykorzystujemy post-up ip route ze wskazaniem bramy. Po takim ustawieniu Debian normalnie funkcjonuje i ruch wchodzi/wychodzi przez podpięte IP/wskazaną bramę.
Podpięcie IP failover w systemie CentOS 7
W CentOS 7 natomiast wprowadzenie konfiguracji jak poniżej nie powoduje żadnych problemów i wszystko działa. Nie są potrzebne regułki post-up ip route (przynajmniej na żadnej maszynie z CentOS 7 nie musiałem czegoś takiego dodatkowo konfigurować).
Edytujemy plik wybranej karty sieciowej znajdujący się w /etc/sysconfig/network-scripts/
W moim przypadku to jest ifcfg-eth0
TYPE="Ethernet" PROXY_METHOD="none" BROWSER_ONLY="no" BOOTPROTO="none" DEFROUTE="yes" IPV4_FAILURE_FATAL="no" IPV6INIT="yes" IPV6_AUTOCONF="yes" IPV6_DEFROUTE="yes" IPV6_FAILURE_FATAL="no" IPV6_ADDR_GEN_MODE="stable-privacy" NAME="eth0" UUID="ce526bba-615c-488e-989f-e34f4f790317" DEVICE="eth0" ONBOOT="yes" IPADDR="xxx.xxx.xxx.xxx" PREFIX="32" GATEWAY="xxx.xxx.xxx.254" DNS1="208.67.222.222" DNS2="8.8.8.8" IPV6_PRIVACY="no" ZONE=public
Zamiast xxx.xxx.xxx.xxx podajemy IP failover, a w bramie nasze IP failover, ale z końcówką 254.
Jeżeli ktoś dodaje nowy interfejs i potrzebuje UUID to może go wygenerować komendą uuidgen. Przykładowo:
uuidgen eth0
po czym wkleić go w pole UUID w konfiguracji.
Poradnik jest ok, tylko wkradł się mały błąd. W adsress podajemy IP-failover ale w miejscach routingu wpisujemy IP głównego hosta z końcówką 254. Inaczej taka konfiguracja nie zadziała.
auto ens18
iface ens18 inet static
address 100.123.100.123
netmask 255.255.255.255
post-up ip route add 4.3.2.254 dev ens18
post-up ip route add default via 4.3.2.254
pre-down ip route del default via 4.3.2.254
pre-down ip route del 4.3.2.254 dev ens18
Warto też dopisać inforamcje o dodaniu wpisu do pliku:
/etc/resolv.conf
####
nameserver 213.186.33.99
Z tego co pamiętam to absolutnie tutaj nie ma żadnego błędu i konfiguracja jest w 100% poprawna oraz działająca. Przede wszystkim routing nie idzie przez IP głównego hosta tylko przez bramę OVH, której IP OVH wysyła w emailu z informacjami dotyczącymi IP Failover (jest to końcówka 254 w puli IP Failover). IP Failover wychodzi przez bramę podaną przez OVH, a nie przez końcówkę 254 z IP głównego hosta, bo Failover ma swoją bramę. Z resztą OVH podaje jaką bramę użyć do IP Failover.
Opisana tutaj konfiguracja działa w 100% i jest poprawna oraz zgodna z tym co podaje OVH. Skonfigurowałem tak wiele maszyn (Linux Debian, Centos itd.) na serwerach dedykowanych dzierżawionych w DC OVH i wszystko do dzisiaj działa poprawnie. W tym wykonywane migracje pomiędzy maszynami nie stanowią żadnego problemu.
W wiadomości/emailu od OVH dokładnie podane są adresy IP, które należy użyć do konfiguracji (adres IP Failover oraz adres IP bramy). W razie wątpliwości na stronie OVH jest także opisane pomoc jak to należy skonfigurować w tym także dla Proxmoxa.