Pomoc Dodanie wpisów do iptables

mackowiakp

Entry Technician
Q Associate
5 Czerwiec 2015
82
6
8
Gdynia
QNAP
TS-x53
Ethernet
1 GbE
W jaki spsób można dodać wpisy do istniejącego zestawu reguł iptables w samym NAS. Chodzi mo o to że mam kilka kontenerów w NAS, wszystkie skonfigurowane jako bridge. Stąd są w tej samej sieci co NAS ale mają inne IP adresy oczywiście.
Chodzi mi o dodanie przekierować port na IP adres.
To dlatego że ma dynamiczne IP z Orange ale oczywiście urządzenie jest zawsze dostępne pod nazwą <moja_domena>.myqnapcloud.com.
I na routerze jeżeli chodzi o dostęp z zewnątrz nie ma problemu ze zrobieniem przekierowania portu na adres/port.

Problem jest jeżeli jestem z tabletem, laptopem czy telefonem gdy jestem w zasięgu domowej sieci LAN. Mam wewnętrzny DNS, z ty że z wewnątrz sieci domowej jeżeli użyję adresu <moja_domena>.myqnapcloud.com:<port> to oczywiście takie wywołanie będzie skierowane do samego NAS`a a nie do jednego z jego kontenerów.
Tak więc chciałbym dodać reguły przekierowań tak, aby jakaś modyfikacja systemu (np. dodanie konenera) nie powodowało nadpisania tych zmian.

Ma ktoś pomysł na rozwiązanie tego problemu.
Od razu piszę że nie chciałbym stosować dodatkowego kontenera z jakimś routerem bo to dublowanie rozwiązania.

Wersja oprogramowania Firmware: 4.4.3.1439
Model serwera: QNAP TS-433A
 
to od początku:
W jaki spsób można dodać wpisy do istniejącego zestawu reguł iptables w samym NAS.
Firewall , nie router.

Chodzi mi o dodanie przekierować port na IP adres.
To robi się na routerze, zakładka przekierowanie portów.

upload_2020-10-3_19-27-28.png


Problem jest jeżeli jestem z tabletem, laptopem czy telefonem gdy jestem w zasięgu domowej sieci LAN. Mam wewnętrzny DNS, z ty że z wewnątrz sieci domowej jeżeli użyję adresu <moja_domena>.myqnapcloud.com:<port> to oczywiście takie wywołanie będzie skierowane do samego NAS`a a nie do jednego z jego kontenerów.

Hairpin-NAT , który musi być wspierany przez router:
upload_2020-10-3_19-28-40.png



Moim zdaniem potrzebujesz reverse proxy - chowasz wszystko za proxy , a ono gada z samymi dockerami
jak już tak moco dockerujesz to poczytaj o traefik.
 
Firewall , nie router.

I/lub firewall + i/lub router + i/lub IP proxy +i/lub STUN + i/lub IP helper + i/lub cokolwiek sterującego ruchem w warstwach 2,3 i 4 równa się iptables. Zawsze. A przynajmniej w zastosowaniach o których piszemy. Zawsze - ale z wyjątkiem QNAP. Ten ze względu na brak odpowiednich modułów w jądrze, nie obsługuje iptables w warstwie 2.

To robi się na routerze, zakładka przekierowanie portów.

Hairpin-NAT , który musi być wspierany przez router:

Wszystkie podane przykłady rozwiązań ale także i inne zawierające np blokady add-serwver`ów opierają się też o iptables. Różnica to GUI, skala implementacji funkcjonalności iptables i źródeł na podstawie których tworzone są reguły. Statycznie, dynamicznie, temporary itp.

W moim przypadku nie ma konieczności mnożenia bytów czy to zewnętrznych w stosunku do NAS czy też w taki czy inny sposób zainstalowanych na nim samym.
Wystarczy bowiem dodanie 5-6 wpisów do istniejącego, domyślnego zestawu statycznych reguł. A jest on spory bo wewnętrzna sieć wirtualna łącząca NAS`a i dockery i LXC to też przecież iptables.
Tak bajwełej, mój główny router to 5G, bo to najszybszy dostępny Internet w mojej lokalizacji. Przekierowania na routerze są oczywiście możliwe (i oczywiście je wykorzystuję) ale dla ruchu przychodzącego z Internetu ale nie wewnątrz LAN. Niestety jego chipset nie jest wspierany przez DD-wrt czy OpenWRT. A to załatwiło by mi sprawę albo w jednym segmencie poprzez spanning-tree lub podzielenie LAN na dwa segmenty IP.

Tak więc może dojdziemy do rozwiązania małymi kroczkami.
Pytanie. Czy wiesz w jakim pliku QNAP trzyma zestaw reguł iptables ładowanych w czasie bootowania?
 
Kurcze, rozwiązanie problemu jest prostsze niż myślałem.
Najpierw backup reguł:

Kod:
iptables-save > /etc/iptables.back

obróbka w skrypcie pliku /etc/iptables.back poprzez dodanie odpowiednich przekierowań i następnie:

Kod:
iptables -F
iptables-restore < /etc/iptables.back

I wszystko.
 
Oczywiście. Operację tą przeprowadzam po zabootowaniu się systemu i załadowaniu wszystkich aplikacji.
Procedura opisana "]Running Your Own Application at Startup - QNAPedia", jest stosowana przeze mnie od lat.
W moim przypadku zawiera ona tylko jeden dodatkowy wpis. Tzn uruchomienie skryptu /share/homes/media/Pobrane/start_auto. I tam wpisuję wszystko co trzeba.
Jednak "Running Your Own Application at Startup" wykonuje się co prawda po załadowaniu systemu ale jeszcze w czasie uruchamiania innych aplikacji. W tym Container Station i VPN, które też modyfikują iptables. Nie mówiąc już o zabootowaniu się Debiana w LXC. Stąd mój skrypt /share/homes/media/Pobrane/start_auto, który "ustawia" różne rzeczy (np sprawdzanie spójności bazy InfluxDB w dockerze), czeka w swojej części aż całkowicie załadowane zostaną wszystkie aplikacje i zabootoje się Debian.