La Fibre

Télécom => Logiciels et systèmes d'exploitation => Linux Linux => Discussion démarrée par: TheTroll le 18 mars 2014 à 22:26:21

Titre: RTSP et NAT sous linux
Posté par: TheTroll le 18 mars 2014 à 22:26:21
J'utilise du routage tout simple sous iptables, mais la limitation est que je suis oblige de forcer le port RTSP.

En gros je fais un:

iptables -t nat -A PREROUTING -i eth1 -p udp --dport 87${i}0:87${i}9 -j DNAT --to-destination 192.168.0.$i

pour i de 1 a 9.

Donc les PCS de 192.168.0.1 a 192.168.0.9 doivent configurer le port RTSP (dans VLC par exemple) en fonction

par exemple, 192.168.0.5 peut utiliser de 8750, 8752, .... (il faut 2 ports, donc il faut laisser port+1 de libre).

Titre: RTSP et NAT sous linux
Posté par: corrector le 18 mars 2014 à 23:28:31
Tu as essayé ce RTSP-conntrack
http://mike.it-loops.com/rtsp/ (http://mike.it-loops.com/rtsp/)
?
Titre: RTSP et NAT sous linux
Posté par: TheTroll le 18 mars 2014 à 23:37:31
Nope mais c est interessant!
Ca route le RTSP a la volee suivant l initiateur ?
Titre: RTSP et NAT sous linux
Posté par: corrector le 18 mars 2014 à 23:50:32
Oui, comme netfilter ne fait par défaut pour le FTP (module préchargé), fonction qui est dispo sur la plupart des box.

Attention, je n'ai pas testé ce module. Je suis en train de regarder le code.
Titre: RTSP et NAT sous linux
Posté par: TheTroll le 18 mars 2014 à 23:51:26
Je l ai charge mais pour l instant ca ne marche pas...
je vais voir pr activer le debug
Titre: RTSP et NAT sous linux
Posté par: TheTroll le 18 mars 2014 à 23:55:12
Mar 18 23:54:16 tm kernel: [1053684.940362] conntrackinfo = 2
Mar 18 23:54:16 tm kernel: [1053684.943380] IP_CT_DIR_REPLY
Mar 18 23:54:16 tm kernel: [1053684.945577] IP_CT_DIR_REPLY
Mar 18 23:54:16 tm kernel: [1053684.946390] found a setup message
Mar 18 23:54:16 tm kernel: [1053684.946393] tran='Transport: RTP/AVP/TCP;unicast;interleaved=0-1
Mar 18 23:54:16 tm kernel: [1053684.946393] '
Mar 18 23:54:16 tm kernel: [1053684.946396] no udp transports found
Mar 18 23:54:16 tm kernel: [1053684.947073] IP_CT_DIR_REPLY
Mar 18 23:54:16 tm kernel: [1053684.947992] found a setup message
Mar 18 23:54:16 tm kernel: [1053684.947998] tran='Transport: RTP/AVP;unicast;client_port=8720-8721
Mar 18 23:54:16 tm kernel: [1053684.947998] '
Mar 18 23:54:16 tm kernel: [1053684.948001] lo port found : 8720
Mar 18 23:54:16 tm kernel: [1053684.948004] udp transport found, ports=(1,8720,8721)
Mar 18 23:54:16 tm kernel: [1053684.948006] setup expectation for rtcp
Mar 18 23:54:16 tm kernel: [1053684.948010] expect_related 212.27.38.253:0-0-MONIPEXTERNE:8720-8721
Mar 18 23:54:16 tm kernel: [1053684.948011] NAT rtsp help_out
Mar 18 23:54:16 tm kernel: [1053684.951770] IP_CT_DIR_REPLY
Mar 18 23:54:16 tm kernel: [1053684.954303] IP_CT_DIR_REPLY

j ai ce log qd j essaye de lancer un chan ... mais ca ne fonctionne pas
Titre: RTSP et NAT sous linux
Posté par: corrector le 19 mars 2014 à 00:21:08
Quelles sont les règles iptables?
Titre: RTSP et NAT sous linux
Posté par: TheTroll le 19 mars 2014 à 00:23:24
En fait il n a pas l air de les creer ...

La boucle
while (nf_mime_nextline(ptcp, hdrsoff+hdrslen, &off, &lineoff, &linelen))
exit directos ... apparement il n arrive a extaire ce qu il faut.
Du coup ca n arrive pas au bout du process :/
Titre: RTSP et NAT sous linux
Posté par: corrector le 19 mars 2014 à 00:51:22
Pourtant d'après le log il détecte bien la demande et crée un expect.

Est-ce que tu as bien enlevé les anciennes règles de redirection?
Titre: RTSP et NAT sous linux
Posté par: TheTroll le 19 mars 2014 à 00:52:24
Oui oui j ai bien retire ca ...

je m interesse a ce message que j ai eu au premier insmod :

[1052942.005488] nf_conntrack: automatic helper assignment is deprecated and it will be removed soon. Use the iptables CT target to attach helpers instead.

Titre: RTSP et NAT sous linux
Posté par: corrector le 19 mars 2014 à 01:14:32
Tu as quoi comme règles de filtrage?
Titre: RTSP et NAT sous linux
Posté par: TheTroll le 19 mars 2014 à 01:36:55
Aucune, pr le test je fais un iptables -F
Titre: RTSP et NAT sous linux
Posté par: corrector le 19 mars 2014 à 02:21:06
je m interesse a ce message que j ai eu au premier insmod :

[1052942.005488] nf_conntrack: automatic helper assignment is deprecated and it will be removed soon. Use the iptables CT target to attach helpers instead.
Citer
Introduction

One classic problem with helpers is the fact that helpers listen on predefined ports. If a service does not run on standard port, it is necessary to declare it. Before 2.6.34, the only method to do so was to use a module option. This was resulting in having a systematic parsing of the added port by the chosen helper. This was clearly suboptimal and the CT target has been introduced in 2.6.34. It allows to specify what helper to use for a specific flow. For example, let's say we have a FTP server on IP address 1.2.3.4 running on port 2121.

To declare it, we can simply do

iptables -A PREROUTING -t raw -p tcp --dport 2121 \
       -d 1.2.3.4 -j CT --helper ftp
Therefore, the use of the module options is NOT recommended anymore - please use the CT target instead.
https://home.regit.org/netfilter-en/secure-use-of-helpers/
Titre: RTSP et NAT sous linux
Posté par: TheTroll le 19 mars 2014 à 11:49:18
Ouais j avais vu ca, mais je ne vois pas trop comment l associer au RTSP. Je ne vois pas helper specific.

EDIT: http://mike.it-loops.com/item/29 (http://mike.it-loops.com/item/29) => l avant dernier commentaire reporte qu il y a un souci sur 3.10, qui est ma version de kernel...
Titre: RTSP et NAT sous linux
Posté par: Breizh 29 le 19 mars 2014 à 17:39:16
Pour les débutants sous GNULinux il y a "Firestarter (http://doc.ubuntu-fr.org/firestarter)" (doc Ubuntu) très simple à utiliser et efficace, c'est par une interface graphique.

_________________________

Installation de Firestarter

1. Activer les dépôts
Tout d'abord, activez les dépôts Universe et Multiverse.
(Opération inutile pour Ubuntu 7.04 ("Feisty Fawn") et suivants).

2. Télécharger et installer Firestarter
Dans un terminal, tapez: sudo apt install firestarter (si votre mot de passe est demandé, entrez-le) et attendez la fin de l'installation.

3. Lancez Firestarter
Allez dans le menu Système > Administration et lancez Firestarter:

(https://lafibre.info/testdebit/ubuntu/200801_firestarter_tuto_1.png)


Votre mot de passe admin vous sera demandé: Entrez-le.
(https://lafibre.info/testdebit/ubuntu/200801_firestarter_tuto_2.png)


4. Configuration initiale

Dans "Périphériques détectés", sélectionnez le périphérique auquel est reliée votre connexion internet (par exemple eth0 s'il s'agit d'une connexion internet par Ethernet.)
Cochez les deux cases et cliquez sur "Avancer"

(https://lafibre.info/testdebit/ubuntu/200801_firestarter_tuto_3.png)


Dans l'écran suivant, ne cochez pas la case "Partage de connexion".
(Note: Si vous utilisez un routeur ou une "box" avec le mode routeur pour partager votre connexion, vous n'avez aucun besoin de cocher cette case.)

(https://lafibre.info/testdebit/ubuntu/200801_firestarter_tuto_4.png)


Cochez ensuite "Démarrer le pare-feu" et cliquez sur "Enregistrer".

(https://lafibre.info/testdebit/ubuntu/200801_firestarter_tuto_5.png)


Voilà !
Le firewall est actif et vous protège dès à présent.
Vous pouvez voir son icône dans la barre des tâches, ainsi que sa fenêtre.
Vous pouvez fermer la fenêtre de Firestarter: Le firewall sera toujours actif.

(https://lafibre.info/testdebit/ubuntu/200801_firestarter_tuto_6.png)


FAQ

Je viens d'installer Firestarter et je n'ai configuré aucune règle. Comment me protège-t-il ?

Après avoir effectué le wizard initial de configuration, Firestart vous protège de la manière suivante:

    Toutes les tentatives de connexion entrantes sont bloquées.
    Toutes les connexions sortantes sont autorisées.



Ce qui offre déjà une très bonne protection.

Libre à vous d'ajouter des règles plus spécifiques.


J'ai besoin d'ouvrir un port !


Certains logiciels se comportent en mode "serveur" pour recevoir des connexions. Cela concerne les logiciels de Peer-to-peer, Téléphone sur IP, chat, jeux en ligne...
Il est nécessaire d'ouvrir ces ports dans le firewall.

Cela n'est pas compliqué. Par exemple pour BitTorrent:

Affichez la fenêtre de Firestarter, onglet "Politique", sélectionnez "Politique du traffic entrant".
Dans la partie basse, faites un clic-droit et choisissez "Ajouter une règle".

(https://lafibre.info/testdebit/ubuntu/200801_firestarter_tuto_7.png)


Sélectionnez "BitTorrent": les ports sont automatiquement renseignés. Cliquez sur "Add".
(Note: vous pouvez entrer un nouveau nom et des numéros de port au choix pour un logiciel particulier.)

(https://lafibre.info/testdebit/ubuntu/200801_firestarter_tuto_8.png)


Vous pouvez voir la règle que nous venons de créer. Cliquer sur "Appliquer Politique" pour demander à Firestarter d'appliquer ces nouvelles règles.

(https://lafibre.info/testdebit/ubuntu/200801_firestarter_tuto_9.png)


Les numéros de ports à ouvrir dépendent de chaque logiciel.

Et pour un même protocole, il est possible que le port soit différent d'un logiciel à l'autre (par exemple, BitTorrent est habituellement sur les ports 6881 à 6889, mais rien n'empêche d'avoir un logiciel BitTorrent fonctionnant sur des ports totalement différents).


Source (http://www.commentcamarche.net/faq/5440-installer-un-firewall-sous-ubuntu-firestarter)
Titre: RTSP et NAT sous linux
Posté par: TheTroll le 19 mars 2014 à 17:43:55
Salut,

j'ai fait un test sur 3.7.10 et  ca ne marche tjs pas ...
Je testerai ce soir sur 3.7.0 mais je n'y crois pas trop!
Titre: RTSP et NAT sous linux
Posté par: Calinou le 19 mars 2014 à 18:31:59
Pour rediriger des ports via l'UPnP, il y a http://upnp-portmapper.sourceforge.net/ (http://upnp-portmapper.sourceforge.net/) si tu ne peux ou veux pas accéder à l'interface de ta box.

Ouvrir le port dans le pare-feu ne sert à rien s'il n'est pas redirigé.
Titre: RTSP et NAT sous linux
Posté par: TheTroll le 19 mars 2014 à 18:57:03
Meme probleme avec 3.7.0 ...
bref surement mon setup du coup :/
Titre: RTSP et NAT sous linux
Posté par: TheTroll le 24 mars 2014 à 10:34:43
Hello,

bonne nouvelle ca marche!
Je ne sais pas pourquoi mais la maniere de recuperer les data du paquet ne fonctionnait pas dans le fichier nf_nat_rtsp.c.
J'ai fait une modif pour utiliser la meme methode que dans nf_conntract_rtsp.c et ca marche!

le git ici: https://github.com/maru-sama/rtsp-linux (https://github.com/maru-sama/rtsp-linux)
le patch ici : http://pastebin.com/XsyyCxzW (http://pastebin.com/XsyyCxzW)

A+