• Re: SIP et iptables

    From NoSpam@21:1/5 to All on Wed Jul 9 16:00:01 2025
    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


    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From =?UTF-8?Q?BERTRAND_Jo=c3=abl?=@21:1/5 to All on Wed Jul 9 15:50:02 2025
    This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --Uvrenb7Pz0awinclOWOLbxVw9u6UT8gOv
    Content-Type: text/plain; charset=UTF-8
    Content-Transfer-Encoding: quoted-printable

    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


    --Uvrenb7Pz0awinclOWOLbxVw9u6UT8gOv--

    -----BEGIN PGP SIGNATURE-----

    iHUEABYKAB0WIQQj8MW8iOsC2RXEznnFW/s/mMLXCAUCaG5zMQAKCRDFW/s/mMLX CHKlAQDNh2AYnkMen9RgCGlahrAl/Dc6bmbYASwdxnITKlqpugEA1HU0BAiSWRZ8 XvxVMjeISS6iFKj1oCTb/bHblzO26Ak=
    =DyEx
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From NoSpam@21:1/5 to All on Wed Jul 9 16:30:01 2025
    Le 09/07/2025 à 16:15, BERTRAND Joël a écrit :
    [...]
    . les ports UDP à ouvrir sont ceux du RTP, 10000 à 20000 de base
    Non. Les ports UDP sont pris aléatoirement entre 1024 et 65534.
    Pas dans asterisk: Voir le fichier rtp.conf
    . SIP et firewall ne font pas bon ménage, sous Andoid j'utilise zoiper
    en iax
    C'est pour cela qu'il y a nf_conntrack_sip. La question est de savoir pourquoi il ne fonctionne pas comme attendu.
    nf_nat_sip est également utilisé?

    Quel est le logiciel client Android?

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From =?UTF-8?Q?BERTRAND_Jo=c3=abl?=@21:1/5 to All on Wed Jul 9 16:20:01 2025
    This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --oB7YvyLg6WDQgdwtH0Z3YEHukAkuhKyui
    Content-Type: text/plain; charset=UTF-8
    Content-Transfer-Encoding: quoted-printable

    NoSpam a écrit :
    Bonjour

    Bonjour,

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

    Oui

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

    Non. Les ports UDP sont pris aléatoirement entre 1024 et 65534.

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

    C'est pour cela qu'il y a nf_conntrack_sip. La question est de savoir pourquoi il ne fonctionne pas comme attendu.

    JB


    --oB7YvyLg6WDQgdwtH0Z3YEHukAkuhKyui--

    -----BEGIN PGP SIGNATURE-----

    iHUEABYKAB0WIQQj8MW8iOsC2RXEznnFW/s/mMLXCAUCaG55aQAKCRDFW/s/mMLX CIz7AP9oDvQ0jmU1xqeDYix63QJK+nno864kMWKye3i6U+oxAAD+PKIfseerNpuN MhNcQUu3lEo8LNWnizebvemqR5kyWAw=
    =tn3M
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From =?UTF-8?Q?BERTRAND_Jo=c3=abl?=@21:1/5 to All on Wed Jul 9 17:10:01 2025
    This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --RbEU2Q1EPW2bSPo8jhD792q07OAStYQZ5
    Content-Type: text/plain; charset=UTF-8
    Content-Transfer-Encoding: quoted-printable

    NoSpam a écrit :

    Le 09/07/2025 à 16:15, BERTRAND Joël a écrit :
    [...]
    . les ports UDP à ouvrir sont ceux du RTP, 10000 à 20000 de base
        Non. Les ports UDP sont pris aléatoirement entre 1024 et 65534.
    Pas dans asterisk: Voir le fichier rtp.conf
    . SIP et firewall ne font pas bon ménage, sous Andoid j'utilise zoiper
    en iax
        C'est pour cela qu'il y a nf_conntrack_sip. La question est de savoir
    pourquoi il ne fonctionne pas comme attendu.
    nf_nat_sip est également utilisé?

    Quel est le logiciel client Android?

    Linphone, mais ce n'est pas le débat. Il fonctionne très bien, c'est nf_coontrack_sip qui ne fait pas ce qu'il faut.


    --RbEU2Q1EPW2bSPo8jhD792q07OAStYQZ5--

    -----BEGIN PGP SIGNATURE-----

    iHUEABYKAB0WIQQj8MW8iOsC2RXEznnFW/s/mMLXCAUCaG6D8QAKCRDFW/s/mMLX CDadAP430ORoqsphcfQ79BoJR6kZJIcVy4iat48B+Stj9Fb2LwEA/qwHwH59KT4c 1NkVgw/8x4zETmlWkph593LRClzvZAY=
    =s6Fa
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From =?UTF-8?Q?BERTRAND_Jo=c3=abl?=@21:1/5 to All on Thu Jul 10 09:50:01 2025
    This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --WXO9a8a3KCQAdwq5zhTYY9NKePPWIGEMv
    Content-Type: text/plain; charset=UTF-8
    Content-Transfer-Encoding: quoted-printable

    Olivier a écrit :
    Si je devais examiner de près la config iptables, je ferais bien
    attention à ce qu'il n'y ai pas de confusion entre le port d'écoute d'Asterisk (probalement udp:5060) et celui de linphone (probablement
    un port udp quelconque pour laisser libre le port 5060 sur la machine Android).

    Le linphone se connecte au serveur asterisk sur le 5060/UDP. La paquets voix passent sur un port UDP quelconque. nf_conntrack_sip est justement
    là pour intercepter le port négocié dans le protocole SIP et permettre
    la configuration iptables.

    Là, le souci est que nf_conntrack_sip semble ne pas attraper ce qui provient de l'interface tun0 (il fonctionne sur lan0 qui est une
    interface ethernet classique).


    --WXO9a8a3KCQAdwq5zhTYY9NKePPWIGEMv--

    -----BEGIN PGP SIGNATURE-----

    iHUEABYKAB0WIQQj8MW8iOsC2RXEznnFW/s/mMLXCAUCaG9ubgAKCRDFW/s/mMLX CKNcAQC9DSCoJAPGdinrTjl1Xdby/3Xfv5WdjnLr33gVuGnJUAEAwQ9Fr+0FJRoH etItGYz4CtujV/5PnVj5uQMGht6hRgk=
    =zCss
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)