Routing di rete e problema di port forwarding
Ho 2 reti (grafico nel link sotto)
A: 10.0.0.0/24
B: 192.168.1.0/24
Nella rete A, tutti i dispositivi sono collegati tramite uno switch. Alcuni dispositivi forniscono determinati servizi come ssh o l'accesso a un server di database.
Compter (PC1) ha un sistema operativo Ubuntu 20. Mi piacerebbe restare con quel sistema.
Il computer sulla rete A (PC1) può connettersi alla rete B tramite Wi-Fi e con la rete A tramite ethernet. Vorrei poter accedere ad alcuni servizi (dalla rete A) dalla rete B attraverso un indirizzo su porte specifiche. Il resto dei servizi dalla rete non dovrebbe essere disponibile.
I miei tentativi di utilizzare DNAT e SNAT sono falliti. Avevo accesso al computer che stava impostando nat ma altri dispositivi non ricevevano pacchetti
"Il port forwarding è abilitato"
PC1 ha indirizzo:
A) 172.17.10.2
B) 192.168.1.196
sudo iptables -t nat -A PREROUTING -d 192.168.1.196 -j DNAT --to-destination 172.17.10.2
sudo iptables -t nat -A POSTROUTING -s 172.17.10.2 -j SNAT --to-source 192.168.1.196
Penso che dovrei usare il gateway per la rete A che viene instradata alla rete B ma non ho idea di come raggiungere questo obiettivo.
grafico di rete
Risposte
Credo che quello che stai cercando di ottenere sia avere PC1, che esegue Ubuntu, fornire DNAT (indirizzo di destinazione e cambio porta) per il traffico IP dai client sulla rete B ad alcuni server specifici sulla rete A, e desideri mappare i servizi da questi server a porte specifiche sulla rete B indirizzo IP del PC1. Tuttavia, non si desidera eseguire un routing NAT generico tra la rete A e B o viceversa e non è necessario che il traffico Internet passi tra A e B.
Questo è fondamentalmente chiamato "Port Forwarding" o DNAT, che è una delle funzioni fornite da un generico router NAT domestico che si collocherebbe tra il tuo ISP (singolo indirizzo IP pubblico) e la tua rete locale privata. Ma la tua applicazione non vuole l'altra caratteristica tipica di un router NAT domestico come il server DHCP o il NAT upstream su Internet.
Sei sulla strada giusta per utilizzare le regole del firewall di iptables e abilitare l'inoltro dei pacchetti. La configurazione diretta di iptables è complessa da comprendere , ma la tua esigenza è abbastanza semplice. Sfortunatamente, non ho una ricetta DNAT per iptables per la tua applicazione, ma cercherò i dettagli su quanto segue. Innanzitutto è necessaria una regola per eseguire la mappatura DNAT dalla rete B del PC1: portX al server sulla rete A: portY per ogni servizio che si sta tentando di inoltrare e deve includere il numero di porte utilizzato su entrambi i lati, e la seconda regola è necessaria la direzione inversa del traffico di ritorno dai server di rete A che si basa sullo stato della prima regola (credo che queste siano due regole separate in iptables). La regola DNAT di esempio deve essere modificata in modo che la destinazione DNAT sia l'indirizzo IP del server sulla rete A, non l'indirizzo IP della rete PC1 A. Infine hai bisogno di regole per sovrascrivere qualsiasi regola DROP predefinita che normalmente impedirebbe al traffico da B di raggiungere A, ma solo per il traffico diretto ai tuoi servizi specifici che desideri aprire alla rete B e proveniente localmente sulla rete B.
Piuttosto che scrivere direttamente le regole di iptables, ho avuto fortuna con i programmi di generazione di regole del firewall come Firewall Builder (input grafico) e FireHOL (input basato su testo) , che possono aiutarti a costruire e mantenere regole di routing NAT e Firewall molto complicate.
Spero che questo ti aiuti a trovare una soluzione.