netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Brian Haley <brian.haley@hp.com>
To: Rob.Townley@gmail.com
Cc: netdev@vger.kernel.org, Omaha Linux User Group <olug@olug.org>,
	CentOS mailing list <centos@centos.org>
Subject: Re: Ping Is Broken
Date: Mon, 12 Oct 2009 16:36:18 -0400	[thread overview]
Message-ID: <4AD39342.7090209@hp.com> (raw)
In-Reply-To: <7e84ed60910090944q5c66ea0w63ed55a72482bf2f@mail.gmail.com>

Rob Townley wrote:
> ping -I is broken
> 
> The following deals with bug in ping that made it very difficult to set up a
> system with two gateways.
> 
> Demonstration that *ping -I is broken*. When specifying the source
> interface using -I with an *ethX* alias and that interface is not the
> default gateway
> interface, then ping fails. When specifying the interface as an ip address,
> ping works. Search for "Destination Host Unreachable" to find the bug.

I believe ping is working properly here, see below.

> eth*0* = 4.3.2.8 and the default gateway is accessed through a different
> interface eth*1*.
> eth*1* = 192.168.168.155 is used as the device to get to the default
> gateway.
> *FAILS *: ping *-I eth0* 208.67.222.222
> *WORKS*: ping *-I 4.3.2.8* 208.67.222.222
> *WORKS*: ping *-I eth1* 208.67.222.222
> *WORKS*: ping *-I 192.168.168.155* 208.67.222.222
> 
> The following are actual results which can be reproduced from an up-to-date
> Fedora 11 or CentOS 5.3 box. Caused a very very long episode of frustration
> when setting up multi gatewayed systems.
> 
> 
> * ping using eth0 *:
> 
> ping -c 2 -B -I  eth0 208.67.222.222
> PING 208.67.222.222 (208.67.222.222) from 4.3.2.8 eth0: 56(84) bytes of data.
> From 4.3.2.8 icmp_seq=1 Destination Host Unreachable
> From 4.3.2.8 icmp_seq=2 Destination Host Unreachable

In this case ping is doing an SO_BINDTODEVICE to eth0, so the kernel is going
to force the packets out of it, even if it isn't the "correct" interface.  If
you ran tcpdump you'd probably see an ARP resolution failure, or an ICMP from
a gateway.

This confusion could be cleared-up on the man page.  What did you expect to
happen in this case?

> The Following all WORK:
> * ping using 4.3.2.8 *:
> 
> ping -c 2 -B -I  4.3.2.8 208.67.222.222
> PING 208.67.222.222 (208.67.222.222) from 4.3.2.8 : 56(84) bytes of data.
> 64 bytes from 208.67.222.222: icmp_seq=1 ttl=55 time=562 ms
> 64 bytes from 208.67.222.222: icmp_seq=2 ttl=55 time=642 ms

In this case ping is going to bind() the source address to 4.3.2.8, but not
restrict the interface at all.  It works because of the weak end-host model
of Linux where that address can be used on any interface, not just the one
it is configured on.

Your other two examples are similar to this one.

-Brian

  parent reply	other threads:[~2009-10-12 20:36 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-10-09 10:16 Ping Is Broken Rob Townley
     [not found] ` <7e84ed60910090316ne9224fat81d9c79c58fc713b-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2009-10-09 16:34   ` Rob Townley
     [not found]     ` <7e84ed60910090934y2a0d422cr158aa8d15e452f97-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2009-10-09 16:44       ` Rob Townley
2009-10-12  9:47         ` Jarek Poplawski
2009-10-12 19:14           ` Rob Townley
2009-10-12 20:43             ` Jarek Poplawski
2009-10-12 20:36         ` Brian Haley [this message]
2009-10-12 21:28           ` Jarek Poplawski
2009-10-12 21:45           ` Jarek Poplawski
2009-10-12 23:30             ` Brian Haley
2009-10-13  5:10               ` Jarek Poplawski
2009-10-13 13:48                 ` Brian Haley
     [not found]         ` <006a01ca4a10$a1a4ba60$e4ee2f20$@com>
     [not found]           ` <7e84ed60910111032s2f03b6dew5c756895872e1a0c@mail.gmail.com>
     [not found]             ` <000301ca4b13$60a26e00$21e74a00$@com>
     [not found]               ` <7e84ed60910121115i30ec3512uce46cf0ff3b3954c@mail.gmail.com>
     [not found]                 ` <Pine.LNX.4.64.0910121934360.26068@pakmon.pakint.net>
2009-11-22 20:10                   ` [olug] " Rob Townley

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4AD39342.7090209@hp.com \
    --to=brian.haley@hp.com \
    --cc=Rob.Townley@gmail.com \
    --cc=centos@centos.org \
    --cc=netdev@vger.kernel.org \
    --cc=olug@olug.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).