Przekierowanie portów do kontenerów LXD
Gdzieś w tej kategorii znajduje się materiał odnośnie instalacji i inicjalizacji środowiska kontenerów LXD/LXC. Kiedy już nacieszyliśmy się tymi kontenerami, to czas zagonić je do pracy. Jak pamiętamy z wyżej wymienionego materiału podczas konfiguracji umożliwiliśmy komunikacje z Internetem oraz siecią lokalną serwera hostującego przez NAT. Stan komunikacji wygląda na taki jak że kontenery mogą komunikować z kim kolwiek, a z nimi nikt poza serwerem hostującym. A jeśli mają one dla nas hostować jakieś usługi to musimy mieć możliwość połączenia się z nimi. NAT w przypadku opartych na Debianie dystrybucji jest realizowany przez iptables. Warto zauważyć, że wewnątrz serwera hostującego zrobiła się taka mikrosieć, gdzie nasz interfejs mostu jest tym interfejsem wewnętrzny a główny interfejs sieciowy serwera, interfejsem zewnętrznym. Czyli aby nasze kontenery mogły świadczyć usługi w Internecie trzeba dopuścić do nich ruch na wybranych portach, tak jakby było serwerami w klasycznej sieci lokalnej. Dowiadując się z tego materiału jak przekierować porty z interfejsu serwera do poszczególnych kontenerów, będziemy wiedzieć jak przekierować porty z interfejsu zewnętrzego naszej sieci do konkretnych serwerów, oczywiście o ile w naszej sieci wykorzystujemy bramkę opartą o iptables.
# iptables -t nat -I PREROUTING -i enp1s0 -p tcp -d 192.168.1.6 --dport 80 -j DNAT --to-destination 192.168.56.2:80
W tablicy nat
, w łańcuchu PREROUTING
wstawiliśmy regułę, która przekieruje wszystkie pakiety, zaadresowane do naszego serwera kontenerów na porcie 80
do kontenera o adresie 192.168.56.2
na port 80
, za pomocą DNAT - zamiany adresu docelowego, w tym przypadku z adresu serwera na adres kontenera.
Za pomocą pojedyńczego polecenia umożliwiliśmy połączenie dowolnego komputera w sieci z serwerem WWW uruchomionym na naszym kontenerze. Aby dostosować tę regułę do "port forwardingu" w naszej sieci opartej o bramkę z GNU/Linux-em, wystartczy zmienić interfejs i adresy, ewentualnie porty i protokół jeśli chcemy wypuścić coś innego niż HTTP.
~xf0r3m