J'ai tout le trafic du port 50 redirigé vers 5050 en utilisantC++ iptables redirection former des paquets séparés
iptables -t nat -A POSTROUTING -p udp --dport 50 -j REDIRECT --to-port 5050
J'écoute à l'aide d'un RAW Socket sur 5050, et je vois des paquets IP de 0.0.0.0:50 à 0,0. 0,05050. L'adresse de destination d'origine n'est évidemment pas présente, car il semble s'agir d'un paquet de redirection séparé du port 50 vers le port 5050.
Si le paquet d'origine était supposé aller à abcd: 50, comment puis-je obtenir cette adresse IP ? Comment puis-je déterminer l'adresse de destination à laquelle le message était censé être envoyé, afin que je puisse l'y transférer?
J'apprécie votre aide.
P.S .: Je ne veux pas utiliser libipq, car pour une raison quelconque cela n'a pas fonctionné et je ne veux pas perdre plus de temps à le faire fonctionner.
Merci de répondre. Non ça ne marche pas non plus. Il donne my_ip_address: 0. Pouvons-nous faire cela autrement? – SkypeMeSM
@SkypeMeSM: 'SO_ORIGINAL_DST' vous demande d'activer la redirection de port. Cela devrait résoudre votre problème. – jweyrich
@jweyrich: Merci d'avoir répondu. Je l'ai fait. \t \t \t système ("sysctl net.ipv4.ip_forward = 1"); addr_len = sizeof (struct sockaddr); getsockopt (sip_socket, IPPROTO_IP_IP, SO_ORIGINAL_DST, & sender_addr, (socklen_t *) & addr_len); cout << inet_ntoa (sender_addr.sin_addr) << ":" << ntohs (sender_addr.sin_port) << endl; – SkypeMeSM