systemadmin.es » Redes » Comprobar la conectividad con ping por interfaz

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 Imprimir

2 comments to “Comprobar la conectividad con ping por interfaz”

  1. 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

  2. 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]) = 0
    

    Lo puede definir con la función setsockopt() y la opción SO_BINDTODEVICE

    saludos,

Deja un comentario:

XHTML - Tags permitidos:<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>