Module noyau pour DNAT

stardz31 Messages postés 20 Statut Membre -  
kilian Messages postés 8854 Statut Modérateur -
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 8854 Statut Modérateur 1 526
 
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 20 Statut Membre
 
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 8854 Statut Modérateur 1 526 > stardz31 Messages postés 20 Statut Membre
 
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