J'ai une distribution Linux OpenWrt pour mon système embarqué. L'appareil dispose de 3 interfaces réseau: eth0, eth1 et wlan0.Linux utilise l'interface pour le socket brut seulement
L'une des interfaces réseau (eth0) doit être utilisée uniquement pour la programmation raw socket. Je suis en mesure de créer une socket avec les paramètres AF_PACKET
, SOCK_RAW
, ETH_P_ALL
. La socket reçoit tout le trafic réseau, je peux envoyer des paquets et tout est OK.
Mais mon problème est, que le système d'exploitation utilise également l'interface pour l'envoi d'une récession (par exemple ARP et requêtes/réponses ICMP).
Y at-il une option que l'interface est utilisée uniquement par mon programme et non par le système d'exploitation lui-même?
OK. J'ai configuré le pare-feu (iptables) de sorte que tous les paquets IPv4 soient supprimés. Mais comment puis-je désactiver ARP et IPv6 au démarrage. Si je mets les deux lignes fournies ci-dessus dans 'rc.local', je reçois toujours un paquet ICMPv6 (Router Solicitation) au démarrage de l'appareil. Je pense que les commandes du fichier 'rc.local' sont exécutées trop tard. Des sugestions? –
@BenjaminJ. Pourquoi c'est un problème? Vous recevrez toujours ce paquet, l'important est que le traitement de ce paquet par le noyau ne nuise pas à votre application. – Ctx
Désolé. Je me suis mal exprimé. Le paquet est envoyé par le périphérique OpenWrt. J'ai vérifié cela via un Wireshark sur Windows PC qui est connecté à eth0. –