•
Comprobar la conectividad con ping por interfaz
Al realizar un ping, según la tabla de rutas de nuestro equipo sale por una interfaz de red o por otra. Vamos a ver como comprobar la conectividad con esta herramienta indicando la interfaz que queremos usar:
[root@tricia ~]# ping 10.10.10.5 PING 10.10.10.5 (10.10.10.5) 56(84) bytes of data. 64 bytes from 10.10.10.5: icmp_seq=1 ttl=255 time=0.090 ms --- 10.10.10.5 ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 0.090/0.090/0.090/0.000 ms
Mediante la opción -I podemos indicar la interfaz a usar. Podremos comprobar por donde nos responde o no el ping:
# ping 10.10.10.5 -I bond0 PING 10.10.10.5 (10.10.10.5) from 10.10.11.11 bond0: 56(84) bytes of data. --- 10.10.10.5 ping statistics --- 2 packets transmitted, 0 received, 100% packet loss, time 999ms
En el caso que tengamos dos interfaces de red en la misma red, por ejemplo para tener multipath en una red iSCSI podremos verificar que los dos caminos están disponibles con el ping:
# ping 10.10.10.5 -I eth2 PING 10.10.10.5 (10.10.10.5) from 10.10.10.15 eth2: 56(84) bytes of data. 64 bytes from 10.10.10.5: icmp_seq=1 ttl=255 time=0.079 ms 64 bytes from 10.10.10.5: icmp_seq=2 ttl=255 time=0.076 ms --- 10.10.10.5 ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 999ms rtt min/avg/max/mdev = 0.076/0.077/0.079/0.008 ms # ping 10.10.10.5 -I eth3 PING 10.10.10.5 (10.10.10.5) from 10.10.10.16 eth3: 56(84) bytes of data. 64 bytes from 10.10.10.5: icmp_seq=1 ttl=255 time=0.726 ms --- 10.10.10.5 ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 0.726/0.726/0.726/0.000 ms
Mediante la tabla ARP podremos ver que tenemos la misma MAC en las dos interfaces:
[root@tricia ~]# arp -na | grep 90.5 ? (10.10.10.5) at 00:19:DE:AD:07:4F [ether] on eth2 ? (10.10.10.5) at 00:19:DE:AD:07:4F [ether] on eth3
Relacionados
Imprimir
•
2 comments to “Comprobar la conectividad con ping por interfaz”
•
16. February 2012 at 7:53 pm :
Jordi
¿Al tratar de realizar una conexión tcp en algún lenguaje de alto nivel o más bajo? es posible forzar que la conexión salga por X interfaz.
Ya que me sucede que siempre toma las reglas de enrutamiento y no puedo indicar por que interfaz realmente salir.
Gracias
19. February 2012 at 7:50 pm :
Hola,
Se trata de una opción del socket, con strace vemos:
socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 4 setsockopt(4, SOL_SOCKET, SO_BINDTODEVICE, "eth0\0", 5) = 0 connect(4, {sa_family=AF_INET, sin_port=htons(1025), sin_addr=inet_addr("1.2.3.4")}, 16) = 0 getsockname(4, {sa_family=AF_INET, sin_port=htons(33213), sin_addr=inet_addr("10.10.10.10")}, [16]) = 0 close(4) = 0 ioctl(3, SIOCGIFINDEX, {ifr_name="eth0", ifr_index=2}) = 0 setsockopt(3, SOL_RAW, ICMP_FILTER, ~(ICMP_ECHOREPLY|ICMP_DEST_UNREACH|ICMP_SOURCE_QUENCH|ICMP_REDIRECT|ICMP_TIME_EXCEEDED|ICMP_PARAMETERPROB), 4) = 0 setsockopt(3, SOL_IP, IP_RECVERR, [1], 4) = 0 setsockopt(3, SOL_SOCKET, SO_SNDBUF, [324], 4) = 0 setsockopt(3, SOL_SOCKET, SO_RCVBUF, [65536], 4) = 0 getsockopt(3, SOL_SOCKET, SO_RCVBUF, [131072], [4]) = 0Lo puede definir con la función setsockopt() y la opción SO_BINDTODEVICE
saludos,