Port forwarding semplice


19

Sono un po 'in difficoltà mentre provo a configurare un proxy inverso con e un secondo server. La mia idea era di fare in modo che il firewall inoltrasse https al proxy inverso e alla porta 29418 (gerrit ssh) al secondo server. Ora il mio collaboratore IT dice: NON PU!! Entrambe le porte vanno al server 1 o entrambe le porte vanno al server 2.

Ok, come soluzione ho cercato di impostare un port forwarding sul proxy inverso della porta 29418 -> server2: 29418

Dettagli:

  • Server1 IP: 10.0.0.132 e 192.168.10.2 su Ubuntu 12.04.2 LTS
  • Server2 IP: 10.0.0.133 e 192.168.10.3 su Ubuntu 12.04.2 LTS

Ora sia https che la porta 29418 passano dal firewall alla 10.0.0.132, l'IT dice che è l'unico modo. :(

Quindi, per favore, dimmi come inoltrare da 10.0.0.132:29418 -> 192.168.10.3:29418 o 10.0.0.133:29418

Quando lavoro su 10.0.0.132 posso collegarmi sia a 10.0.0.133:29418 che a 192.168.10.3:29418 in modo che le porte siano aperte.

-- Aggiornare --

Il mio iptables -t nat -L è simile al seguente:

root @ dev: / root # iptables -t nat -L
Catena PREROUTING (politica ACCETTO)
destinazione di destinazione opt opt ​​prot
DNAT tcp - ovunque dev.example.com tcp dpt: da 29418 a: 10.0.0.133

Catena INPUT (politica ACCETTA)
destinazione di destinazione opt opt ​​prot

OUTPUT a catena (politica ACCETTA)
destinazione di destinazione opt opt ​​prot

Catena POSTROUTING (politica ACCETTA)
destinazione di destinazione opt opt ​​prot
root @ dev: / root # cat / proc / sys / net / ipv4 / ip_forward
1

Risposte:


32

Nel caso qualcun altro stia cercando un modo che funzioni davvero. Sebbene @HorsePunchKid abbia ragione nel suo suggerimento, ho trovato questa procedura dettagliata che riempie i passaggi mancanti:

http://www.debuntu.org/how-to-redirecting-network-traffic-to-a-new-ip-using-iptables/

In sostanza:

Abilita inoltro IP:

sysctl net.ipv4.ip_forward=1

Aggiungi la tua regola di inoltro (usa nnnn: porta):

iptables -t nat -A PREROUTING -p tcp -d 10.0.0.132 --dport 29418 -j DNAT --to-destination 10.0.0.133:29418

Chiedi a IPtables di Masquerade:

iptables -t nat -A POSTROUTING -j MASQUERADE

E questo è tutto! Ha funzionato per me in ogni caso :)


1
Questa è la migliore risposta che ho trovato su questo argomento.
Victor Piousbox

Connessione persa dal mio contenitore Docker dopo aver utilizzato questa soluzione. Ho dovuto cancellare la regola. La regola funzionava, ma perse tutto il resto del traffico. Non lo consiglio.
Dyin

iptables -t nat -A POSTROUTING -j MASQUERADEOH WOW ... tutto qui, grazie! Ho trascorso ore a cercare web e capire. Questo è così semplice e funziona.
Shrimpwagon

7

Se hai installato iptables su 10.0.0.132, penso che sarà abbastanza semplice:

iptables -t nat -A PREROUTING -j DNAT -d 10.0.0.132 -p tcp --dport 29418 --to 10.0.0.133

Questo dice di inviare il traffico in arrivo a 10.0.0.132 sulla porta 29418 oltre a 10.0.0.133 invece, sulla stessa porta, prima di qualsiasi altro routing che 10.0.0.132 potrebbe provare a fare. Se si esegue questo comando e si riscontrano problemi con esso, sostituire il flag -A con -D per rimuoverlo.

Se stai cercando di far eseguire questa regola automaticamente all'avvio di 10.0.0.132, considera di aggiungere il comando sopra come regola di "post-up" in / etc / network / interfaces.


È esattamente quello che ho fatto ma non ha funzionato. Ho decommentato net.ipv4.ip_forward = 1 in /etc/sysctl.conf ma ho ancora errori di connessione a 10.0.0.132:29418
sblocco

6

Se qualcuno è alla ricerca di un metodo temporaneo, prova la soluzione seguente.

    ssh -L 192.168.0.10:8080:10.0.0.10:80 root@10.0.0.10

Il comando precedente reindirizza tutte le connessioni alla porta 8080 sulla macchina base su 80 porte della macchina virtuale. Puoi testare il funzionamento accedendo alla pagina web http://192.168.0.10:8080 e ti mostrerà la pagina web sul computer guest.

Questo vale per tutte le porte :)


0

Alla fine ho dovuto installare pfSense come router all'interno del mio server ESXi per instradare il traffico verso le diverse VM in quanto non riuscivo a farlo funzionare su Ubuntu.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.