Cómo configurar la tarjeta de red en modo promiscuo
Un método es mediante el comando de shell:
ifconfig eth1 promisc establece el modo promiscuo
ifconfig eth1 -promisc cancel promiscuous mode
Los resultados de la ejecución son los siguientes
Los resultados de la ejecución son los siguientes
[root@localhost tftpboot]# ifconfig
eth6 Encapsulación de enlace: Ethernet HWaddr 08 :00:27:70:1D:79
inet6 addr: fe80::a00.27ff:fe70:1d79/64 Alcance: Enlace
ARRIBA TRANSMISIÓN EJECUTANDO MULTICAST MTU: 1500 Métrica: 1
Paquete RX: 100124 errores: 0 descartados: 0 desbordamientos: 0 trama: 0
Paquete TX: 8795 errores: 0 descartados: 0 desbordamientos: 0 portadora: 0
colisiones: 0 txqueuelen: 1000
Bytes RX: 12986638 (12, 3 MiB).
3 MiB) Bytes TX: 6452270 (6,1 MiB)
lo Encapsulación del enlace: bucle invertido local
dirección inet: 127.0.0.1 Máscara: 255.0.0.0
inet6 addr: ::1/128 Alcance: Host
BUCLE ARRIBA EJECUTANDO MTU: 16436 Métrica: 1
Paquete RX: 1303 errores: 0 descartados: 0 desbordamientos: 0 trama: 0
Paquetes TX: 1303 errores: 0 descartados: 0 desbordamientos: 0 portadora: 0
colisiones: 0 txqueuelen: 0
Bytes RX: 303973 (296. 8 KiB) Bytes TX: 303973 (296,8 KiB) Bytes RX: 296,8 KiB) Bytes TX: 303973 (296,8 KiB)
[root@localhost tftpboot]# ifconfig eth6 promisc
[root@localhost tftpboot]# ifconfig
eth6 Encapsulación de enlace: Ethernet HWaddr 08:00:27:70:1D:79
inet6 addr :fe80: :a00:27ff:fe70 :1d79/64 Alcance: Enlace
TRANSMISIÓN ARRIBA EJECUTANDO PROMISC MULTICAST MTU: 1500 Métrica: 1
Paquete RX: 100154 errores: 0 descartados :0 desbordamientos: 0 fotograma: 0 p>
Paquete TX: 8795 errores: 0 caídos: 0 desbordamientos: 0 portadora: 0
colisiones: 0 txqueuelen: 1000
Bytes RX: 13007885 (12. 4 MiB ) Bytes TX: 13007885 (12, 4 MiB) Bytes RX: 13007885 (12, 4 MiB) Bytes TX: 13007885 (12, 4 MiB) 4 MiB) Bytes TX: 6452270 (6,1 MiB)
lo Encapsulación de enlace: Bucle invertido local
dirección inet: 127.0.0.1 Máscara: 255.0.0.0
dirección inet6: :: 1/128 Alcance: Host
ARRIBA LOOPBACK MTU EN EJECUCIÓN: 16436 Métrica: 1
Paquete RX: 1303 errores: 0 descartados: 0 desbordamientos: 0 trama: 0
Paquetes TX: 1303 errores: 0 descartados: 0 desbordamientos: 0 portadora: 0
colisiones: 0 txqueuelen: 0
Bytes RX: 303973 (296, 8 KiB) Bytes TX: 296,8 KiB) TX
bytes: 303973 (296,8 KiB)
[root@localhost tftpboot]#
II.hgt
#include lt; >
#include lt;linux/if_ether.hgt;
#include lt;net/if.hgt;
#include lt;sys/ioctl.hgt; p>
p>
#include lt;string.h gt;
#define ETH_NAME "eth1"
int do_promisc(void) {
int f, s;
estructura ifreq ifr;
if ( (f=socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL)) lt; 0){
return -1;
}
strcpy(ifr.ifr_name, ETH_NAME);
if ((s = ioctl(f, SIOCGIFFLAGS, amp) .ifr)) lt; 0) {
cerrar(f
retorno-1; .ifr_flags amp; IFF_RUNNING){
printf("enlace eth arriba\n");
} else{
printf("enlace eth abajo\n ");
}
ifr.ifr_flags |= IFF_PROMISC;
if ((s = ioctl(f, SIOCSIFFLAGS, amp; ifr)) lt; 0){
return -1;
}
printf("Configuración de interfaz:::s::to promiscn\n", ifr.ifr_name) ;
return 0;
}
int check_ nic(void)
{
struct ifreq ifr ;
int skfd = socket(AF_INET, SOCK_DGRAM, 0);
strcpy(ifr.ifr_name, ETH_NAME);
if ( ioctl (skfd, SIOCGIFFLAGS y ifr) lt; 0)
{
close(skfd
return -1; > } p>
if(ifr.ifr_flags amp; IFF_RUNNING) {
printf("enlace arriba\n");
close(skfd); p>
return 0; // La tarjeta de red ha sido insertada
}else {
printf("link down\n"); cerrar(skfd); }
retorno -1;
GRAMO.
return -1
}
}
int main(void) {
do_promisc() ;
devuelve 0;
}
}