|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Jul 2002
Città: Padova
Messaggi: 4245
|
Ancora su iptables................
Ciao a tutti, sto configurando un Gateway VoIP, il quale richiede una serie di porte aperte sul firewall.
la porta WAN del Gateway VoIP ha il seguente indirizzo: 192.168.0.220 la porta LAN del Gateway VoIP ha il seguente indirizzo: 192.168.0.221 Il router/firewall linux ha 192.168.0.254 e il gateway impostato sull'adattatore VoIP è impostato con lo stesso valore. Le porte che servono aperte sono: 3478, 5060, 8000, 8001, 8002, 8003. Io ho aperto le porte sul firewall e attivato il forward verso il 192.168.0.220, però continua a non collegarsi e non riesco a capire cosa ho trascurato. Questi sono gli script che inizializzano il NAT e il firewall: #!/bin/bash EXTERNAL=eth0 INTERNAL=eth1 iptables="/usr/sbin/iptables" # Blocca il forward fino a quando non vengono stabilite tutte le regole. echo '0' > /proc/sys/net/ipv4/ip_forward # Carica i moduli necessari modprobe ip_tables modprobe ip_conntrack modprobe ip_conntrack_ftp modprobe ip_nat_ftp modprobe iptable_nat modprobe ipt_MASQUERADE # Attiva il nat (routing) iptables -t nat -A POSTROUTING -o $EXTERNAL -j MASQUERADE iptables -I FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT # Forwarda tutti i pacchetti inerenti alla nostra rete locale iptables -A FORWARD -s 192.168.0.0/24 -j ACCEPT # Forwarda i pacchetti destinati alla porte 4661-4662 per il pc 192.168.0.253 # iptables -t nat -A PREROUTING -i $EXTERNAL -p tcp --dport 4661 -j DNAT --to-destination 192.168.0.1:4661 # iptables -t nat -A PREROUTING -i $EXTERNAL -p tcp --dport 4662 -j DNAT --to-destination 192.168.0.1:4662 # Gestione porte per VoIP iptables -t nat -A PREROUTING -i $EXTERNAL -p tcp --dport 5060 -j DNAT --to-destination 192.168.0.220:5060 iptables -t nat -A PREROUTING -i $EXTERNAL -p tcp --dport 3478 -j DNAT --to-destination 192.168.0.220:3478 iptables -t nat -A PREROUTING -i $EXTERNAL -p tcp --dport 8000 -j DNAT --to-destination 192.168.0.220:8000 iptables -t nat -A PREROUTING -i $EXTERNAL -p tcp --dport 8001 -j DNAT --to-destination 192.168.0.220:8001 iptables -t nat -A PREROUTING -i $EXTERNAL -p tcp --dport 8002 -j DNAT --to-destination 192.168.0.220:8002 iptables -t nat -A PREROUTING -i $EXTERNAL -p tcp --dport 8003 -j DNAT --to-destination 192.168.0.220:8003 iptables -A FORWARD -i $EXTERNAL -p tcp --dport 5060 -j ACCEPT iptables -A FORWARD -i $EXTERNAL -p tcp --dport 3478 -j ACCEPT iptables -A FORWARD -i $EXTERNAL -p tcp --dport 8000 -j ACCEPT iptables -A FORWARD -i $EXTERNAL -p tcp --dport 8001 -j ACCEPT iptables -A FORWARD -i $EXTERNAL -p tcp --dport 8002 -j ACCEPT iptables -A FORWARD -i $EXTERNAL -p tcp --dport 8003 -j ACCEPT # ----------------------- # iptables -A FORWARD -i $EXTERNAL -p tcp --dport 4661 -j ACCEPT # iptables -A FORWARD -i $EXTERNAL -p tcp --dport 4662 -j ACCEPT # iptables -A FORWARD -j DROP # Attiva il forward echo '1' > /proc/sys/net/ipv4/ip_forward # Policy di default delle catene iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT DROP # Accetta tutti i pacchetti in input e output dalla rete iptables -A INPUT -s 192.168.0.0/24 -j ACCEPT iptables -A OUTPUT -d 192.168.0.0/24 -j ACCEPT # Accetto tutti i pacchetti che derivano da connessioni che io stesso ho iniziato iptables -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT # Accetto tutti i paccheti in ingresso per le connessioni che vengono generate dall'interno iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT # Apro la porta # ssh iptables -A INPUT -p tcp --dport ssh -j ACCEPT # www iptables -A INPUT -p tcp --dport www -j ACCEPT # smtp iptables -A INPUT -p tcp --dport smtp -j ACCEPT # pop3 iptables -A INPUT -p tcp --dport pop3 -j ACCEPT # amavis:10024/10025 iptables -A INPUT -p tcp --dport 10024 -j ACCEPT iptables -A INPUT -p tcp --dport 10025 -j ACCEPT # amule iptables -A INPUT -p tcp --dport 4661 -j ACCEPT iptables -A INPUT -p tcp --dport 4662 -j ACCEPT iptables -A INPUT -p tcp --dport 4665 -j ACCEPT iptables -A INPUT -p udp --dport 4672 -j ACCEPT iptables -A INPUT -p udp --dport 4665 -j ACCEPT # amuleweb iptables -A INPUT -p tcp --dport 4711 -j ACCEPT iptables -A INPUT -p tcp --dport 4712 -j ACCEPT # fwlogwatch iptables -A INPUT -p tcp --dport 8888 -j ACCEPT # --------- Gestione porte per VoIP ---------- iptables -A INPUT -p tcp --dport 5060 -j ACCEPT iptables -A INPUT -p tcp --dport 3478 -j ACCEPT iptables -A INPUT -p tcp --dport 8000 -j ACCEPT iptables -A INPUT -p tcp --dport 8001 -j ACCEPT iptables -A INPUT -p tcp --dport 8002 -j ACCEPT iptables -A INPUT -p tcp --dport 8003 -j ACCEPT # --------------------------------------------- # Loggo tutto quello che NON deriva da connessioni che io ho instaurato # a livello 7 (debug) del syslog. Questo significa, per esempio in Debian, che i pacchetti # bloccati verranno visualizzati in /var/log/syslog. iptables -A INPUT -j LOG --log-level 7 --log-prefix "Blocked Packet: " Cosa sto sbagliando secondo voi? Grazie. ![]() |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Jul 2002
Città: Padova
Messaggi: 4245
|
![]() |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Nov 2005
Messaggi: 1868
|
Potrebbe essere un problema di routing, route -n che dice?
__________________
[ W.S. ] |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Nov 2005
Messaggi: 1868
|
Altra cosa (che non influisce sul corretto flusso dei dati):
Io non loggherei tutto quello che mi arriva su una porta, anche se non è desiderato. Rischi di avere un file di log enorme e quindi illeggibile (a seconda della visibilità della macchina), piuttosto loggo i tentativi di connessione potenzialmente dannosi e li limito per numero in un certo intervallo di tempo, giusto per avere un'idea di cosa è arrivato.
__________________
[ W.S. ] |
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Jul 2002
Città: Padova
Messaggi: 4245
|
# route -n
Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.189.120 0.0.0.0 255.255.255.248 U 0 0 0 eth0 192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1 0.0.0.0 192.168.189.126 0.0.0.0 UG 0 0 0 eth0 Tieni presente che internet/posta funzionano senza problemi, l'unico problema è solo il Gatway VoIP che non si collega. Se assegno al Gatway VoIP l'IP pubblico e lo collego alla wan, si collega immediatamente, quindi il problema "secondo me" sta nel forward dei pacchetti, ma non capisco cosa posso aver trascurato. Grazie dell'attenzione. |
![]() |
![]() |
![]() |
#6 | |
Senior Member
Iscritto dal: Jul 2002
Città: Padova
Messaggi: 4245
|
Quote:
|
|
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: Nov 2005
Messaggi: 1868
|
ok, se internet e posta vanno e fanno "la stessa strada" non è la rotta.
Guardando lo script vedo che nella sezione dove imposti il PREROUTING, redirigi il traffico in ingresso con destinazione xxx e non provenienti da xxx. Non essendo sicuro di aver ben compreso l'architettura della tua rete non ne ho la certezza, ma penso debbano essere consentite almeno anche quelle (se non solo quelle) cioè vedo bene iptables -t nat -A PREROUTING -i $EXTERNAL -p tcp --dport 5060 -j DNAT --to-destination 192.168.0.220:5060 iptables -t nat -A PREROUTING -i $EXTERNAL -p tcp --sport 5060 -j DNAT --to-destination 192.168.0.220:5060 per ogni porta voip. Se nemmeno cosi va prova a sniffare il traffico nei vari segmenti della rete e vedi dove si inceppa il tutto.
__________________
[ W.S. ] |
![]() |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: Jul 2002
Città: Padova
Messaggi: 4245
|
In base al tuo consiglio, ho modificato la parte VoIP dello script del firewall in questo modo:
# Gestione porte per VoIP iptables -t nat -A PREROUTING -i $EXTERNAL -p tcp --dport 5060 -j DNAT --to-destination 192.168.0.220:5060 iptables -t nat -A PREROUTING -i $EXTERNAL -p tcp --sport 5060 -j DNAT --to-destination 192.168.0.220:5060 iptables -t nat -A PREROUTING -i $EXTERNAL -p tcp --dport 3478 -j DNAT --to-destination 192.168.0.220:3478 iptables -t nat -A PREROUTING -i $EXTERNAL -p tcp --sport 3478 -j DNAT --to-destination 192.168.0.220:3478 iptables -t nat -A PREROUTING -i $EXTERNAL -p tcp --dport 8000 -j DNAT --to-destination 192.168.0.220:8000 iptables -t nat -A PREROUTING -i $EXTERNAL -p tcp --sport 8000 -j DNAT --to-destination 192.168.0.220:8000 iptables -t nat -A PREROUTING -i $EXTERNAL -p tcp --dport 8001 -j DNAT --to-destination 192.168.0.220:8001 iptables -t nat -A PREROUTING -i $EXTERNAL -p tcp --sport 8001 -j DNAT --to-destination 192.168.0.220:8001 iptables -t nat -A PREROUTING -i $EXTERNAL -p tcp --dport 8002 -j DNAT --to-destination 192.168.0.220:8002 iptables -t nat -A PREROUTING -i $EXTERNAL -p tcp --sport 8002 -j DNAT --to-destination 192.168.0.220:8002 iptables -t nat -A PREROUTING -i $EXTERNAL -p tcp --dport 8003 -j DNAT --to-destination 192.168.0.220:8003 iptables -t nat -A PREROUTING -i $EXTERNAL -p tcp --sport 8003 -j DNAT --to-destination 192.168.0.220:8003 iptables -A FORWARD -i $EXTERNAL -p tcp --dport 5060 -j ACCEPT iptables -A FORWARD -i $EXTERNAL -p tcp --sport 5060 -j ACCEPT iptables -A FORWARD -i $EXTERNAL -p tcp --dport 3478 -j ACCEPT iptables -A FORWARD -i $EXTERNAL -p tcp --sport 3478 -j ACCEPT iptables -A FORWARD -i $EXTERNAL -p tcp --dport 8000 -j ACCEPT iptables -A FORWARD -i $EXTERNAL -p tcp --sport 8000 -j ACCEPT iptables -A FORWARD -i $EXTERNAL -p tcp --dport 8001 -j ACCEPT iptables -A FORWARD -i $EXTERNAL -p tcp --sport 8001 -j ACCEPT iptables -A FORWARD -i $EXTERNAL -p tcp --dport 8002 -j ACCEPT iptables -A FORWARD -i $EXTERNAL -p tcp --sport 8002 -j ACCEPT iptables -A FORWARD -i $EXTERNAL -p tcp --dport 8003 -j ACCEPT iptables -A FORWARD -i $EXTERNAL -p tcp --sport 8003 -j ACCEPT Però non si collega lo stesso. Ti do una piccola spiegazione sulla struttura della mia rete, così magari riesci a capire meglio il problema. La rete è composta da: Ingresso Internet (ethernet) con indirizzo pubblico aaa.aaa.aaa.xxx Server linux che funge da router e firewal e........... con eth0 WAN impostata su aaa.aaa.aaa.xxx ed eth1 LAN impostata su 192.168.0.254. Logicamente sulla lan ci sono una serie di PC e apparati di rete che girano su 192.168.0.xxx GW 192.168.0.254. Uno di questi è il Gatway VoIP che ho configurato così: WAN: 192.168.0.220 GW 192.168.0.254 LAN: 192.168.0.221 GW 192.168.0.254 Spero di essere stato abbastanza chiaro ![]() Grazie. Ciao. |
![]() |
![]() |
![]() |
#9 |
Senior Member
Iscritto dal: Nov 2005
Messaggi: 1868
|
Chiarissimo!
Ok, ho un gran dubbio sulla tabella di routing, ma magari l'hai modificata per nn mostrare l'ip visto che hai detto che tutto funziona, il dubbio è: come può essere che il default gw è un indirizzo interno (192.168.0.126)? Se è cosi e funziona è perchè viene buttato sull'interfaccia esterna (eth0), cmq io lo aggiusterei. Tornando al problema (visto che tutto il resto funziona deve andar anche il voip): A guardare lo script mi sembra a posto, tranne che non ho visto la pulitura iniziale delle tabelle (se è cosi assicurati di non avere entrate non volute). Siamo sicuri che sono solo quelle porte e solo in tcp da redirigere?
__________________
[ W.S. ] |
![]() |
![]() |
![]() |
#10 | |
Senior Member
Iscritto dal: Jul 2002
Città: Padova
Messaggi: 4245
|
Quote:
![]() Allora, il default gw è 192.168.189.126 e non 192.168.0.126, ma, a parte questo, mi hai fatto venire un dubbio sulle porte. Infatti sul manuale è scritto di aprire le porte 3478, 5060, 8000-8003, però io ho dato per scontato che fossero TCP, mentre facendo delle rierche ho scoperto che le porte sono UDP, solo che ho ulteriormente modificato le impotazioni del firewall, ma non si collega ancora. Appena trovo un attimo di tempo faccio ulteriori prove con più calma e se non riesco, dovrò purtroppo rompere ancora le p@..e a voi ![]() I'm sorry!!!! Per il momento grazie dell'aiuto. Ciao. |
|
![]() |
![]() |
![]() |
#11 |
Senior Member
Iscritto dal: Dec 2000
Città: Trento
Messaggi: 5917
|
domandina... ma il tuo gateway voip (non sono per nulla esperto in queste tecnologie) e' praticamente un qualcosa che fa da "NAT" per cose collegate alla LAN del gateway? (come al solito non mi sono spiegato bene!)
Comunque credo che il problema siano i due ip che ha il gateway... se non hai messo un netmask adeguata i pacchetti che sono nella LAN del gateway non sapranno come uscire. se il gateway VOIP e' configurato cosi' (ripeto.. non conosco i gateway voip.. faccio finta che sia come un computer normale!): wan ip: 192.168.0.220 netmask 255.255.255.0 lan ip: 192.168.0.221 netmask 255.255.255.0 ed ha impostato come default gw 192.168.0.254 In questa maniera hai su due interfacce fisiche diverse la stessa sottorete, e credo che il tutto crei diversi probelmi! La soluzione e' o quella di mettere una rete diversa sulla lan del gateway voip (quindi un ip del tipo 192.168.1.221.. e ovviamente devi cambiare anche tutti gli ip degli apparecchi voip di conseguenza) o impostare le maschere in maniera corretta (magari usa gip per farlo senza dover fare a mano!) Ciao
__________________
Linux User #272700 >+++++++++[<+++++++++>-]<+.++.>++++[<---->-]<++.+++++++. HOWTO: SSH Firewall e DMZ ɐɹdosoʇʇos oʇuǝs ıɯ |
![]() |
![]() |
![]() |
#12 | |
Senior Member
Iscritto dal: Jul 2002
Città: Padova
Messaggi: 4245
|
Quote:
Però, visti gli impegni di lavoro che non mi lasciano più di tanto tempo per fare prove serie e con serenità, prima di chiedere ulteriore aiuto, devo trovare il tempo di fare un po' di prove serie con serenità e concentrazione................... (ma quando mai sarà???) ![]() ![]() Ciao. |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 22:06.