PDA

View Full Version : IPTABLES in DD-WRT (NAPT)


ciriccio
26-11-2014, 18:29
Ciao raga,
ho una piccola domanda e spero possiate aiutarmi.

Sto cercando di sostituire un router su cui gira OpenRG con un R7000 con su montato DD-WRT.

Come WAN devo avere un ip del tipo 10.x.x.x

Poi, ho bisogno di aggiungere un ip pubblico come alias e quindi gli do un

ifconfig vlan2:1 ip_pubblico seguito da eventuale netmask


La mia domanda è:

come mai se uso questo comando la storia funziona solo per qualche minuto e poi non va più?

iptables -t nat -I POSTROUTING -o vlan2 -s 192.168.1.0/24 -j SNAT --to-source ip_pubblico

Cioè poi proprio non mi fa uscire più dal router.

Volendo replicare il settaggio di OpenRG in toto, dovrei anche mettere le porte 1024-65535

Quindi diventerebbe iptables -t nat -I POSTROUTING -o vlan2 -s 192.168.1.0/24 -j SNAT --to-source ip_pubblico:1024-65535

ma in questo caso non va per nulla.


C'è qualcosa che manca secondo voi?


Su OpenRG l'ip pubblico era un alias ed aveva come gateway un altro alias quasi identico all'ip della WAN (mentre come subnet mask aveva 255.255.255.255).

Anche provando maschere diverse (ma non è quello il problema), se va, va solo per pochi minuti.

Avete idee?

Fornisco ulteriori dettagli a chi me li chiede : )

edit:

ho aggiunto questa regola

iptables -t nat -I PREROUTING -i vlan2 -d ip_pubblico -j DNAT --to-destination 192.168.1.0/24

Ha ripreso ad andare... non so se durerà xD

edit: nada... è durato solo un po' di più e poi ha smesso di nuovo :\

pigi2pigi
27-11-2014, 15:03
Non ne so molto, provo
Su OpenRG l'ip pubblico era un alias ed aveva come gateway un altro alias quasi identico all'ip della WAN (mentre come subnet mask aveva 255.255.255.255)
sapevo che sulle interfacce alias non si potevano mettere gateway, però si possono mettere delle route

oltre all'alias (dipende dal tcp/ip) si possono anche assegnare due volte un diverso indirizzo alla stessa interfaccia, la seconda definizione è comunque la secondaria (mai provata)
oppure definirla col comando ip invece che ifconfig col vantaggio di poterle aggiungere e rimuovere tipo
up ip addr add ip_pubblico /nn dev $IFACE label $IFACE:1
down ip addr del ip_pubblico/nn dev $IFACE label $IFACE:1

--to-source con porte mi sebra richieda la specifica del protocollo tcp o udp

ciriccio
28-11-2014, 07:37
Ciao,

grazie della risposta :)

Alla fine ho risolto... semplicemente sbagliavo a non mettere l'indirizzo di broadcast.


Avrei dovuto dargli un:

ifconfig vlan2:1 ip_pubblico netmask 255.255.255.255 broadcast ip_pubblico


Il fatto che su OpenRG era usato il metodo degli alias come gateway non mi aveva fatto pensare bene a cosa scrivere in ifconfig xD


Ora ho un altro problema sempre legato a questa faccenda.

Magari hai una idea:D

Come ho scritto (credo), la WAN (vlan2) ha un ip privato mente l'ip pubblico del router è assegnato alla vlan2:1

Tutto funziona bene se per i port forwarding etc uso iptables.

Il problema è che a me piacerebbe usare la GUI di DD-WRT (ed anche UPnP)

Se creo delle regole lì però (o se vengono create automaticamente tramite UPnP) si riferiscono ovviamente all'ip di WAN e non all'ip pubblico...

A me quindi piacerebbe routare tutto il traffico che arriva sull'ip pubblico verso l'ip di WAN così i port forwarding (e le regole di UPnP) creati tramite GUI potrebbero funzionare senza costringermi a scrivere tutto in iptables:p

Grazie :)

pigi2pigi
28-11-2014, 10:23
E se inverti vlan2 e vlan2:1

Per il broadcast effettivamente se non lo metti su una mask 255.255.255.255 il tcpip assegna 0.0.0.0 (poi dipende dai tcpip, alle origini andava sempre specificato e lo standard non era l'ultimo indirizzo del network)

ciriccio
28-11-2014, 10:34
Non posso invertire...

Il motivo è semplice:

il router DEVE avere l'ip privato sulla WAN per forza (per come sono fatti gli indirizzi) e per definizione su DD-WRT la WAN è la VLAN2

Poi, avendo anche un ip pubbico, devo creare un alias che ho chiamato VLAN2:1

Io sono sicuro sia una cavolata... proprio perché sia DD-WRT che iptables sono strumenti così potenti...

Se non è una questione di forwarding magari basta una regola di route ma non so proprio come metterla.:p

Cioè la storia è che funziona tutto bene... ma mi piacerebbe usare la GUI e mi piacerebbe che UPnP si riferisse alla VLAN2:1 tutto qui:D

(sto ovviamente postando dappertutto... :asd: )

pigi2pigi
28-11-2014, 14:02
Per esclusione, con comandi di routing non si può fare nulla, il gateway deve essere sullo stesso network e qui abbiamo due differenti network

Per quanto riguarda la gui di dd-wrt, guardando in giro lui crea probabilmente iptables del tipo
iptables -t nat -I PREROUTING -p tcp -d $(nvram get wan_ipaddr) --dport 80 -j DNAT --to 192.168.1.2:80

e con nvram get wan_ipaddr si prende sempre vlan2
mentre se si potesse

iptables -t nat -I PREROUTING -p tcp -d ip-pubblico --dport 80 -j DNAT --to 192.168.1.2:80

funzionerebbe

se la gui non consente la selezione di ip-pubblico o inseriscono funzioni tipo nvram get wan_ipaddr_2 selezionabili non penso ci sia molto da fare e upnp non va di conseguenza

il problema è che l'interfaccia vlan2:1 non esiste è solo un secondo indirizzo della stessa vlan2

ciriccio
28-11-2014, 14:08
mentre se si potesse

iptables -t nat -I PREROUTING -p tcp -d ip-pubblico --dport 80 -j DNAT --to 192.168.1.2:80

funzionerebbe


ma guarda che è esattamente quello che faccio io xD

io metto direttamente l'ip e non uso l'altro comando:D

Comunque ho fatto progressi...

Per esempio ho scoperto che per la vpn, devo fare così


iptables -t nat -I PREROUTING -d ip_pubblico -p udp --dport 1194 -j DNAT --to ip_privato_di_WAN:1194


e funziona...


Se riuscissi a creare la stessa configurazione facendola poi seguire dal secondo port forward verso un client interno ci sarei riuscito :asd: