J'ai un système Linux (que ce soit A) avec 2 cartes Ethernet, à savoir eth0 et eth1 qui sont attachées à deux réseaux locaux totalement indépendants.
Fondamentalement, eth0 est utilisé pour le trafic d'application normal et eth1 est utilisé uniquement à des fins de débogage. Le débogage signifie que eth1 est lié à l'aide d'un câble croisé à une autre boîte Linux (que ce soit B) qui exécute Wireshark. Je veux que Wireshark puisse traiter les paquets d'application voyageant sur eth0 de A.
Fondamentalement, je dois copier les paquets itinérants de l'interface eth0 vers l'interface eth1 afin que Wireshark sur la boîte B puisse les sniffer (pour certaines raisons, je n'ai pas d'accès physique au LAN eth0). Je pourrais également avoir besoin de spécifier les paquets à copier de eth0 vers eth1 selon une règle (basée uniquement sur les champs TCP / IP en passant).
Notez également que le eth0 de A n'a pas besoin d'être mis en mode promiscuous car je veux seulement copier un sous-ensemble de paquets qui ont A comme destination
Existe-t-il un moyen d'y parvenir en utilisant uniquement iptables? Ou dois-je écrire une application pour que cela fonctionne? Que dois-je faire pour "copier" les paquets?
la source
Vous pouvez utiliser l'action miroir tc. Par exemple: Pour le trafic entrant:
Pour le trafic sortant:
la source
Recherchez le tcpbridge sur le net, c'est exactement ce que fait le Job. Il peut également être utilisé pour parler aux machines virtuelles.
la source
Quelque chose comme rinetd pourrait fonctionner (redirecteur / serveur pour TCP uniquement, je pense, donc pas d'ARP, couche 2, etc.), mais en toute honnêteté, obtenir des commutateurs gérés qui ont des capacités de mise en miroir des ports ou si cette boîte est uniquement utilisée pour Wharkshark, vous pouvez y ajouter un autre NIC, relier les deux interfaces, le placer devant eth0 de la machine A et avoir une machine de reniflement dédiée.
la source
Un périphérique qui copie des trames Ethernet d'une interface à une autre est un pont. Vous pouvez configurer votre système Linux pour agir comme un pont. Une documentation peut être trouvée ici:
Vous pouvez appliquer des règles de filtrage au trafic ponté à l'aide de ebtables , qui est un analogue du
iptables
trafic de couche 2.la source
Dans ma configuration, le trafic TX multidiffusion a été marqué par iptables, mais le routage de stratégie à l'aide de nouvelles tables de routage n'a jamais fonctionné. Bien que cela ait fonctionné pour les paquets TX unicast (redirigeant les paquets d'origine de eth0 vers eth5). L'utilisation de tc i pourrait obtenir du trafic mcast eth0 vers eth5. L'adresse src mac et src ip sont modifiées par rapport à eth5, donc cela ne créera pas de problèmes d'apprentissage du commutateur. Toute la prise en charge du noyau pour la planification des paquets du noyau CONFIG_NET_SCHED doit être activée
Ci-dessous TRAVAUX pour la redirection du trafic unicast et multicast de eth0 vers eth5
Netfilter peut être utilisé pour interagir directement avec la structure représentant un paquet dans le noyau. Cette structure, le sk_buff, contient un champ appelé «__u32 nfmark» que nous allons modifier. TC lira ensuite cette valeur pour sélectionner la classe de destination d'un paquet.
IP_ADDR_ETH0 =
ifconfig eth0 | grep 'inet addr'| cut -d ':' -f 2 | cut -d ' ' -f 1 | tr -d '\n'
iptables -t mangle -A OUTPUT -s $ {IP_ADDR_ETH0} -p udp --match multiport --dports 329,330 -o eth0 -j MARK --set-mark 2Je vais créer une arborescence qui représente notre politique de planification et qui utilise le qdisc PRIO (planificateur de paquets) (peut en essayer d'autres disponibles). qdiscs attachés à la racine d'un périphérique
tc qdisc add dev eth0 root handle 15: prio
Maintenant, d'un côté, une politique de mise en forme du trafic et de l'autre côté, le marquage des paquets. Pour connecter les deux, nous avons besoin d'un filtre.
refer man tc-mirred (8): L'action mirred permet la mise en miroir de paquets (copie) ou la redirection (vol) du paquet qu'elle reçoit. La mise en miroir est ce que l'on appelle parfois Switch Port Analyzer (SPAN) et qui est couramment utilisée pour analyser et / ou déboguer les flux.
refer man tc-fw (8): fw - filtre de contrôle du trafic fwmark le filtre fw permet de classer les paquets en fonction d'un fwmark préalablement défini par iptables. S'il est identique à la «poignée» du filtre, le filtre correspond. iptables permet de marquer des paquets uniques avec la cible MARK, ou des connexions entières en utilisant CONNMARK.
MAC_ADDR_ETH1 =
cat /sys/class/net/eth1/address
IP_ADDR_ETH1 =ifconfig eth1 | grep 'inet addr'| cut -d ':' -f 2 | cut -d ' ' -f 1 | tr -d '\n'
filtre tc ajouter dev eth0 parent 15: 0 protocole ip prio 1 gérer 0x2 fw action pedit ex munge eth src set $ {MAC_ADDR_ETH1} pipe \ action pedit ex munge ip src set $ {IP_ADDR_ETH1} pipe \ action mirred egress redirect dev eth1afficher les règles définies ci-dessus: tc qdisc afficher dev eth0 filtre tc afficher dev eth0
supprimer / annuler les règles définies ci-dessus: tc qdisc del dev eth0 root
la source