Puncte:0

Portul NAT către nodul intern

drapel ru
bas

Lucrăm cu un PLC (phoenix plc next) care se conectează la o rețea profinet (și profibus). Din cauza lipsei de instrumente și a faptului că nu putem reconecta lucrurile la nevoile noastre (PLC-ul este integrat în mașina noastră), căutăm diferite modalități de a ajunge la un server web https pe masterul profibus.

Deci, de la o oarecare distanță, avem un computer Windows. Acest PC este conectat printr-un comutator la un PLC. Acest PLC rulează pe o distribuție Linux. PLC-ul este conectat la profinet master și profibus master.

  • WinPC (192.168.192.200)
  • PLC extern nic (192.168.192.202)
  • PLC intern nic (192.168.2.2)
  • Master Profinet (192.168.2.3)
  • Master Profibus (192.168.2.4)

Ce ar fi absolut genial, dacă am fi capabili să deschidem un browser web pe computerul Windows și să ne conectăm la profibus master (unde PLC-ul ar fi pur și simplu NAT pachetele la profibus master).

Am acces root pe PLC, așa că m-am gândit că aș putea gestiona acest lucru folosind iptables. Deoarece nu ne pasă de securitate, am setat toate politicile să accepte (INPUT, OUTPUT, FORWARD). Singurul pas pe care trebuie să îl fac apoi (naiv eu...) este NAT-ul pachetului către destinație. Din pacate nu functioneaza.

ieșirea mea curentă de iptables -S

root@axcf3152:/opt/plcnext/# iptables -S
-P ACCEPT INTRARE
-P ACCEPTAȚI ÎNTÂMPRE
-P ACCEPT IEȘIRE

și masa mea de nat

root@axcf3152:/opt/plcnext/# iptables -t nat -L
PRERUUTARE în lanț (politica ACCEPTĂ)
target prot opt ​​sursă destinație
DNAT icmp -- oriunde oriunde la:192.168.2.4
DNAT tcp -- oriunde oriunde tcp dpt:6666 la:192.168.2.4:443
DNAT tcp -- oriunde oriunde tcp dpt:5555 la:192.168.2.3:443
DNAT tcp -- oriunde oriunde tcp dpt:4444 la:192.168.2.3:80
DNAT tcp -- oriunde oriunde tcp dpt:3333 la:192.168.2.4:80
DNAT tcp -- oriunde oriunde tcp dpt:6666 la:192.168.2.4:443

Deci, practic, tot ce am făcut în afară de a seta toate politicile pentru ACCEPT a fost să adaug câteva reguli pentru nat:

iptables -t nat -A PREROUTING -p tcp --dport 6666 -j DNAT --to-destination 192.168.2.4:443

Și apoi pentru ambele arome (http (80), https (443)), și pentru ambele profinet master (192.168.2.3) și profibus master (192.168.2.4)

Dacă înțeleg tot ce am citit despre iptables în această seară, nu trebuie să mă obosesc să adaug reguli pentru tabelul de filtrare „FORWARD”, deoarece accept totul (super nesigur, dar nu ne pasă de această configurare de testare).

Singurul lucru despre care nu sunt sigur, este dacă (sau când) trebuie să mă ocup de POSTROUTING.

Oricum, când deschid pagina web https://192.168.192.202:6666 sau oricare dintre aromele sale, pagina nu se poate încărca (conexiune refuzată).

Orice ajutor ar fi foarte apreciat!!

ACTUALIZAȚI:

Emiterea următoarelor comenzi permiteți-mi să dau ping la masterul profibus (CRED)

iptables -A INPUT -p icmp --icmp-type echo-request -j REJECT
iptables -t nat -A PREROUTING -p icmp -j DNAT --to-destination 192.168.2.4
iptables -t filter -A FORWARD -p icmp -d 192.168.2.4 -j ACCEPT
iptables -t nat -A POSTROUTING -j MASQUERADE

când acum dau ping pe computerul Windows la 192.168.192.202 primesc răspunsuri. Îl văd și pe iptables -t nat -L -v măriți statisticile acestei reguli (#pachete + octeți cresc când trimit comenzi ping noi).

Cred că acest lucru demonstrează că maestrul profinet răspunde la ping (din moment ce resping icmp pe PLC însuși acum)

Întrebări:

  • Am nevoie de regula FORWARD? Sau presupunerea mea a fost corectă că permit totul și această regulă este redundantă?
  • Trebuie să adaug MASQUARADE? Încă îmi este greu să înțeleg ce face asta de fapt (la fel ca multe altele se pare după numărul de întrebări care există pe web)
  • Lipsește ceva din experimentul meu iptables care ar explica de ce https nu este redirecționat? Sau totul arată bine și problema ar fi în masterul profibus real (nu găzduiește serverul web acolo, așa cum susține furnizorul, de ex.)

UPDATE2:

Regula icmp funcționează din când în când. Când șterg toate regulile din iptables și încerc să reproduc pașii, nu funcționează întotdeauna. iptables este mai greu decât am crezut că ar fi...

Brennen Smith avatar
drapel nz
Ați activat redirecționarea IPv4 în nucleu? Este dezactivat implicit: Adăugați linia: `net.ipv4.ip_forward=1` la `/etc/sysctl.conf` și apoi reîncărcați cu `sysctl -p`. Regula ICMP DNAT funcționează în prezent?
drapel ru
bas
@BrennenSmith Am făcut așa cum ai sugerat. Destul de sigur că a fost dezactivat. Am decomentat `#net/ipv4/ip_forward=1` și am reîncărcat cu `sysctl -p`. Acesta scoate (printre alte setări) `net.ipv4.ip_forward=1`. De asemenea, mi-am actualizat întrebarea cu niște „dovezi”, cred că icmp este transmis corect.Încă nu reușesc să primească solicitările https
djdomi avatar
drapel za
Nu sunt sigur de ce nu doriți să utilizați nginx ca proxy invers în loc să expuneți serviciul server?
drapel ru
bas
@djdomi poți elobora dacă există o modalitate mai ușoară de a realiza acest lucru?
djdomi avatar
drapel za
dacă am înțeles întrebarea, tot ce folosești este un server web care se află undeva în rețea și vrei să-l folosești printr-un loc accesibil extern. acesta este o modalitate obișnuită de a utiliza nginx ca proxy invers

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.