Temat: przekierowanie DNAT ze zmianą adresu źródłowego i z powrotem

Witam, czytam regularnie, pierwszy raz piszę bo nie znajduję rozwiązania

Problem dotyczy modbusa ( chociaż może być cokolwiek innego )
układ komunikacji jest następujący


SCADA                                                                             
                                                                WAN 192.168.252.11           WAN - jakiś apn mobilny                                       
                                                                LAN 192.168.10.52 /24        LAN - 192.168.10.50
192.168.2.200/24  - > ( custom apn ) -> OPENWRT (Teltronika)    -> modbus server (Inventia)   

schemat był prosty - przekierować zapytania z portu 502 z wanu na ip 192.168.10.50 - z początku chodziło, potem przestało
Problem dotyczy Inventii, bo mając zapytanie z poza sieci 192.168.50.0/24 wyrzuca odpowiedź na swoją domyślną bramę
i odpowiedź nigdy nie dociera do SCADY - potrzebny jest customowy ruting na inventii, o który nie mogę się doprosić od 3 miesięcy, a lokalizacja dla mnie jest nieosiągalna ( i w ogóle nie zarządzam tym urządzeniem ).

Czy można to obejść po stronie OpenWRT tzn dla zapytania z wan zmodyfikować adres źródła na wewnętrzny LAN, a odpowiedź przekazać z powrotem do WAN na adres SCADY? - takim mix odwróconego SNAT i DNAT - po lekturze firewalla  wydaje mi się że nie, ale może są jakieś inne sposoby.

Miałby ktoś jakiś pomysł?

J.

2

Odp: przekierowanie DNAT ze zmianą adresu źródłowego i z powrotem

Czym jest sieć 192.168.50.0/24? Jakaś wewnętrzna na tym czym "inventia"? Co będzie jak wan na teltonice przestawisz na jakiś adres z klasy 192.168.50.0/24?

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

3

Odp: przekierowanie DNAT ze zmianą adresu źródłowego i z powrotem

192.168.50.0/24 jest wewnętrzną siecią tej instalacji ( możliwe że w ogóle zakładu ).  OpenWRT w tym układzie pracuje bez DHCP i nie zarządza ruchem w tej sieci. Jest jedynie bramą komunikacyjną dla zapytań od SCADY.

J

4

Odp: przekierowanie DNAT ze zmianą adresu źródłowego i z powrotem

Na OpenWRT mam tekstowego clienta modbusa, działa ok- odpowiedzi przychodzą jeżeli adresem zapytania jest aders z sieci 192.168.50.0/24.

5

Odp: przekierowanie DNAT ze zmianą adresu źródłowego i z powrotem

jacek100noga napisał/a:

...
Czy można to obejść po stronie OpenWRT tzn dla zapytania z wan zmodyfikować adres źródła na wewnętrzny LAN, a odpowiedź przekazać z powrotem do WAN na adres SCADY? - takim mix odwróconego SNAT i DNAT - ...

J.

w zasadzie sam sobie odpowiedziałeś.
Aby zmodyfikować adres  źródła, ale tym razem idąc od strony WAN do LAN to musisz zastosować maskaradę w strefie LAN.
Dodatkowo zrób przekierowanie portu 502 z adresu WAN na IP hosta modbusa w LAN.

W ten sposób, router oprócz przekierowania na adres IP modbus server w LAN, dodatkowo podmieni źródłowy adres IP SCADY na adres Openwrt z sieci LAN 10.x/24 i modbus będzie myślał, że gada z routerem w LAN a nie ze SCADĄ smile
Router wszystkie odpowiedzi odeśle do SCADY na podstawie tablicy połączeń robiąc odwrotną konwersję adresów.

Xiaomi AX3000T @ Netgear R6220
* DVBT2 - T230C *

6

Odp: przekierowanie DNAT ze zmianą adresu źródłowego i z powrotem

no właśnie w tym kierunku myślałem tylko pojawią się dwa pytania:
-jeżeli to DNAT i SNAT to jaka powinna być kolejność reguł w /etc/config/firewall - jeżeli przekierowanie DNAT będzie pierwsze to ruch nie przejdzie przez SNAT, jeżeli SNAT będzie pierwszy nie będzie zmiany adresu docelowego na 10.50

dzisiaj spróbuję popisać te reguły i zobaczę na tcpdump jak wyglądają ten ruch.

7

Odp: przekierowanie DNAT ze zmianą adresu źródłowego i z powrotem

Dziwne pytania zadajesz.
Skoro w routerze masz WAN z domyślnie włączoną maskaradą dla pakietów, które opuszczają router tym interfejsem, to miałeś dodatkowo włączyć maskaradę na porcie LAN żeby pakiety opuszczające router portem LAN do sieci modbusa miały lanowy adres routera.
Przekierowanie portu 502 z WAN do IP modbusa już masz, a więc normalnie powinno działać.
W /etc/config/firewall w strefie LAN miałeś dodać:

option masq 1

To SCADA ma odpytywać modbusa a nie modbus SCADĘ.
Przynajmniej tak jest w rozwiązaniu które widziałem.

Xiaomi AX3000T @ Netgear R6220
* DVBT2 - T230C *