Module noyau pour DNAT

Fermé
stardz31 Messages postés 19 Date d'inscription dimanche 18 mai 2008 Statut Membre Dernière intervention 18 janvier 2009 - 25 mai 2008 à 15:25
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 - 25 mai 2008 à 20:38
Bonjour,
ALors je ss en train de programmer un module noyau sous debian etch pour faire du Destination NAT
alors ça a besoin de deux modules en fait; un pour conntrack et un pour NAT

et pour le moment je pense que j'ai bcp d'erreurs dans mon programme surtout avec les adresse IP:
1. car je donne l'adresse à translater sous forme xxx.xxx.xxx.xxx et dans les fonctions utilisées il faut les convertit en u_int32_t (entier sur 32 bits) sachant que c moi qui lui donne l'adresse ip destination à translater
2. une remarque : ce module est pour le protocole SIP qui travaille avec UDP

si quelqu'un peut me donner un lien ou je peut trouver un exemple de modules pour DNAT, et si possible quelque chose qui marche PLEASE !

MERCI à TOUS !!!

1 réponse

kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 524
25 mai 2008 à 15:44
Salut,

Effectivement une IP est un entier 32 bits que l'on représente d'une manière particulière.
Par exemple si tu as a.b.c.d tu peux convertir ça en entier comme ceci:
uint_32_t addr = a << 24 | b << 16 | c << 8 | d 

Il me semble qu'il y a une fonction pour faire ça mais je saiss plus laquelle.

Est ce que tu as remarqué qu'il existait déjà un module conntrack pour SIP?
Regarde dans les sources du noyau 2.6.25 le fichier net/netfilter/nf_conntrack_sip.c

Bon dans tous les cas, je pense que l'exemple le plus simple de module conntrack dans Linux c'est celui d'irc: nf_conntrack_irc.c (280 lignes).
0
stardz31 Messages postés 19 Date d'inscription dimanche 18 mai 2008 Statut Membre Dernière intervention 18 janvier 2009
25 mai 2008 à 16:27
Salut,
je sais qu'il y a ce module c ip_conntrack_sip.c et je l'ai vu

mais dans mon projet j'ai besoin de faire un module qui prend un seul cas

alors que ip_conntrack_sip et ip_nat_sip prennent tous les cas (je suppose)

mon cas c'est:

client1 <------------->Passerelle Linux (nat) <-------------------> client2
Réseau public Réseau privé

les client ont des adresses fixées (192.168.200.2 et 192.168.100.2 respectivement) et la passerelle 192.168.100.1 et 192.168.200.1 car il y a deux cartes réseaux

alors client2 appelle client1 mais rien ne se passe avec activation du nat pas d'appel car les adresse privées sont translatées en 192.168.200.1

le module doit prendre tous les paquets SIP venant de client1 en destination de 192.168.200.1 et change leurs adresses de destination en 192.168.100.2

c tout ce que je veux faire (donc c un peu statique ce que je vé faire)

MERCI pour ta réponse
0
kilian Messages postés 8731 Date d'inscription vendredi 19 septembre 2003 Statut Modérateur Dernière intervention 20 août 2016 1 524 > stardz31 Messages postés 19 Date d'inscription dimanche 18 mai 2008 Statut Membre Dernière intervention 18 janvier 2009
25 mai 2008 à 20:38
Je vois. Donc mon conseil c'est de prendre exemple sur un des modules conntrack/nat parmi les plus simples et celui d'irc me semble être l'un des plus simples.
0