_____ _   _ _    _    ___      _
 / ____| \ | | |  | |  / / |    (_)
| |  __|  \| | |  | | / /| |     _ _ __  _   ___  __
| | |_ | . ` | |  | |/ / | |    | | '_ \| | | \ \/ /
| |__| | |\  | |__| / /  | |____| | | | | |_| |>  <
 \_____|_| \_|\____/_/   |______|_|_| |_|\__,_/_/\_\

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