Eksploruję funkcje LXC w Ubuntu 12.04 i naprawdę chcę skonfigurować taką sieć:
client1: 192.168.56.101/24
lxc-host: 192.168.56.102/24
guest1 192.168.56.201/24
guest2 192.168.56.202/24
guest3 192.166.56.203/24
Chcę tylko „płaskiej” sieci, w której goście mają pełny dostęp do sieci LAN i są widoczni dla klientów. Jestem przyzwyczajony do mostkowania sieci z libvirt / KVM, jak opisano tutaj: http://libvirt.org/formatdomain.html#elementsNICSBridge
Na hoście:
# /etc/network/interfaces
auto br0
iface br0 inet static
address 192.168.56.102
netmask 255.255.255.0
broadcast 192.168.56.255
bridge_ports eth1
lxc.conf dla pierwszego gościa:
# /var/lib/lxc/guest1/config:
lxc.network.type=veth
lxc.network.link=br0
lxc.network.flags=up
lxc.network.hwaddr=00:16:3e:13:48:4e
lxc.network.ipv4=192.168.56.201/24
Wygląda na to, że 192.168.56.201 jest niewidoczny dla świata zewnętrznego, czego nie chcę. Wygląda na to, że muszę zrobić jedną z tych rzeczy:
1) Ręcznie skonfiguruj routing na hoście i gościu
2) Zrób coś hokey ... utwórz wirtualne interfejsy na hoście z wyprzedzeniem i skonfiguruj gości, aby z nich korzystali lxc.network.type=phys
. Nie wiem, czy to by faktycznie działało.
Koncentruję się na Ubuntu, ale odpowiedzi na RHEL / Fedora też byłyby przydatne ...
źródło
Odpowiedzi:
Jest to całkiem słuszne - choć brakuje Ci takiej linii:
Mam gościa LXC działającego na Debianie. Najpierw skonfiguruj most hosta (prosty sposób) w
/etc/network/interfaces
:W twoim przypadku tak to nazwałeś
br0
, a ja to nazwałemwan
. Most można nazwać jak chcesz. Najpierw działasz - jeśli się nie powiedzie, zbadaj za pomocą (np.)brctl
Następnie twoja konfiguracja LXC jest skonfigurowana do dołączenia do tego mostu:
Jak zauważa HoverHell, osoba z rootem w kontenerze może zmienić adres IP. Tak. To most (aka przełącznik Ethernet). Jeśli chcesz temu zapobiec, możesz użyć reguł zapory na hoście - przynajmniej w moim przypadku pakiety muszą przejść przez iptables hosta.
źródło
auto
jest to również poprawna wartośćlxc.network.ipv4.gateway
i, o ile rozumiem, domyślnie jest to adres IP mostu, z którym łączy się interfejs veth.wan_phy
jest skierowany do Internetu, wówczas mostkowy adres IP musiałby być kolejnym ważnym, publicznym adresem IPv4, ponieważ musi on znajdować się w tej samej podsieci, co inne publiczne adresy IPv4, z którymi będę konfigurował moich gości lxc, prawda? Ale to wydaje się dość marnotrawstwem. askubuntu.com/a/884293/394569 sugeruje, że konfiguracja adresu mostu nie jest ściśle wymagana.Nie wdałem się w pełni w LXC,
ale skonfigurowałem wiele kontenerów z własnymi statycznymi adresami IP w sieci LAN, które zapewniają usługi internetowe dla niektórych moich stron internetowych ...
Może to może pomóc w tym, czego chcesz dla swojego.
Prowadzę wiele kontenerów, tak jak
NA HOST MACHINE Edytowałem plik hosta, dodając każdy kontener i maszynę hosta: vi / etc / hosts
po zapisaniu ...
Ponownie, na hoście ustawiam sieć i most na:
powyżej sieci jest mój router IP dla LAN. (wewnętrzny) adres i emisja to host, wewnętrzny ip, którego później używam VHOST do dostępu do Internetu, serwerów WWW, ftp itp.
W POJEMNIKACH LXC 1-4 KONFIGURACJA PODOBNIE TAK:
teraz kontener 1 IP = 192.168.1.101
Powtarzam, aby dodatkowe pojemniki miały własne statyczne IP na LAN ..
w pojemniku 1-4
zaloguj się z hosta:
& i ustawiam każdą sieć kontenerów na statyczną, eth0 na:
KAŻDY Z POJEMNIKÓW MA WŁASNY IP, (lokalny) DOSTĘPNY W LAN. MOŻESZ SSH KAŻDY INDYWIDUALNY LOKALNY IP, ABY TESTOWAĆ ZA POMOCĄ PUTTY!
Po tym jestem pewien, że powinieneś dowiedzieć się, jak uruchomić je przez Internet po, na przykład, vhost do kontenera ip / load balancers / proxy / etc ..
Być może ta konfiguracja i tak może pomóc.
źródło
iface
zwrotkę namanual
(niestatic
lubdhcp
).up
,down
,dns-nameservers
Etc mogą być nadal używane w Debianie itpNie grałem jeszcze w LXC, ale ten artykuł powinien ci pomóc: konfiguracja sieci za pomocą mostków Ethernet (sprawdź metodę 2).
Aby dać ci podpowiedź na temat konfiguracji (zakładam, że masz już poprawnie skonfigurowaną br0):
ip link add type veth
brctl addif br0 veth0
ns_exec -nm -- /bin/bash
ip link set veth1 netns PID_OF_LXC_SHELL
źródło