Bonjour à tous, J'ai un serveur IPBX local (asterisk) qui fonctionne à merveille et je tente de configurer un softphone sur un téléphone Android. Le téléphone se connecte au serveur asterisk via un tunnel openvpn (ça fonctionne). J'ai configuré le softphone et je peux recevoir et émettre des appels VoIP lorsque tous les ports sont ouverts. Maintenant, je cherche à limiter un peu l'accès avec iptables et comme attendu, ça ne fonctionne pas. J'ai commencé par écrire dans /var/lib/iptables/active : [0:0] -A OUTPUT -o tun0 -p tcp -m tcp --dport sip -j ACCEPT [0:0] -A OUTPUT -o tun0 -p udp -m udp --dport sip -j ACCEPT [0:0] -A OUTPUT -o tun0 -p icmp -j ACCEPT [0:0] -A OUTPUT -o tun0 -m conntrack --ctstate ESTABLISHED,RELATED -m helper --helper sip -j ACCEPT [0:0] -A INPUT -i tun0 -p tcp -m tcp --sport sip -j ACCEPT [0:0] -A INPUT -i tun0 -p udp -m udp --sport sip -j ACCEPT [0:0] -A INPUT -i tun0 -p icmp -j ACCEPT [0:0] -A INPUT -i tun0 -m conntrack --ctstate ESTABLISHED,RELATED -m helper --helper sip -j ACCEPT Le softphone ouvre une session SIP. Mais les paquets "voix" en UDP ne passent pas. Je tente donc l'utilisation de nf_conntrack_sip que je charge dans /etc/modules en rajoutant ceci à la fin du fichier de configuration d'iptables : *raw :PREROUTING ACCEPT [0:0] :OUTPUT ACCEPT [0:0] [0:0] -A PREROUTING -p tcp -m tcp --dport ftp -j CT --helper ftp [0:0] -A PREROUTING -p tcp -m tcp --dport sip -j CT --helper sip [0:0] -A PREROUTING -p udp -m udp --dport sip -j CT --helper sip [0:0] -A OUTPUT -p tcp -m tcp --sport sip -j CT --helper sip [0:0] -A OUTPUT -p udp -m udp --sport sip -j CT --helper sip COMMIT Là, j'ai un comportement que je ne comprends pas. Conntrack sur l'adresse du téléphone Android me renvoie : Root rayleigh:[/etc/openvpn/ccd] > conntrack --dump | grep -E '192.168.3.2' udp 17 96 src=192.168.3.2 dst=192.168.3.1 sport=48161 dport=5060 src=192.168.3.1 dst=192.168.3.2 sport=5060 dport=48161 [ASSURED] mark=0 use=1 Notez bien l'absence de helper=sip, alors que sur un téléphone CISCO, j'obtiens bien : Root rayleigh:[/etc/openvpn/ccd] > conntrack --dump | grep -E '192.168.10.253' udp 17 3300 src=192.168.10.253 dst=192.168.1.1 sport=5060 dport=5060 src=192.168.1.1 dst=192.168.10.253 sport=5060 dport=5060 [ASSURED] mark=0 helper=sip use=1 Pour l'instant, j'ai contourné le problème en ouvrant tous les ports UDP en entrée et en sortie vers le téléphone Android au travers du VPN. Mais j'aimerais bien comprendre pourquoi nf_conntrack_sip ne fonctionne pas comme attendu. À toutes fins utiles, les endpoints CISCO et Android sont configurés de la même manière (SIP/UDP). Je suis preneur de toute idée pour corriger le problème. Bien cordialement, JB
Attachment:
signature.asc
Description: OpenPGP digital signature