View Full Version : Iptables + Squid: alcuni problemi
supermario
03-03-2008, 11:11
Ciao
ho ripreso lo sviluppo del mio router/server casalingo basato su debian e iptables
per chi non lo sapesse tutto è cominciato da qui :D
Link (http://www.hwupgrade.it/forum/showthread.php?t=1615766)
rispetto a quello di cui si parla nel mio vecchio thd ho deciso di usare una debian super minimal(il deb generato pesa 4mb e mi sono dimenticato di togliere la parte del DVB linux :D ) e non appoggiarmi su altri tool tipo shorewall.
Inoltre ho ricompilato il kernel col supporto al Layer7 filtering e patchato iptables per supportarlo
lo script del firewall l'ho preso da un utente che tempo fa ha postato una miniguida per un firewall con dmz...ma ho tolto la parte dmz visto che non la utilizzo
Script IPTABLES con dmz (http://www.hwupgrade.it/forum/showthread.php?t=1493973&highlight=dmz)
dello script proposto ho tolto solo le regole riguardanti la dmz e modificato gli ip per la mia configurazione
inoltre ho implementato 2 script funzionanti per il controllo della banda con iproute2 e traffic control. appena risolvo con squid ve li ripropongo per vedere se si può cambiare qualcosa
come avrete appena capito il problema è squid.
l'ho installato da apt, lo script di configurazione è quasi standard, ho solo aggiunto l'opzione transparent, qualche riga per la cache e la rete considerata sicura.
se aggiungo una riga a iptables per il redirect su squid, ogni connessione mi risulta in una pagina in cui mi viene comunicato che squid non riesce a risolvere i nomi, anche se in iptables ci sono 2 regole ad hoc per permetterlo(si vedono nello script sopra).
dove sbaglio?
il router ha 2 schede di rete, eth0 per la LAN locale e eth1 collegata all'hag fastweb e configurata per nattare i 3 ip disponibili di default dall'hag(28.255.248.ecc ecc)
qualcuno mi sa dare una mano?
tnx
supermario
04-03-2008, 13:04
problema comunissimo vedo :D
vi allego lo script del firewall e squid.conf ripulito dei commenti chilometrici
il forward per squid è commentato all'ultima riga fino a che non riesco a farlo funzionare, per fare le prove però, lo sblocco :D
#!/bin/bash
/sbin/modprobe ipt_ipp2p
IPT=/sbin/iptables
NET="eth1"
LAN="eth0"
LO="lo"
#IP
IP_NET="28.255.248.199"
IP_LAN="192.168.1.1"
IP_LO="127.0.0.1"
IP_DNS1="213.156.56.80"
IP_DNS2="1.253.128.37"
RANGE_IP_LAN="192.168.1.0/24"
#pulisco tutto
$IPT -F
$IPT -t nat -F
$IPT -t mangle -F
$IPT -F INPUT
$IPT -F FORWARD
$IPT -F OUTPUT
$IPT -X
#imposto il comportamento di default
$IPT -P INPUT DROP
$IPT -P OUTPUT DROP
$IPT -P FORWARD DROP
#abilito l'ip forwarding
echo 1 > /proc/sys/net/ipv4/ip_forward
#creo dei chan nuovi
$IPT -N net_to_lan
$IPT -N lan_to_net
$IPT -N server_to_net
$IPT -N net_to_server
$IPT -N lan_to_server
$IPT -N server_to_lan
#accetto in input sull'interfaccia LO tutto quello che viene dagli ip locali
$IPT -A INPUT -p ALL -i $LO -s $IP_LO -j ACCEPT
$IPT -A INPUT -p ALL -i $LO -s $IP_LAN -j ACCEPT
$IPT -A INPUT -p ALL -i $LO -s $IP_NET -j ACCEPT
$IPT -A OUTPUT -p ALL -o $LO -d $IP_LO -j ACCEPT
$IPT -A OUTPUT -p ALL -o $LO -d $IP_LAN -j ACCEPT
$IPT -A OUTPUT -p ALL -o $LO -d $IP_NET -j ACCEPT
#rispondo ai ping (non fondamentale, ma a volte e' comodo)
$IPT -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
#faccio snat dei computer in LAN (e quindi gli permetto di uscire su internet)
$IPT -t nat -A POSTROUTING -o $NET -s $RANGE_IP_LAN -j MASQUERADE
#divido le connessioni (FORWARD) in base alla provenienza/destinazione
$IPT -A FORWARD -i $NET -o $LAN -j net_to_lan
$IPT -A FORWARD -i $LAN -o $NET -j lan_to_net
#divido anche le connessioni in input....
$IPT -A INPUT -i $NET -j net_to_server
$IPT -A INPUT -i $LAN -j lan_to_server
#... e output
$IPT -A OUTPUT -o $NET -j server_to_net
$IPT -A OUTPUT -o $LAN -j server_to_lan
#da internet verso la LAN accetto solo le connessioni related,estabilished
$IPT -A net_to_lan -m state --state RELATED,ESTABLISHED -j ACCEPT
#dalla LAN permetto di uscire su tutte le porte
$IPT -A lan_to_net -j ACCEPT
#accetto tutte le connessioni fatte dalla LAN verso il server(e server verso internet) (considero la mia rete interna SICURA)
$IPT -A lan_to_server -j ACCEPT
$IPT -A server_to_net -j ACCEPT
#accetto solo le connessioni related o estabilished che il server fa alla LAN
$IPT -A server_to_lan -j ACCEPT
#permetto di risolvere nomi
$IPT -A server_to_net -d $IP_DNS1 -p udp --dport 53 -j ACCEPT
$IPT -A server_to_net -d $IP_DNS2 -p udp --dport 53 -j ACCEPT
#permetto al firewall che riceva le risposte
$IPT -A net_to_server -m state --state RELATED,ESTABLISHED -j ACCEPT
#Http - Down ha prio max
$IPT -t mangle -A POSTROUTING -m layer7 --l7proto http -j MARK --set-mark 1
#Emule - Upl ha prio min
$IPT -t mangle -A POSTROUTING -m layer7 --l7proto edonkey -j MARK --set-mark 2
#Http - Down ha prio max
$IPT -t mangle -A PREROUTING -m layer7 --l7proto http -j MARK --set-mark 1
#Emule - Upl ha prio min
$IPT -t mangle -A PREROUTING -m layer7 --l7proto edonkey -j MARK --set-mark 2
#Apro porte Emule a Mario
$IPT -A FORWARD -p tcp -i $NET --dport 4662 -d 192.168.1.2 -j ACCEPT
$IPT -A FORWARD -p udp -i $NET --dport 4672 -d 192.168.1.2 -j ACCEPT
$IPT -t nat -A PREROUTING -p tcp --dport 4662 -j DNAT --to-dest 192.168.1.2:4662
$IPT -t nat -A PREROUTING -p udp --dport 4672 -j DNAT --to-dest 192.168.1.2:4672
#Gino
$IPT -A FORWARD -p tcp -i $NET --dport 4669 -d 192.168.1.3 -j ACCEPT
$IPT -A FORWARD -p udp -i $NET --dport 4679 -d 192.168.1.3 -j ACCEPT
$IPT -t nat -A PREROUTING -p tcp --dport 4669 -j DNAT --to-dest 192.168.1.3:4669
$IPT -t nat -A PREROUTING -p udp --dport 4679 -j DNAT --to-dest 192.168.1.3:4679
#Angelo
$IPT -A FORWARD -p tcp -i $NET --dport 4663 -d 192.168.1.4 -j ACCEPT
$IPT -A FORWARD -p udp -i $NET --dport 4673 -d 192.168.1.4 -j ACCEPT
$IPT -t nat -A PREROUTING -p tcp --dport 4663 -j DNAT --to-dest 192.168.1.4:4663
$IPT -t nat -A PREROUTING -p udp --dport 4673 -j DNAT --to-dest 192.168.1.4:4673
#Uso il proxy
#$IPT -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 192.168.1.1:3128
server:~# cat /etc/squid/squid.conf | sed '/ *#/d; /^ *$/d'
visible_hostname localhost
http_port 192.168.1.1:3128 transparent
hierarchy_stoplist cgi-bin ?
acl QUERY urlpath_regex cgi-bin \?
cache deny QUERY
acl apache rep_header Server ^Apache
broken_vary_encoding allow apache
cache_mem 8 MB
maximum_object_size 4096 KB
cache_replacement_policy heap LFUDA
memory_replacement_policy heap LFUDA
cache_dir ufs /var/spool/squid 5000 16 256
access_log /var/log/squid/access.log squid
hosts_file /etc/hosts
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern . 0 20% 4320
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
acl net src 192.168.1.0/24
acl purge method PURGE
acl CONNECT method CONNECT
http_access allow manager localhost
http_access deny manager
http_access allow purge localhost
http_access deny purge
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow net
http_access allow localhost
http_access deny all
http_reply_access allow all
icp_access allow all
cache_effective_group proxy
coredump_dir /var/spool/squid
extension_methods REPORT MERGE MKACTIVITY CHECKOUT
questo invece è squid.conf...manca nulla?
inoltre non mi è chiaro che indirizzo usare per il proxy vero e proprio
squid viene eseguito dal firewall stesso, devo usare 192.168.1.1 o 127.0.0.1??
Ciao, sfortunatamente non ho alcuna soluzione al tuo problema...
....PERO'...
... ho letto tutta la tua "avventura" per realizzare un server domestico e ora vorrei fare le stesse cose !!!
nella fattispecie ho installato ubuntu 7.10 server e ora devo:
1) creare un firewall che permetta alle macchine nella LAN di uscire su internet ma che sia chiuso da internet verso la LAN (se non per le classiche porte 4662 e 4672 :D )
2) configurare samba per creare un gruppo di lavoro e condividere le cartelle sul server
3) gestione remota tramite SSH (già fatto !)
Mi potresti per favore dare qualche consiglio sulle soluzioni che hai adottato?
In particolare:
-meglio un' interfaccia grafica minimale (fluxbox, xfce etc...) o webadmin?
-che firewall? meglio uno script con IPTABLES, Shorewall o viste le esigenze, una semplice interfaccia grafica come Firestarter?
Come nel tuo caso, anch'io ho una connessione con fastweb senza ip pubblico (il classico hag pirelli con 3 porte con pc configurati in DHCP)
grazie anticipatamente !!!!
ciao,
Riguardo il dns:
la macchina dove gira squid risolve i nomi?
in /etc/resolv.conf cosa ci hai messo?
se punti un ip da browser e non un nome, navighi?
che rotte hai sul firewall?
supermario
06-03-2008, 22:36
ciao innanzitutto anticipo che il problema a squid l'ho risolto, ora il redirect e le policy funzionano egregiamente
il problema che si è ripresentato è il DNAT delle porte del mulo sui pc in lan e sul server stesso(per utilizzo con aMuleD)
pensavo che
#Apro porte Emule a Mario
$IPT -A FORWARD -p tcp -i $NET --dport 4662 -d 192.168.1.2 -j ACCEPT
$IPT -A FORWARD -p udp -i $NET --dport 4672 -d 192.168.1.2 -j ACCEPT
$IPT -t nat -A PREROUTING -p tcp --dport 4662 -j DNAT --to-dest 192.168.1.2:4662
$IPT -t nat -A PREROUTING -p udp --dport 4672 -j DNAT --to-dest 192.168.1.2:4672
funzionassero, non è così!!!
che cosa c'è di sbagliato?
@M1900
cerco di risponderti prevemente
#firewall sostitutivo di un router soho:
basta hw preistorico e 2 schede di rete, una verso internet l'altra verso la lan interna(magari con uno switch). visto che hai fw ti certifico il suo funzionamento :D
#aprire emule:
ci sto lavorando come vedi, pensavo fuzionasse :D
#ssh
openssh e sshclient, per pilotatlo putty su windows e winscp, vanno alla grande..eventualmente ci metti su webmin per la gestione di qualcosa via http
#varie
non c'è bisogno di nessun desktop environment, va benissimo da console...shorewall è comodo agli inizi ma anche un script di IPTABLES puro non dovrebbe essere male
ciauz
Gimli[2BV!2B]
06-03-2008, 22:58
Prova a specificare l'ip nel prerouting (ed eventualmente l'interfaccia, ma forse è superfluo...):#Apro porte Emule a Mario
$IPT -A FORWARD -p tcp -i $NET -d 192.168.1.2 --dport 4662 -j ACCEPT
$IPT -A FORWARD -p udp -i $NET -d 192.168.1.2 --dport 4672 -j ACCEPT
$IPT -t nat -A PREROUTING -p tcp -i $NET -d $IP_NET --dport 4662 -j DNAT --to-dest 192.168.1.2:4662
$IPT -t nat -A PREROUTING -p udp -i $NET -d $IP_NET --dport 4672 -j DNAT --to-dest 192.168.1.2:4672
supermario
06-03-2008, 23:05
vi aggiorno domani quando faccio le prove! :D
intanto se ci sono idee proponete pure, la cosa mi sta facendo incazzare parecchio :stordita:
In effetti utilizzare un vecchio PC come firewall sarebbe la cosa migliore, sopratutto vista l'efficienza di IPCop, Smoothwall monowall etc...
Mi piacerebbe però integrare nel mio (file)server domestico anche un buon firewall.
La macchina su cui ho installato Ubuntu server è già dotata di 2 schede di rete:
una collegata all' hag tramite cavo dritto è impostata in DHCP (WAN)
la seconda, collegata ad un switch tramite cavo incrociato da sulla rete domestica (LAN)
Ora con questa impostazione i PC della LAN "escono" su internet ma non so se le cartelle condivise sul server o dai singoli pc siano visibili anche all'esterno della mia LAN.
In ogni caso, il firewall ideale sul mio server, dovrebbe "semplicemente" bloccare qualsiasi connessione in entrata...
Pensavo inoltre ad un'interfaccia grafica leggerissima per velocizzare le impostazioni sul server ma mi sembra di capire che con webadmin posso fare già tutto via web...
Ogni consiglio è ben accetto !!!!
supermario
06-03-2008, 23:56
non mi sono ancora occupato della parte fileserver
ma se non sbaglio le cartelle condivise dai singoli pc nella mia rete sono visibili agli altri già da ora
in effetti anch'io devo affrontare il capito "samba" ancora nel dettaglio...
Quello che non capisco è se con la mia configurazione:
-eth1 che da su WAN
-eth0 che da su LAN ( le cartelle condivise qui devono essere invisibili su WAN !!!!)
devo integrare un firewall (con IPTABLES, Shorewall, Firestarter etc...) oppure no.
grazie anticipatamente !
supermario
07-03-2008, 11:05
la man(non una wan) a cui sei connesso non vedrà mai le tue cartelle,in nessun caso,vai tranquillo!
Quindi nel mio caso non server un firewall?
Dovrei implementarlo solo per aprire delle porte?
( passando così dalla configurazione "tutto chiuso" ad una più complessa che richiede appunto, un firewall ? )
OT tecnico
Perchè si parla di MAN e non WAN ??
centra per caso la struttura particolare di fastweb??
Di solito come WAN intendo la zona RED di una rete, cioè la parte in comunicazione con internet.
grazie ancora per le risposte !
supermario
07-03-2008, 12:23
se vuoi distribuire internet col muletto ti serve per forza implementare una sorta di firewall che abbia almeno funzioni di NAT per i pc nella rete
si parla di MAN perchè la rete è diversa per le varie zone d'italia dove è presente fastweb...MAN infatti sta per metropolitan area network, di solito fastweb ne ha una per le varie città dove c'è copertura
quindi mi devo mettere a studiare bene IPTABLES ......
Mi sembrava troppo bello che fosse sufficiente quello che avevo già fatto :cry:
Per il resto, spero almeno che Webadmin mi semplifichi un pò la vita !
supermario
07-03-2008, 12:43
usa shorewall le prime volte, ha una documentazione bene fatta
Shang Tsung
07-03-2008, 16:11
usa shorewall le prime volte, ha una documentazione bene fatta
Ciao a che punto sei?
Risolto?
se non hai risolto, rifaresti un po' il punto della situazione che provo ad aiutarti?
supermario
07-03-2008, 16:50
la situazione è che con quelle righe per iptables postate su per il DNAT delle porte sui pc nella mia rete non ottengo i risultati sperati, il check delle porte sul sito di adunanza da sempre esiti negativi
ciao,
ti posso consigliare di loggare quello che fa iptables?
e poi, creati le catene di forward tipo queste:
$IPT -A FORWARD -i $BAD -o $LAN -j bad-lan
$IPT -A FORWARD -i $LAN -o $BAD -j lan-bad
di conseguenza:
### bad-lan ###
$IPT -A bad-lan -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A bad-lan -j LOG --log-prefix "[ Scarti: bad-lan ]"
$IPT -A bad-lan -j REJECT
### lan-bad ###
$IPT -A lan-bad -m state --state ESTABLISHED,RELATED -j ACCEPT
# nameservers
$IPT -A lan-bad -p udp -s 10.0.0.0/24 --dport 53 -j ACCEPT
$IPT -A lan-bad -p tcp -s 10.0.0.0/24 --dport 53 -j ACCEPT
$IPT -A lan-bad -p tcp -s 10.0.0.0/24 --dport 80 -j ACCEPT
$IPT -A lan-bad -p tcp -s 10.0.0.0/24 --dport 22 -j ACCEPT
$IPT -A lan-bad -p tcp -s 10.0.0.0/24 --dport 21 -j ACCEPT
$IPT -A lan-bad -p tcp -s 10.0.0.0/24 --dport 20 -j ACCEPT
$IPT -A lan-bad -p tcp -s 10.0.0.0/24 --dport 23 -j ACCEPT
$IPT -A lan-bad -j LOG --log-prefix "[ Scarti: lan-bad ]"
$IPT -A lan-bad -j REJECT
Lo stesso sul prerouting e post e output se filtri.
E' chiaro che devi adattare le aperture per la tua rete.
Avrai la situazione iptables a portata d'occhio, ogni scarto e
visibile in syslog o messages.
ciao
supermario
07-03-2008, 20:29
grazie per la risposta appena possibile modifico lo script per vedere se cambia nulla!
Shang Tsung
07-03-2008, 23:26
la situazione è che con quelle righe per iptables postate su per il DNAT delle porte sui pc nella mia rete non ottengo i risultati sperati, il check delle porte sul sito di adunanza da sempre esiti negativi
Intanto la domanda più ovvia: sei sicuro che le porte siano giuste / solo quelle?
Io non ne ho idea delle porte che servono al mulo ma ne devi essere sicuro al 100%
Poi, non dovrebbe essere difficile capire dov'è il problema se fai così:
dai questi comandi che così pulisci tutto
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X
iptables -Z
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT
iptables -t mangle -P OUTPUT ACCEPT
iptables -t mangle -P INPUT ACCEPT
iptables -t mangle -P FORWARD ACCEPT
iptables -t mangle -P POSTROUTING ACCEPT
iptables -t mangle -P PREROUTING ACCEPT
ora abbiamo una situazione di pulizia totale, a questo punto aggiungi SOLO queste regole:
IPT=/sbin/iptables
NET="eth1"
LAN="eth0"
LO="lo"
#IP
IP_NET="28.255.248.199"
IP_LAN="192.168.1.1"
IP_LO="127.0.0.1"
IP_DNS1="213.156.56.80"
IP_DNS2="1.253.128.37"
RANGE_IP_LAN="192.168.1.0/24"
echo 1 > /proc/sys/net/ipv4/ip_forward
$IPT -t nat -A POSTROUTING -o $NET -s $RANGE_IP_LAN -j MASQUERADE
$IPT -t nat -A PREROUTING -p tcp -i $NET --dport 4662 -j DNAT --to 192.168.1.2:4662
$IPT -t nat -A PREROUTING -p udp -i $NET --dport 4672 -j DNAT --to 192.168.1.2:4672
chiaramente usi solo il pc 192.168.1.2
Se le porte sono giuste sei a cavallo, poi vedremo dov'è il problema.
Riguardo al probabile problema, hai fatto venire un dubbio a me: sei sicuro che si possa fare come hai fatto tu, ossia:
#Apro porte Emule a Mario
$IPT -A FORWARD -p tcp -i $NET --dport 4662 -d 192.168.1.2 -j ACCEPT
$IPT -A FORWARD -p udp -i $NET --dport 4672 -d 192.168.1.2 -j ACCEPT
$IPT -t nat -A PREROUTING -p tcp --dport 4662 -j DNAT --to-dest 192.168.1.2:4662
$IPT -t nat -A PREROUTING -p udp --dport 4672 -j DNAT --to-dest 192.168.1.2:4672
#Gino
$IPT -A FORWARD -p tcp -i $NET --dport 4669 -d 192.168.1.3 -j ACCEPT
$IPT -A FORWARD -p udp -i $NET --dport 4679 -d 192.168.1.3 -j ACCEPT
$IPT -t nat -A PREROUTING -p tcp --dport 4669 -j DNAT --to-dest 192.168.1.3:4669
$IPT -t nat -A PREROUTING -p udp --dport 4679 -j DNAT --to-dest 192.168.1.3:4679
#Angelo
$IPT -A FORWARD -p tcp -i $NET --dport 4663 -d 192.168.1.4 -j ACCEPT
$IPT -A FORWARD -p udp -i $NET --dport 4673 -d 192.168.1.4 -j ACCEPT
$IPT -t nat -A PREROUTING -p tcp --dport 4663 -j DNAT --to-dest 192.168.1.4:4663
$IPT -t nat -A PREROUTING -p udp --dport 4673 -j DNAT --to-dest 192.168.1.4:4673
Intendo dire sei sicuro che si possa fare il dnat per più indirizzi ip delle stesse porte???
Inoltre anche per quel che riguarda le regole nella catena di forward, sei sicuro che si possa specificare più indirizzi ip delle stesse porte?
Io ho sempre usato una forma del genere, senza specificare un indizzo ip (o addirittura più di uno come hai fatto tu)
iptables -A FORWARD -i ethx -p tcp --dport www -j ACCEPT
Spero di non averti incasinato.
Gimli[2BV!2B]
08-03-2008, 00:21
Nuova ipotesi per eMule: forse rimbalza i pacchetti all'ingresso... (se lo provi ti chiederei di abbinarlo al mio precedente suggerimento, specifica almeno a quale indirizzo arrivano alle porte)
$IPT -A INPUT -p tcp --dport 4662 -j ACCEPT
$IPT -A INPUT -p udp --dport 4672 -j ACCEPTIn ogni caso un bel "debugging" come consigliato da _YTS_ darebbe qualche indizio.
supermario
08-03-2008, 11:15
wow quante nozioni :D
provo a fare il DNAT semplice sul mio pc e vediamo se cambia nulla!
eventualmente comincio col log
ho solo un dubbio
l'interfaccia BAD cosa è?
supermario
08-03-2008, 11:53
edit:
ho cancellato quello che avevo scritto prima...in sostanza loggando tutte le catene del mio firewall ecco cosa genera una richiesta di controllo delle porte del sito di adunanza
[ Scarti: net-server ]IN=eth1 OUT= MAC=00:19:e0:0c:d9:99:00:90:1a:41:04:36:08:00 SRC=28.255.126.203 DST=28.255.248.199 LEN=64 TOS=0x00 PREC=0x00 TTL=39 ID=36608 DF PROTO=TCP SPT=1119 DPT=1433 WINDOW=53760 RES=0x00 SYN URGP=0
[ Scarti: server-lan ]IN= OUT=eth0 SRC=192.168.1.1 DST=192.168.1.255 LEN=242 TOS=0x00 PREC=0x00 TTL=64 ID=0 DF PROTO=UDP SPT=138 DPT=138 LEN=222
[ Scarti: net-lan ]IN=eth1 OUT=eth0 SRC=1.244.156.138 DST=192.168.1.2 LEN=48 TOS=0x00 PREC=0x00 TTL=53 ID=55788 DF PROTO=TCP SPT=2912 DPT=4662 WINDOW=16384 RES=0x00 SYN URGP=0
[ Scarti: net-lan ]IN=eth1 OUT=eth0 SRC=1.244.156.138 DST=192.168.1.2 LEN=48 TOS=0x00 PREC=0x00 TTL=53 ID=55815 DF PROTO=TCP SPT=2912 DPT=4662 WINDOW=16384 RES=0x00 SYN URGP=0
[ Scarti: net-lan ]IN=eth1 OUT=eth0 SRC=1.244.156.138 DST=192.168.1.2 LEN=48 TOS=0x00 PREC=0x00 TTL=53 ID=56198 DF PROTO=TCP SPT=2912 DPT=4662 WINDOW=16384 RES=0x00 SYN URGP=0
[ Scarti: net-lan ]IN=eth1 OUT=eth0 SRC=1.244.156.138 DST=192.168.1.2 LEN=32 TOS=0x00 PREC=0x00 TTL=117 ID=12512 PROTO=UDP SPT=2918 DPT=4672 LEN=12
[ Scarti: net-server ]IN=eth1 OUT= MAC=00:19:e0:0c:d9:99:00:90:1a:41:04:36:08:00 SRC=38.99.76.241 DST=28.255.248.199 LEN=52 TOS=0x00 PREC=0x00 TTL=52 ID=29682 DF PROTO=TCP SPT=80 DPT=4431 WINDOW=5840 RES=0x00 ACK URGP=0
[ Scarti: net-server ]IN=eth1 OUT= MAC=00:19:e0:0c:d9:99:00:90:1a:41:04:36:08:00 SRC=38.99.76.241 DST=28.255.248.199 LEN=52 TOS=0x00 PREC=0x00 TTL=52 ID=29688 DF PROTO=TCP SPT=80 DPT=4431 WINDOW=17940 RES=0x00 ACK URGP=0
ciao
[ Scarti: net-lan ]IN=eth1 OUT=eth0 SRC=1.244.156.138 DST=192.168.1.2 LEN=48 TOS=0x00 PREC=0x00 TTL=53 ID=55788 DF PROTO=TCP SPT=2912 DPT=4662 WINDOW=16384 RES=0x00 SYN URGP=0
[ Scarti: net-lan ]IN=eth1 OUT=eth0 SRC=1.244.156.138 DST=192.168.1.2 LEN=32 TOS=0x00 PREC=0x00 TTL=117 ID=12512 PROTO=UDP SPT=2918 DPT=4672 LEN=12
ecco!
stai scartando sull'interfaccia eth1 un pacchetto che vuole andare sulla porta
DPT=4662 sull'interfaccia della lan, in pratica un pacchetto in forwarding.
devi abilitare nella catena net-lan:
iptables -A net-lan -p tcp -d 192.168.1.2 --dport 4662 -j ACCEPT
iptables -A net-lan -p udp -d 192.168.1.2 --dport 4672 -j ACCEPT
i log parlano sempre chiaro.
saluti.
supermario
08-03-2008, 21:00
che poi è praticamente quello che facevo io nel mio script :D
#Apro porte Emule a Mario
$IPT -A FORWARD -p tcp -i $NET --dport 4662 -d 192.168.1.2 -j ACCEPT
$IPT -A FORWARD -p udp -i $NET --dport 4672 -d 192.168.1.2 -j ACCEPT
$IPT -t nat -A PREROUTING -p tcp --dport 4662 -j DNAT --to-dest 192.168.1.2:4662
$IPT -t nat -A PREROUTING -p udp --dport 4672 -j DNAT --to-dest 192.168.1.2:4672
infatti non va
Mar 8 22:56:36 server kernel: [ Scarti: net_to_lan ]IN=eth1 OUT=eth0 SRC=1.244.156.138 DST=192.168.1.2 LEN=48 TOS=0x00 PREC=0x00 TTL=53 ID=28507 DF PROTO=TCP SPT=4079 DPT=4662 WINDOW=16384 RES=0x00 SYN URGP=0
Mar 8 22:56:39 server kernel: [ Scarti: net_to_lan ]IN=eth1 OUT=eth0 SRC=1.244.156.138 DST=192.168.1.2 LEN=48 TOS=0x00 PREC=0x00 TTL=53 ID=28590 DF PROTO=TCP SPT=4079 DPT=4662 WINDOW=16384 RES=0x00 SYN URGP=0
Mar 8 22:56:45 server kernel: [ Scarti: net_to_lan ]IN=eth1 OUT=eth0 SRC=1.244.156.138 DST=192.168.1.2 LEN=48 TOS=0x00 PREC=0x00 TTL=53 ID=28917 DF PROTO=TCP SPT=4079 DPT=4662 WINDOW=16384 RES=0x00 SYN URGP=0
Mar 8 22:56:57 server kernel: [ Scarti: net_to_lan ]IN=eth1 OUT=eth0 SRC=1.244.156.138 DST=192.168.1.2 LEN=32 TOS=0x00 PREC=0x00 TTL=117 ID=50458 PROTO=UDP SPT=4081 DPT=4672 LEN=12
ciao
sono incomplete:
$IPT -A FORWARD -p tcp -i $NET -o $LAN --dport 4662 -d 192.168.1.2 -j ACCEPT
$IPT -A FORWARD -p udp -i $NET -o $LAN --dport 4672 -d 192.168.1.2 -j ACCEPT
il forward ha bisogno delle 2 schede.
riprova.
Shang Tsung
09-03-2008, 08:44
wow quante nozioni :D
provo a fare il DNAT semplice sul mio pc e vediamo se cambia nulla!
eventualmente comincio col log
ho solo un dubbio
l'interfaccia BAD cosa è?
ma hai provato prima di tutto a fare come ti avevo proposto?
per vedere se almeno le porte erano ok?
Shang Tsung
09-03-2008, 08:54
ciao
sono incomplete:
$IPT -A FORWARD -p tcp -i $NET -o $LAN --dport 4662 -d 192.168.1.2 -j ACCEPT
$IPT -A FORWARD -p udp -i $NET -o $LAN --dport 4672 -d 192.168.1.2 -j ACCEPT
il forward ha bisogno delle 2 schede.
riprova.
Ciao sai rispondere alla domanda che ho fatto prima?
Ossia si può forwardware la stessa porta a più indirizzi ip come avrebbe intenzione di fare supermario???
supermario
09-03-2008, 11:32
ciao
sono incomplete:
$IPT -A FORWARD -p tcp -i $NET -o $LAN --dport 4662 -d 192.168.1.2 -j ACCEPT
$IPT -A FORWARD -p udp -i $NET -o $LAN --dport 4672 -d 192.168.1.2 -j ACCEPT
il forward ha bisogno delle 2 schede.
riprova.
idem, non va.
comincio a incazzarmi e soprattutto a pensare che sto iptables non vada di suo:muro: :muro:
ma hai provato prima di tutto a fare come ti avevo proposto?
per vedere se almeno le porte erano ok?
ma in che senso le porte sono ok?
attualmente ho solo queste righe
$IPT -A FORWARD -p tcp -i $NET -o $LAN --dport 4662 -d 192.168.1.2 -j ACCEPT
$IPT -A FORWARD -p udp -i $NET -o $LAN --dport 4665-d 192.168.1.2 -j ACCEPT
$IPT -A FORWARD -p udp -i $NET -o $LAN --dport 4672 -d 192.168.1.2 -j ACCEPT
$IPT -t nat -A PREROUTING -p tcp -i $NET --dport 4662 -j DNAT --to 192.168.1.2:4662
$IPT -t nat -A PREROUTING -p udp -i $NET --dport 4665 -j DNAT --to 192.168.1.2:4665
$IPT -t nat -A PREROUTING -p udp -i $NET --dport 4672 -j DNAT --to 192.168.1.2:4672
e le porte non si aprono.ricevo un log simile a quello postato sopra
ciao
per Shang Tsung:
puo dnattare a n indirizzi con questa regola:
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to 172.16.0.2-
172.16.0.3
praticamente un bilanciamente di carico in questo caso sulla 80.
per supermario:
quando fai il prerouting poi il pacchetto arriva sull'interfaccia che ti pare.
li lo devi accettare.
Segui i log, iptables non fa come vuole lui, c e qualcosa che non torna
nel tuo script.
supermario
09-03-2008, 12:13
ora mi da superato...
ma è anche vero che ho aperto tutte le catene di imput, forward e output disponibili...
#da internet verso la LAN accetto solo le connessioni related,estabilished
$IPT -A net_to_lan -j ACCEPT
$IPT -A net_to_lan -j LOG --log-prefix "[ Scarti: net_to_lan ]"
#$IPT -A net_to_lan -j REJECT
#dalla LAN permetto di uscire su tutte le porte
$IPT -A lan_to_net -j ACCEPT
$IPT -A lan_to_net -j LOG --log-prefix "[ Scarti: lan_to_net ]"
$IPT -A lan_to_net -j REJECT
#accetto tutte le connessioni fatte dalla LAN verso il server
$IPT -A lan_to_server -j ACCEPT
$IPT -A lan_to_server -j LOG --log-prefix "[ Scarti: lan_to_server ]"
$IPT -A lan_to_server -j REJECT
#accetto connessioni dal server alla lan
$IPT -A server_to_lan -j ACCEPT
$IPT -A server_to_lan -j LOG --log-prefix "[ Scarti: server_to_lan ]"
$IPT -A server_to_lan -j REJECT
#permetto al firewall che riceva le risposte
$IPT -A net_to_server -j ACCEPT
$IPT -A net_to_server -j LOG --log-prefix "[ Scarti: net_to_server ]"
$IPT -A net_to_server -j REJECT
#permetto al firewall che riceva le risposte
$IPT -A server_to_net -j ACCEPT
$IPT -A server_to_net -j LOG --log-prefix "[ Scarti: server_to_net ]"
$IPT -A server_to_net -j REJECT
inoltre ho anche commentato la policy di default DROP della catena di forward...praticamente ora ho un colapasta :D
quali catene blindo ora?molte prima erano con
-m state --state ESTABLISHED,RELATED
inoltre questo codice va bene per aprire emule su tutti i pc?
$IPT -A net_to_lan -p tcp --dport 4662 -j ACCEPT
$IPT -A net_to_lan -p udp --dport 4665 -j ACCEPT
$IPT -A net_to_lan -p udp --dport 4672 -j ACCEPT
$IPT -t nat -A PREROUTING -p tcp -i $NET --dport 4662 -j DNAT --to 192.168.1.2-192.168.1.5:4662
$IPT -t nat -A PREROUTING -p udp -i $NET --dport 4665 -j DNAT --to 192.168.1.2-192.168.1.5:4665
$IPT -t nat -A PREROUTING -p udp -i $NET --dport 4672 -j DNAT --to 192.168.1.2-192.168.1.5:4672
Shang Tsung
09-03-2008, 12:27
idem, non va.
comincio a incazzarmi e soprattutto a pensare che sto iptables non vada di suo:muro: :muro:
ma in che senso le porte sono ok?
attualmente ho solo queste righe
$IPT -A FORWARD -p tcp -i $NET -o $LAN --dport 4662 -d 192.168.1.2 -j ACCEPT
$IPT -A FORWARD -p udp -i $NET -o $LAN --dport 4665-d 192.168.1.2 -j ACCEPT
$IPT -A FORWARD -p udp -i $NET -o $LAN --dport 4672 -d 192.168.1.2 -j ACCEPT
$IPT -t nat -A PREROUTING -p tcp -i $NET --dport 4662 -j DNAT --to 192.168.1.2:4662
$IPT -t nat -A PREROUTING -p udp -i $NET --dport 4665 -j DNAT --to 192.168.1.2:4665
$IPT -t nat -A PREROUTING -p udp -i $NET --dport 4672 -j DNAT --to 192.168.1.2:4672
e le porte non si aprono.ricevo un log simile a quello postato sopra
Supermario, non ho capito se l'hai provato o meno da quello che scrivi, mi sembra di no.
metti in uno script esattamente e solamente questo e vedi se ti da le porte aperte nel mulo, (ossia id alto, sbaglio?) , ecco cosa intendo con "le porte sono ok" (scusa forse non era chiaro)
#!/bin/bash
IPT=/sbin/iptables
NET="eth1"
LAN="eth0"
LO="lo"
#IP
IP_NET="28.255.248.199"
IP_LAN="192.168.1.1"
IP_LO="127.0.0.1"
IP_DNS1="213.156.56.80"
IP_DNS2="1.253.128.37"
RANGE_IP_LAN="192.168.1.0/24"
echo 1 > /proc/sys/net/ipv4/ip_forward
$IPT -t nat -A POSTROUTING -o $NET -s $RANGE_IP_LAN -j MASQUERADE
$IPT -t nat -A PREROUTING -p tcp -i $NET --dport 4662 -j DNAT --to 192.168.1.2:4662
$IPT -t nat -A PREROUTING -p udp -i $NET --dport 4672 -j DNAT --to 192.168.1.2:4672
e usa chiaramente (solo) il pc con l'indirizzo 192.168.1.2
supermario
09-03-2008, 12:30
quello l'ho provato all'inizio, non andava nulla, ovvero il test delle porte non me lo faceva superare, altre cose non le ho viste/non sapevo cosa altro verificare
Shang Tsung
09-03-2008, 12:34
puoi dnattare a n indirizzi con questa regola:
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to 172.16.0.2-
172.16.0.3
praticamente un bilanciamento di carico in questo caso sulla 80.
Ho sempre pensato che una porta si potesse "dnattare" solamente una volta; intendo dire:
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to 172.16.0.2
iptables -t nat -A PREROUTING -p tcp --dport 25 -j DNAT --to 172.16.0.2
e fin qui ok
ma non, continuando l'ipotetico script, (ossia continuando da queste due righe sopra)
iptables -t nat -A PREROUTING -p tcp --dport 25 -j DNAT --to 172.16.0.3
In pratica avevo capito che, per stare all'esempio che ho fatto, non si potese dnattare la porta 25 "2 volte" ossia a due indirizzi ip diversi.
Capito cosa intendo?
Quindi invece tu mi dici che si può fare, giusto?
Shang Tsung
09-03-2008, 12:40
quello l'ho provato all'inizio, non andava nulla, ovvero il test delle porte non me lo faceva superare, altre cose non le ho viste/non sapevo cosa altro verificare
è impossibile che non vada, forse non va perchè vedo che dopo hai dovuto aggiungere anche questa riga per avere l'id alto:
$IPT -t nat -A PREROUTING -p udp -i $NET --dport 4665 -j DNAT --to 192.168.1.2:4665
quindi aggiungi anche questa riga allo scriptino che ti ho indicato; però lo devi copiare pari pari ed esguire perchè se lasci le policy in drop come hai tu è chiaro che non funziona il mio script dato che io invece le ho impostate in accept e quindi non aggiunto il permesso nelle catene di forward dato che non serve (in quato è tutto in accept)
prova così;
Non è molto vincente, come stai verificando di persona, partire da un firewall già finito per risolvere i problemi; si ricomncia lasciando tutto aperto come policy, come ti ho mostrato, e fai solo il nat delle porte che ti servono per ottenere l'id alto.
E' solo un consiglio, sia chiaro ;)
supermario
09-03-2008, 13:32
ok ora provo l'altra via
supermario
09-03-2008, 13:42
questo è il risultato dello script da te postato
Attendere mentre la connesione di eMule AdunanzA viene verificata...
IP: 28.255.248.199
Inizio test della porta TCP 4662...
Esito del test: SUPERATO
Inizio test della porta UDP 4672...
Esito del test: SUPERATO
La verifica della connessione e' stata eseguita con successo, eMule AdunanzA e' perfettamente funzionate e potra' sfruttare appieno le caratteristiche della rete p2p AdunanzA.
Buon Download!
AduTeam
il link per l'adu test scazza di brutto, prima va poi non va...meglio aprire adunanza e poi fare il test integrato(è lo stesso link, ma non funziona se lo carichi direttamente in firefox)
ora come si procede?
Shang Tsung
10-03-2008, 08:54
Potresti fare una roba del genere evitandoti un sacco di regole e divisioni etc etc.
#!/bin/bash
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X
iptables -Z
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT
iptables -t mangle -P OUTPUT ACCEPT
iptables -t mangle -P INPUT ACCEPT
iptables -t mangle -P FORWARD ACCEPT
iptables -t mangle -P POSTROUTING ACCEPT
iptables -t mangle -P PREROUTING ACCEPT
iptables -N block
iptables -A block -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A block -m state --state NEW -i ! eth1 -j ACCEPT
iptables -A block -j DROP
iptables -A INPUT -j block
iptables -A FORWARD -i eth1 -p tcp --dport 4662 -j ACCEPT
iptables -A FORWARD -i eth1 -p udp --dport 4665 -j ACCEPT
iptables -A FORWARD -i eth1 -p udp --dport 4672 -j ACCEPT
iptables -A FORWARD -j block
iptables -t nat -A PREROUTING -p tcp -i eth1 --dport 4662 -j DNAT --to 192.168.1.2:4662
iptables -t nat -A PREROUTING -p udp -i eth1 --dport 4665 -j DNAT --to 192.168.1.2:4665
iptables -t nat -A PREROUTING -p udp -i eth1 --dport 4672 -j DNAT --to 192.168.1.2:4672
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
echo 1 >> /proc/sys/net/ipv4/ip_forward
supermario
10-03-2008, 08:59
grazie per l'aiuto!
ora ho un altro dato in più...ovvero le porte si stanno aprendo e chiudendo a piacimento...se per un pò di tempo risultano aperte...poi accade qualcosa è si chiudono da capo...ho fatto connettere su emule un mio coinquilino e per qualche minuto siamo stati entrambi con id alto su emule...poi a entrambi porte chiuse(senza che io toccassi nulla..non ho aperto nummeno una shell ssh)...:mc:
Shang Tsung
10-03-2008, 09:05
mi spiace ma non so nulla di mulo, sono un pò fuori dal mondo per questa cosa :)
Devi essere sicuro delle porte;
di sicuro non è un problema di iptables, intendo dire che una volta che metti le regole non è che le cambia lui, quindi o non hai le porte giuste o è il test delle porte che mente o ...non so ma so che non è colpa di iptables :)
supermario
10-03-2008, 09:38
boh speriamo
anche da debian, con transmission(bittorrent) testanto la 4662 me la da dietro NAT
Shang Tsung
10-03-2008, 10:01
boh speriamo
anche da debian, con transmission(bittorrent) testanto la 4662 me la da dietro NAT
ma tu sei dietro l'hag di fastweb?
supermario
10-03-2008, 10:36
si ma di solito dietro l'HAG le porte sono tutte aperte di default
supermario
11-03-2008, 18:26
alla fine tutto funziona con l'ultimo script postato...va anche il demone di amule comandato dai pc in lan tramite amulegui :D
non capisco ancora come mai le porte tendono ad aprirsi e chiudersi a piacimento....ci sarà qualcosa di troppo "dispendioso" nel DNAT su + indirizzi insieme?
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.