# Redizione

## Sym

Esiste un software per redirigere una chiamata su una porta su un'altro indirizzo ip? (un discorso simile alla direttiva Redirect di apache, non parlo di un dnat sulla rete interna). Ciao ragazzi   :Very Happy: 

----------

## BlueRaven

Sinceramente, non ho ben capito se quel che vuoi fare va fatto a livello di una particolare applicazione (come nel caso del redirect di Apache) o se va fatto, genericamente, per ogni chiamata su quella porta.  :Rolling Eyes: 

In quest'ultimo caso, tieni presente che il DNAT non è obbligatorio farlo sulla rete interna, lo puoi fare verso qualunque macchina.

A suo tempo, l'ho usato per spostare in modo completamente trasparente un intero server da un ISP ad un altro, usando un "muletto" che risparava tutte le richieste sul vecchio IP verso il nuovo.  :Cool: 

----------

## Sym

 *BlueRaven wrote:*   

> 
> 
> In quest'ultimo caso, tieni presente che il DNAT non è obbligatorio farlo sulla rete interna, lo puoi fare verso qualunque macchina.
> 
> 

 

Questa non la sapevo, grazie mille, ora faccio qualche prova   :Very Happy: 

----------

## Panda

 *Sym wrote:*   

> Esiste un software per redirigere una chiamata su una porta su un'altro indirizzo ip? (un discorso simile alla direttiva Redirect di apache, non parlo di un dnat sulla rete interna). Ciao ragazzi  

 

Per ovviare al problema che dici tu (nel frattempo che imparo IPtables) io ho usato rinetd.

```
0.0.0.0 80 192.168.11.3 80
```

ad esempio con questa riga nel suo file di conf redirige tutto il traffico della porta 80 della macchina su cui gira alla porta 80 di 192.168.11.3.

bye

----------

## Sym

Ma se non sbaglio rinetd redirige solo su una rete interna, o no?

----------

## Kernel78

Riesumo questa discussione perchè non sono riuscito a trovare ne una soluzione ne una discussione più recente ...

Mi servirebbe un modo per redirigere il traffico che mi arriva su una porta X verso una porta Y di un'altra macchina.

Se serve iptables mi direste anche quali moduli del kernel dovrei abilitare (per ora non è ne installato ne configurato il kernel).

Grazie.

----------

## comio

 *Kernel78 wrote:*   

> Riesumo questa discussione perchè non sono riuscito a trovare ne una soluzione ne una discussione più recente ...
> 
> Mi servirebbe un modo per redirigere il traffico che mi arriva su una porta X verso una porta Y di un'altra macchina.
> 
> Se serve iptables mi direste anche quali moduli del kernel dovrei abilitare (per ora non è ne installato ne configurato il kernel).
> ...

 

ciao, puoi usare il target DNAT di iptables con qualcosa del genere:

```

iptables -A PREROUTING --dport PortaX -d IPDELLAMACCHINA -j DNAT --to-destination IPDELLASECONDAMACCHINA:PortaY

```

ciao

----------

## makoomba

Moved from Forum italiano (Italian) to Forum di discussione italiano.

----------

## Kernel78

 *comio wrote:*   

> ciao, puoi usare il target DNAT di iptables con qualcosa del genere:
> 
> ```
> 
> iptables -A PREROUTING --dport PortaX -d IPDELLAMACCHINA -j DNAT --to-destination IPDELLASECONDAMACCHINA:PortaY
> ...

 

Grazie per la risposta supersonica, purtroppo il comando (ovviamento l'ho parametrizzato correttamente) mi da errore 

```
iptables v1.3.5: Unknown arg `--dport'
```

 presumo che manchi qualche modulo del kernel ma non ho idea di quale ...

Se ti serve che posti qualche estratto dal .config del kernel dimmi cosa ti può essere utile per aiutarmi.

Una curiosità, sulla macchina in questione ho un ip dinamico quindi l'opzione 

```
-d IPDELLAMACCHINA
```

 mi creerebbe un po' di problemi, posso toglierla o mi consigli di modificare dinamicamente la regola ogni volta che cambia il mio ip ?

----------

## makoomba

 *Kernel78 wrote:*   

> 
> 
> ```
> iptables v1.3.5: Unknown arg `--dport'
> ```
> ...

 

aggiungi alla regola

```
-p tcp
```

se la macchina non è un gateway, l'ip non è obbligatorio.

edit:

non serve l'ip anche se non hai altri server nella lan in ascolto su portaX

----------

## Kernel78

```
# iptables -A PREROUTING --dport zz -j DNAT --to-destination xxx.xxx.xxx.xxx:yy -p tcp

iptables v1.3.5: Unknown arg `--dport'
```

 :Crying or Very sad: 

----------

## makoomba

scusa, metti "-p tcp" prima di "--dport"

----------

## Kernel78

 *makoomba wrote:*   

> scusa, metti "-p tcp" prima di "--dport"

 

Scusa tu ma sono proprio ignorante in materia ...

Adesso il problema è diverso ...

```
# iptables -A PREROUTING -p tcp --dport zz -j DNAT --to-destination xxx.xxx.xxx.xxx:yy

FATAL: Module ip_tables not found.

iptables v1.3.5: can't initialize iptables table `filter': iptables who? (do you need to insmod?)

Perhaps iptables or your kernel needs to be upgraded.
```

Per completezza vi dico che iptables è la versione 1.3.5-r1 e il kernel è il 2.6.16-r13 e l'ho compilato a manina cercando di mettere il minimo indispensabile quindi sono quasi sicuro di non aver abilitato i moduli per iptables (anche perchè non ho la più pallida idea di quali siano).

----------

## makoomba

 *Kernel78 wrote:*   

> 
> 
> ```
> FATAL: Module ip_tables not found.
> ```
> ...

 

ecco, adesso è un problema di kernel.

per far presto, configura come moduli tutte le voci in

```
Core Netfilter Configuration  --->

IP: Netfilter Configuration  --->

```

quelle "inutili" le puoi disabilitare successivamente

----------

## Kernel78

Ok, ricompilo e torno ...

----------

## Kernel78

Mamma mia se è lento a compilare il kernel (poveraccio è un p3 con 256 mb di ram e due sessioni di kde aperte).

Adesso l'errore che mi da è questo 

```
iptables: No chain/target/match by that name
```

----------

## makoomba

posta

```
gzcat /proc/config.gz | grep -i nat

lsmod
```

----------

## comio

 *Kernel78 wrote:*   

> 
> 
> ```
> # iptables -A PREROUTING --dport zz -j DNAT --to-destination xxx.xxx.xxx.xxx:yy -p tcp
> 
> ...

 

ops scusa la regola esatta è:

```
# iptables -A PREROUTING -p tcp --dport zz -j DNAT --to-destination xxx.xxx.xxx.xxx:yy

```

ho bisogno di ferie! inizio a perder colpi!

ciao

----------

## Kernel78

 *makoomba wrote:*   

> posta
> 
> ```
> gzcat /proc/config.gz | grep -i nat
> 
> ...

 

```
# gzcat /proc/config.gz | grep -i nat

CONFIG_IP_NF_NAT=m

CONFIG_IP_NF_NAT_NEEDED=y

CONFIG_IP_NF_NAT_SNMP_BASIC=m

CONFIG_IP_NF_NAT_IRC=m

CONFIG_IP_NF_NAT_FTP=m

CONFIG_IP_NF_NAT_TFTP=m

CONFIG_IP_NF_NAT_AMANDA=m

CONFIG_IP_NF_NAT_PPTP=m

# CONFIG_NATSEMI is not set

# Native Language Support

# lsmod

Module                  Size  Used by

iptable_filter          2016  0

ip_tables               9784  1 iptable_filter

x_tables                8804  1 ip_tables

snd_es1968             21284  0

snd_mpu401_uart         5280  1 snd_es1968

snd_rawmidi            17856  1 snd_mpu401_uart

yenta_socket           20844  3

rsrc_nonstatic          9888  1 yenta_socket
```

Spero possano aiutarti ad aiutarmi  :Wink: 

----------

## makoomba

dai

```
modprobe iptable_nat
```

e riprova la regola DNAT

----------

## Kernel78

 *makoomba wrote:*   

> dai
> 
> ```
> modprobe iptable_nat
> ```
> ...

 

fatto e continuo ad ottenere lo stesso errore di prima ...

----------

## makoomba

ok, allora rilancio con

```
depmod -a
```

poi posta l'output di 

```
strace -fe open iptables -A PREROUTING etc,etc

lsmod

```

se non hai strace, emergilo

----------

## comio

```
iptables -t nat -A PREROUTING -p tcp --dport zz -j DNAT --to-destination xxx.xxx.xxx.xxx:yy

```

digita questo... oggi non è proprio giornata!

ciao

luigi

----------

## makoomba

 *comio wrote:*   

> 
> 
> ```
> iptables -t nat -A PREROUTING -p tcp --dport zz -j DNAT --to-destination xxx.xxx.xxx.xxx:yy
> ```
> ...

 

siamo in due, il "-t nat" era sfuggito pure a me....

----------

## Kernel78

Ok, con -t nat non da alcun errore ...

Adesso aspetto di essere al lavoro per vedere se ho altri problemi o se funziona tutto  :Wink: 

Per adesso cmq grazie mille a tutti e due.

/EDIT: intanto rilancio con un'altra domanda: se l'ip di destinazione fosse dinamico potrei usare il nome dell'host o dovrei usare qualche gabola ?

----------

## Kernel78

Non funziona ... o perlomeno non succede quello che mi sarei aspettato  :Sad: 

Provo a descrivervi la mia situazione così potete darmi un consiglio conoscendo meglio la situazione....

C'è un server (che non posso controllare) con un servizio compatibile con telnet (su una porta alta) a cui ho accesso ma dall'ufficio hanno un cavolo di firewall che blocca l'accesso alle porte non standard.

Io pensavo che mi bastasse impostare il pc di casa con quella regola per potermi collegare con telnet dall'ufficio verso il mio pc (sulla porta ufficiale, tanto telent non lo uso e quella porta era libera) e venir reindirizzato verso il server che mi interessa.

Purtroppo qualcosa non funziona (direi a causa della mia scarsa e lacunosa conoscenza delle reti) e anche dopo aver inserito quella regola (e solo quella) nel firewall del mio pc quando faccio il telnet dall'ufficio puntando verso casa mia rimane appeso (anche ctrl-c non funziona e devo chiudere il terminale).

Cosa ho tralasciato ? In che modo posso raggiungere i miei obiettivi ?

----------

## .:deadhead:.

```
cat /proc/sys/net/ipv4/ip_forward
```

che cosa restituisce?

----------

## Kernel78

 *.:deadhead:. wrote:*   

> 
> 
> ```
> cat /proc/sys/net/ipv4/ip_forward
> ```
> ...

 

0, ma anche impostando a 1 il risultato non cambia ...

Informazione aggiuntiva (non ho idea se serva o meno) il pc dell'ufficio si trova nella rete fastweb (mamma mia quanto la odio), potrebbe creare problemi ?

----------

## comio

 *Kernel78 wrote:*   

> 
> 
> Informazione aggiuntiva (non ho idea se serva o meno) il pc dell'ufficio si trova nella rete fastweb (mamma mia quanto la odio), potrebbe creare problemi ?

 

è sicuro che la porta non sia filtrata? Fastweb non dovrebbe darti problemi, dato che cose simili le faccio ogni giorno.

Allora, l'ideale sarebbe mettersi con uno sniffer sul pc di casa e vedere cosa succede sulle porte. Potresti usare tcpdump e registrare le connessioni.

La regola di DNAT dovrebbe essere quella, ma ti chiederei di postare tutta la configurazione iptables (usa iptables-save).

Nella peggiore delle ipotesi, io farei una vpn verso la tua macchina (openvpn) e metterei un bel MASQUERADE nell'iptables... e passa la paura.

luigi

----------

## Kernel78

Cerco di rispondere al meglio delle mie capacità.

Suppongo che la porta non sia filtrata, nmap effettuato dall'ufficio verso casa mi dice che la porta è:

- chiusa prima che inserisca la regola (visto che non c'è nessuno in ascolto)

- filtered quando è attiva la regola

- open se la regola viene rimossa e se uso netcat per aprire la porta in ascolto

Suppongo quindi che non sia il firewall aziendale a filtrarla (altrimenti sarebbe filtered anche quando netcat è in ascolto).

Inoltre, visto che c'ero ho provato a creare il tunnel con 

```
netcat -L serve:porta -p 23
```

 e in questo modo funziona perfettamente ...

La soluzione può anche andare ma se mi date una mano sono curioso di capire quale possa essere il problema di iptables (non ho assolutamente altre regole).

----------

## comio

 *Kernel78 wrote:*   

> Cerco di rispondere al meglio delle mie capacità.
> 
> Suppongo che la porta non sia filtrata, nmap effettuato dall'ufficio verso casa mi dice che la porta è:
> 
> - chiusa prima che inserisca la regola (visto che non c'è nessuno in ascolto)
> ...

 

vorrei vedere il tuo iptables prima di rispondere (usa iptables-save)...

ciao

----------

## Kernel78

Il fatto è che quando ho tetto che non avevo altre regole intendevo proprio dire che non avevo altre regole  :Wink:  

```
# Generated by iptables-save v1.3.5 on Tue Aug  1 13:31:14 2006

*nat

:PREROUTING ACCEPT [4274:1653957]

:POSTROUTING ACCEPT [5863:395405]

:OUTPUT ACCEPT [5858:395105]

-A PREROUTING -p tcp -m tcp --dport 23 -j DNAT --to-destination xxx.xxx.xxx.xxx:yyyy

COMMIT

# Completed on Tue Aug  1 13:31:14 2006

# Generated by iptables-save v1.3.5 on Tue Aug  1 13:31:14 2006

*filter

:INPUT ACCEPT [83764:38465219]

:FORWARD ACCEPT [14:840]

:OUTPUT ACCEPT [78293:12071693]

COMMIT

# Completed on Tue Aug  1 13:31:14 2006

```

ho censurato io l'ip e la porta di destinazione  :Wink: 

----------

## comio

 *Kernel78 wrote:*   

> Il fatto è che quando ho tetto che non avevo altre regole intendevo proprio dire che non avevo altre regole  
> 
> ```
> # Generated by iptables-save v1.3.5 on Tue Aug  1 13:31:14 2006
> 
> ...

 

Volevo solo assicurarmi che le regole fossero in ACCEPT per quella porta... e così è.

Allora, il nat mi pare ok. sicuramente il comando

```

echo 1 > /proc/sys/net/ipv4/ip_forward   # Attenzione allo spazio fra 1 ed >

```

l'hai dato (deve essere 1 altrimenti i pacchetti non vengono forwardati).

Non so... io questa cosa la uso da sempre (faccio una cosa del genere con l'ftp, quindi porta 20 e 21).

non so... magari riesegui i due passi (impostazione di iptables ed echo 1 > ...).

ciao

luigi

----------

## makoomba

il problema è che l'ip dal quale tenti di accedere al server è esterno alla tua lan, quindi non ha come gateway il tuo pc domestico.

in parole povere, la sola DNAT non basta perchè cambia solo l'ip di destinazione ma non quello sorgente.

succede questo

```
Lavoro --> Casa --> Server --> Lavoro (wtf ? ma chi ti conosce ???)
```

mentre il path corretto è

```
Lavoro --> Casa --> Server --> Casa --> Lavoro
```

che è ciò che accade quando usi il tunnel netcat (infatti funziona).

prova aggiungendo

```
iptables -t nat -A POSTROUTING -p tcp --dport 23 -d ip.del.server.telnet -j MASQUERADE
```

----------

## comio

 *makoomba wrote:*   

> il problema è che l'ip dal quale tenti di accedere al server è esterno alla tua lan, quindi non ha come gateway il tuo pc domestico.
> 
> in parole povere, la sola DNAT non basta perchè cambia solo l'ip di destinazione ma non quello sorgente.
> 
> succede questo
> ...

 

posso rilanciare con un SNAT?

```

iptables -t nat -A POSTROUTING -p tcp --dport -d ip.del.server.telnet -j SNAT --to-source ip.interfaccia.pubblica

```

----------

## makoomba

 *comio wrote:*   

> posso rilanciare con un SNAT?

 

vedo il tuo SNAT e rilancio con un "ha ip dinamico prrr!"

----------

## comio

Oggi mi sono dato all'arte... ecco lo schema di come passano i pacchetti nelle chain di IPTables (ho fatto proprio il debug di un pacchetto...):

http://www.comio.it/IptablesSchema.png

Magari poi lo riempo con tutti i target...

(Prendete con le pinze la parte di forwarding, appena vado a casa la sondo per benino e vi dico l'ordine esatto).

ciao

luigi

----------

