Linux Advanced Routing and Traffic Control list
 help / color / mirror / Atom feed
From: Guy Van Den Bergh <guy.vandenbergh@pandora.be>
To: lartc@vger.kernel.org
Subject: Re: Request for TEXT: [LARTC] "onlink" option for ip route
Date: Sun, 25 Mar 2001 17:25:08 +0000	[thread overview]
Message-ID: <marc-lartc-98554493630908@msgid-missing> (raw)
In-Reply-To: <marc-lartc-98546988301347@msgid-missing>

I'll try to give an example to see what the onlink option really does:

You have configured eth0 (on your machine) with an ip address/mask: 
192.168.0.1/24

For some reason, you want to use a gateway on the physical LAN of eth0
which has an inconsistent configuration. Assume it has an address 
10.0.10.1/24, which does not match the 192.168.0.1/24 configuration you 
gave your own machine.

If you say:

ip route add default dev eth0 via 10.0.10.1

then you will get an error response (network unreachable or something).
Why? Because (strictly speaking) it does not make sense to have
a machine 10.0.10.1 on the eth0 lan, because you told your computer this 
lan's network address is 192.168.0.0/24.

But here it comes: if you add "onlink" to the command, like this:

ip route add default dev eth0 via 10.0.10.1 onlink

then the route is accepted.

But now we come to another question: What does the kernel do if a packet 
has to routed to this "onlink" gateway? I checked (by experiment), and 
this is the result:
The kernel sends an arp request on the eth0-lan asking "who-has 
10.0.10.1", which is the "onlink" gateway you configured. When it 
receives a response, he has a MAC address where he can send his packets 
to and routing will be performed.

This means: when the gateway's address doesn't match the lan 
configuration on your computer (eth0), you can force the kernel to use
this gateway by adding "onlink" to the statement.

I guess there very rare situations where you have to use this feature.
Situations where you need the onlink option will mostly be a case of 
poor network design... I don't think the average tunnel setup needs 
"onlink" either.

Regards,
Guy

bert hubert wrote:

> On Sun, Mar 25, 2001 at 12:43:07AM -0300, Rogerio Brito wrote:
> 
>> On Mar 24 2001, bert hubert wrote:
>> 
>>> If someone manages to write a reasonable explanation for the
>>> 'onlink' option, I'll put it in the HOWTO ASAP.
>> 
>> 	As far as I understand it, the situation is as follows:
>> 
>> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
>> 	Sometimes, you may want to send packets via a machine
>> 	(i.e., a gateway) which is physically connected to your
>> 	network, but to which you don't specifically have a route in
>> 	your kernel routing table.
> 
> 
> I'm more confused then ever!
> 
> Alexey says this: 
>  A: Yes, in 2.2 the rule that {\em normal} gateway must reside on directly
>  connected network has not any exceptions. You may tell kernel, that
>  this particular route is {\em abnormal}:
>  \begin{verbatim} 
>    ifconfig tunl0 10.0.0.1 netmask 255.255.255.255
>    ip route add 10.0.0.0/8 via 193.233.7.65 dev tunl0 onlink
>  \end{verbatim}
>  Note keyword \verb|onlink|, it is the magic key that orders kernel
>  not to check for consistency of gateway address.
>  Probably, after this explanation you have already guessed another method
>  to cheat kernel:
>  \begin{verbatim} 
>    ifconfig tunl0 10.0.0.1 netmask 255.255.255.255
>    route add -host 193.233.7.65 dev tunl0
>    route add -net 10.0.0.0 netmask 255.0.0.0 gw 193.233.7.65
>    route del -host 193.233.7.65 dev tunl0
>  \end{verbatim}
>  Well, if you like such tricks, nobody may prohibit you to use them.
>  Only do not forget
>  that between \verb|route add| and \verb|route del| host 193.233.7.65 is
>  unreachable.
> 
> However, our HOWTO says this:
> 
>  ip tunnel add netb mode gre remote 172.19.20.21 local 172.16.17.18 ttl 255
>  ip link set netb up
>  ip addr add 10.0.1.1 dev netb
>  ip route add 10.0.2.0/24 dev netb
> 
> We don't use onlink - might it be that 'onlink' is only useful for ipip
> tunnels?
> 
> 
>> 	Please let me know if this is acceptable. I could write with
>> 	more details (giving a more concrete example), but I'm very
>> 	busy right now. :-(
> 
> 
> Once this is cleared up, your text will do fine. Thanks!
> 
> Regards,
> 
> bert



_______________________________________________
LARTC mailing list / LARTC@mailman.ds9a.nl
http://mailman.ds9a.nl/mailman/listinfo/lartc HOWTO: http://ds9a.nl/2.4Routing/

      parent reply	other threads:[~2001-03-25 17:25 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2001-03-24 21:36 Request for TEXT: [LARTC] "onlink" option for ip route bert hubert
2001-03-25  3:43 ` Rogerio Brito
2001-03-25 14:14 ` bert hubert
2001-03-25 17:25 ` Guy Van Den Bergh [this message]

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=marc-lartc-98554493630908@msgid-missing \
    --to=guy.vandenbergh@pandora.be \
    --cc=lartc@vger.kernel.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