Module noyau pour DNAT
stardz31
Messages postés
20
Statut
Membre
-
kilian Messages postés 8854 Statut Modérateur -
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 !!!
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
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:
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).
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).
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