Ei! Bones agraeixo la resposta, per He estat indagant amb route i netsh com alternatives, i fent enginyeria inversa a intercepter-ng (que fa la NAT que estic buscant).
Exposo el meu problema més detalladament perquè em pugueu ajudar:
Tinc hosts a la xarxa enviant-paquets pensant que sóc el seu gateway, jo els faig fordward a l’router i tenen connexió (mitjançant codi i amb WinPcap), també puc fer-fordward activant el registre etc .. No obstant això vull fer d’intermediari per el trànsit HTTP és a dir no fer un simple fordward a la capa 1 i passar a manipular tot el contingut de la capa d’aplicació (un proxy de tota vida amb sockets).
Jo amb el codi puc detectar paquets entrants dels hosts de tipus TCP a port 80 (HTTP), aquests paquets de tipus IP apunten a la IP destí i quan els redirigeixo al meu servidor intermediari perquè puguin arribar he de canviar la IP destí per la de la meva servidor intermediari i actualitzar el checksum això sí és ineficient ja que tinc que és rar a que m’arribi tot el paquet l’he de llegir, manipular el camp IP i tornar-lo a reenviar a la xarxa igual perquè el rebi la meva màquina.
Després quan el meu proxy rep el paquet ho vol respondre, perquè es produeixi connexió ha d’haver el 3-Handshake, i encara no ho he aconseguit fer, perquè faig el fordward a mitges.
Quan el proxy respon mana el seu paquet amb destinació IP de l’host que sol·licito el paquet, PERÒ de nou dec canviar- el camp checksum per la IP que sol·licito el host (i ull aquí que IP poso doncs un host pot tenir connexió amb diverses IPs ..), i enviar de nou a la xarxa, és a dir amb aquest mètode cada paquet és enviat i rebut 2 vegades, el doble de trànsit per a la meva màquina. No es pot fer l’IP fordward d’una altra manera ?, pensava en alguna cosa a nivell de SO, que em llegeixi fins a la capa IP i la modifiqués i reexpedís, no que hagi de fer-ho jo, ja que jo he de treballar amb tot el paquet que ja té totes les capes fetes.
Mirant intercepter-ng em vaig fixar si feia algun route o netsh, i usant “route print” vaig poder veure que no afegia nous encaminaments, respecte a l’netsh es pot fer una cosa semblant amb:
BOOLEAN CoreUser :: EnablePortFordwarding (std :: string ip, std :: string sourcePort, std :: string destinationPort) {// Filtrant per diferents versions de windows. std :: string command; command = "netsh interface portproxy add v4tov4 listenport =" + sourcePort + "listenaddress =" + ip + "connectport =" + destinationPort + "connectaddress =" + ip; system (command.c_str ()); return TRUE; }
Això per exemple fa que el trànsit d’una IP que vagi amb destinació el port X vagi també a l’port I d’aquesta mateixa IP, útil per redirigir el trànsit a el port de l’servidor intermediari, però, no trobo manera de extrapolar-per donar-ho productivitat en la NAT d’una manera eficient a el menys. Tot sembla apuntar que intercepter-ng fa la NAT mitjançant codi i això es tradueix a codi pur i dur amb WinPcap.
Salutacions i gràcies, a veure si em podeu donar més idees
Però el problema fent-amb codi més de que és ineficient