[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: SIP et iptables



Bonjour

. asterisk est il sur le serveur OpenVPN? Si oui, le réseau 192.168.3.x/24 est il dans localnet?

. les ports UDP à ouvrir sont ceux du RTP, 10000 à 20000 de base

. SIP et firewall ne font pas bon ménage, sous Andoid j'utilise zoiper en iax

. de mémoire avec Wireguard cela passait avec zoiper en sip sous Android. À revalider

Le 09/07/2025 à 15:48, BERTRAND Joël a écrit :
	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



Reply to: