Wirtualna Sieć Linuxów – podejście 1
Sytuacja przedstawia się następująco. W większości małych firm z branży ISP mamy serwerownię składającą się zazwyczaj z routera (zwanego dalej R1), który miesza łączem (łączami) w świat, serwer hostingowy (zwany dalej S1) oraz router który udostępnia sieć klientom (zwany dalej R2). Zatem trzy maszyny. Padł pomysł aby wsadzić je wszystkie trzy do jednej, odpalić i przetestować. W obroty poszedł znany już i lubiany Proxmox, na którym powstały 3 wirtualne serwery zarządzane poprzez moduł KVM jądra.
Należało przyjąć pewne założenia:
- Połączenia między wirtualnymi routerami realizowane są w bridżach (np. przejście z jednego do drugiego)
- Połączenia "na zewnątrz" (np. ze switchem) realizowane są za pomocą vlan-ów z powodu braku dużej ilości interfejsów fizycznych serwera
- Vlan-y są podpięte do bridżów, obsługiwanych przez Proxmoxa
- Posiadamy switcha, który umożliwia uruchomienia łącza trunkowego najlepiej po interfejsie gigabitowym
Utworzono trzy bridże (z poziomu /etc/network/interfaces) opisane poniżej:
vmbr1)
- vlan1
- funkcja WAN do ISP
vmbr2)
- vlan2
- funkcja "szkieletu serwerów"
vmbr3)
- vlan3
- funkcja LAN
Załóżmy że od ISP posiadamy PUBLIC_IP, przez który została przeroutowana PUBLIC_NET/24. Podzieliliśmy PUBLIC_NET/24 na dwie podsieci CORE_NET/25 i PUBLIC_LAN/25. Dodatkowo mamy lokalna podsieć powiedzmy LOCAL_LAN/24. Postawiono trzy wirtualne maszyny "Fully Virtualized (KVM)", których konfiguracja interfejsów wygląda następująco:
R1)
- eth0: PUBLIC_IP - interfejs WAN czyli do naszego ISP (zapięty do vmbr1)
- eth1: IP z sieci CORE_NET/25 - interfejs wewnętrznej sieci szkieletowej (zapięty do vmbr2)
- default route via eth0
R2)
- eth0: IP z sieci CORE_NET/25 - interfejs WAN routera podłączony do "szkieletu serwerów", na który będzie natowany LAN z eth1 (zapięty do vmbr2)
- eth1: IP z sieci PUBLIC_LAN/25 oraz IP z sieci LOCAL_LAN/24 - interfejs LAN routera (zapięty do vmbr3)
- default route via eth0
S1)
- eth0: IP z sieci CORE_NET/25 - interfejs serwera hostingowego podłączony do "szkieletu serwerów" (zapięty do vmbr2)
- default route via eth0
Odpalono to wszystko. Działa w sensie sieć funkcjonuje prawidłowo (pingi, trace i takie tam). Kolejny etap polegać będzie na testach tego w rzeczywistej sieci. Dodatkowo na R2 zamontowano paczki z projektu rabbit (iptables + iproute + jajo). Pierwsze wrażenia opisane poniżej:
- iptables sypie ostrzeżeniami przy negacji reguł (czyli przy używaniu "!")
- zauważyliśmy, że wirtualne maszyny lubią czasem przestać odpowiadać - jakby bridże się sypały, pomaga oczywiście nieśmiertelny reboot wirtualek
ToDo:
- sprawdzić wtf z iptables, ewentualnie cofnąć projekt rabbit do wcześniejszej wersji
- rozwiązać problem z bridżami - wiemy już, że nie zależy to od wersji Proxa (na 1.1 czyli debian eth i 1.3 czyli debian lenny jest to samo)
Szczegóły wkrótce. BRB