Ok, więc chcę wiedzieć, jak tworzyć sieci w kontenerach LXC. Nie tylko rodzaj niejasnych informacji, które otrzymujesz z innych stron internetowych, ale prawdziwy przewodnik dla początkujących, jak je uruchomić. Ponieważ większość przykładów jest w zasadzie skonfigurowana do testowania przez ludzi, chcę uruchomić usługę na jednym ... jak serwer WWW na przykład.
Używam Ubuntu 12.04 LTS i mam zainstalowany LXC i mogę tworzyć, uruchamiać i zatrzymywać kontener. Mój serwer ma oczywiście publiczny adres IP i chciałbym wiedzieć, jak skonfigurować kontener, aby również mógł mieć publiczny adres IP. Ponieważ wydaje się, że istnieje już mostek z mojego obecnego kontenera, wydaje się, że albo muszę nadać kontenerom zakres DHCP, który jest publiczny, aby działały, albo ręcznie przypisać statyczny adres IP do mojego kontenera.
Jeśli chcę statycznie przypisać adres IP kontenerowi, jak to zrobić? Czy muszę wprowadzić zmiany w konfiguracji mostka na hoście? Czy faktycznie lepiej jest to zrobić z opcją MACVLAN?
Każda pomoc będzie mile widziana.
Odpowiedzi:
Moje podejście zakłada, że twój serwer ma jedną kartę sieciową i musisz udostępnić tę kartę pomiędzy gospodarzem a gośćmi LXC. Wymaga to użycia mostu. Most jest właścicielem i zarządza
eth0
. Host konfiguruje teraz własną siećbr0
zamiasteth0
. Goście LXC są skonfigurowani do łączenia się z mostem.Na gospodarza
sudo apt-get install bridge-utils
.Na hoście zastąp
eth0
mostem:To jest niebezpieczne. Zrozum to źle, a możesz zostać zablokowany na serwerze. Upewnij się, że masz włączone logowanie lokalne i że dostęp do lokalnej konsoli działa, abyś mógł cofnąć tę zmianę, jeśli masz jakiekolwiek problemy.
W
/etc/network/interfaces
:auto eth0
sięauto br0
.Zastąpić:
z:
Jeśli miałeś statyczną konfigurację sieci, zastąpiłbyś:
z:
Jesteś po prostu zmieniając
eth0
zabr0
i dodaniebridge_ports eth0
linię.Uruchom ponownie hosta. Jeśli robisz to lokalnie, to działaj
sudo ifdown eth0
zanim zaczniesz, asudo ifup br0
potem również. Zwróć uwagę, że most może zająć trochę czasu, więc zaczekaj pięć minut po ponownym uruchomieniu, zanim podejmiesz, że wszystko przepadło.Aby przenieść podany kontener LXC do publicznego adresu IP:
/var/lib/lxc/container_name/config
lxc.network.link
br0
./var/lib/lxc/container_name/rootfs/etc/network/interfaces
eth0
z punktu widzenia kontenera.Aby zmienić domyślne dla nowych kontenerów LXC, edytuj
/etc/lxc/default.conf
na hoście i zmieńlxc.network.link
nabr0
.Jeśli nie potrzebujesz wcale mostu NAT dostarczonego przez LXC (tzn. Wszystkie kontenery będą używać nowego mostu), wtedy na hoście edytuj
/etc/default/lxc
i zmieńUSE_LXC_BRIDGE
na"false"
, a następnie na uruchomieniu hostasudo service lxc restart
.źródło
Robie, dziękuję bardzo za opublikowanie tej odpowiedzi, staram się, aby moje włosy się rozluźniły i to była jedyna metoda, która zadziałała!
Pomyślałem, że powinienem wymienić kilka rzeczy, które wymyśliłem, aby pomóc w wyjaśnieniu instrukcji dla innych administratorów.
Mój host miał wiele statycznych aliasów ip przypisanych do eth0 na gościu, na przykład:
Teraz nie chcemy konfigurować br0 w ten sam sposób, chcemy tylko jednego adresu IP bez aliasów takich jak Robie wskazany powyżej.
Powiedzmy, że chcesz przypisać 5.5.5.5 do kontenera debian8.
Edytuj
/var/lib/lxc/debian8/etc/network/interfaces
i dodaj:Następnie wydaj polecenie:
route add default gw <gateway-ip, in my case 5.5.5.1>
Następnie uruchom ponownie pojemnik i wszystko w końcu powinno działać! :)
źródło
Miałem ten sam problem i mam to rozwiązanie (szybkie i brudne).
Na serwerze:
route add -host 194.99.99.99 gw 10.255.255.100 dev lxdbr0
W razie potrzeby dodaj trasę do routerów wysyłających.
Prawdopodobnie nie jest to najlepsze rozwiązanie, ale nie wymaga wielkiego wysiłku! Twoje zdrowie.
źródło