About this list Date view Thread view Subject view Author view Attachment view

From: Ola Lundqvist (opal_at_debian.org)
Date: Mon 01 Dec 2003 - 07:44:34 GMT


Hi

Another problem that occurs (I can not see that it fit this
really) is the following:

Assume that we have access to several networks (using 1+ network interfaces)
from the vserver handler. The vserver handler should have access to
(at least) one, that no other have access to and should have a specific
default gateway.

Each other vserver (or similar) should then have the ability to use
an alternative default gateway. That can be useful sometimes.

We have:

An example:

handler:
  address 192.168.0.1
  gw 192.168.0.254

v1:
  address 10.0.0.1
  gw 10.0.0.254

v2:
  address 10.0.0.1
  gw 10.0.0.254

etc...

It would be nice if I could set the default gateway in the
vserver configuration and that the iproute2 things it properly
set up then.

In this case I think a) below would be a good case. But b can also
be acceptable.

Observe that ping often work in similar cases. The real problem is
to use TCP or UDP. That is more tricky.

Regards,

// Ola

On Sat, Nov 29, 2003 at 04:26:45PM +0100, Herbert Poetzl wrote:
>
> Hi Folks!
>
> did some iproute2 testing with vserver, and
> discovered that some setups will not do
> what you might expect (I guess this will
> explain some questions on the mailing list
> regarding routing with more than one gateway)
>
>
> for the following examples I assume that no
> network configuration has been done, so you
> might need to adjust for your setup:
>
> scenario: two networks 192.168.0.0/24 and
> 10.0.0.0/16 with default gateways 192.168.0.1
> and 10.0.0.1 (our host can use .2 and .3)
>
> # ifconfig eth0 192.168.0.2
>
> # ip route add 192.168.0.0/24 dev eth0 table 100
> # ip route add default via 192.168.0.1 dev eth0 table 100
> # ip rule add from 192.168.0.0/24 table 100
>
> basically this configures routing for the first
> network, which is only used, if the packet
> originated from 192.168.0.0/24 ...
>
>
> reaching the gateway:
>
> # ping -c 1 192.168.0.1
> PING 192.168.0.1 (192.168.0.1) from 192.168.0.2 : 56(84) bytes of data.
> 64 bytes from 192.168.0.1: icmp_seq=0 ttl=64 time=4.610 msec
> 1 packets transmitted, 1 packets received, 0% packet loss
>
> our own address:
>
> # ping -c 1 192.168.0.2
> connect: Invalid argument
>
> this might be unexpected, but can easily be
> explained and solved ... to ping the host,
> we need a local loopback device, hence ..
>
> # ifconfig lo 127.0.0.1
>
> will solve this issue.
>
> something on the net:
>
> # ping -c 1 128.130.2.3
> connect: Network is unreachable
>
> why 'Network is unreachable' you might ask?
> simple because the source address is 0.0.0.0
> and we did not specify a default
>
> and now with vserver:
>
> # chbind --ip 192.168.0.2 ping -c 2 128.130.2.3
> PING 128.130.2.3 (128.130.2.3) from 192.168.0.2 : 56(84) bytes of data.
> 64 bytes from 192.168.0.1: icmp_seq=0 ttl=64 time=12.320 msec
> ...
>
> to our surprise, this is able to reach the
> destination, and more surprisingly ...
>
> # chbind --ip 192.168.0.2 --ip 192.168.0.3 ping -c 2 128.130.2.3
> connect: Network is unreachable
>
> will fail, as the 'original' attempt did.
>
> what happened, is it a bug? can we use that?
>
> basically, it isn't a bug, but it definitely
> is unexpected behaviour ... the explanation
> lies in the source, and the way ping works ...
>
> ping first creates two socket()s one for ICMP
> (a raw socket) and one for IP (UDP), to send
> and receive the the packets ... the latter is
> connect()ed with src=0.0.0.0 and the dest.
> address used in the ping, which explains the
> 'Network is unreachable' cases, but not the
> success of chbind/ping with one ip ...
>
> the current implementation of connect, tries
> to be 'smart' and replaces the 0.0.0.0 with
> the source address configured for the vserver,
> if and only if it has only one ip assigned ...
>
> why this long explanation:
>
> I think, we should change/adapt this behaviour
> as it will inevitably lead to some problems
> if you want to use more than one gateway, and
> connect() from inside the vserver to somewhere
> outside the local net ...
>
> # ifconfig eth0:1 10.0.0.2
>
> # ip route add 10.0.0.0/16 dev eth0 table 101
> # ip route add default via 10.0.0.1 dev eth0 table 101
> # ip rule add from 10.0.0.0/16 table 101
>
> will allow you to serve requests from outside
> the server, reaching either 10.0.0.2 or
> 192.168.0.2 via the configured gateways but
> you won't be able to ssh/telnet/ftp from a
> vserver started with two or more IPs ...
>
> what I would suggest:
>
> Basically I see two options, to solve this
> without too much confusion and/or magic
>
> a) we 'define' that the first IP assigned
> to a vserver, is the one to be used for
> 'outgoing' connects, regardless of the
> routing setup (or at least as fallback,
> if using 0.0.0.0 fails)
>
> b) we add a 'source' address to the vserver
> config, which by default, is 0.0.0.0 and
> can be assigned some other ip (probably
> restricted to IPs from the config array)
>
> please let me know what you think, and which
> direction you would prefer ...
>
> TIA,
> Herbert
>
>
> _______________________________________________
> Vserver mailing list
> Vserver_at_list.linux-vserver.org
> http://list.linux-vserver.org/mailman/listinfo/vserver

-- 
 --------------------- Ola Lundqvist ---------------------------
/  opal_at_debian.org                     Annebergsslingan 37      \
|  opal_at_lysator.liu.se                 654 65 KARLSTAD          |
|  +46 (0)54-10 14 30                  +46 (0)70-332 1551       |
|  http://www.opal.dhs.org             UIN/icq: 4912500         |
\  gpg/f.p.: 7090 A92B 18FE 7994 0C36  4FE4 18A1 B1CF 0FE5 3DD9 /
 ---------------------------------------------------------------
_______________________________________________
Vserver mailing list
Vserver_at_list.linux-vserver.org
http://list.linux-vserver.org/mailman/listinfo/vserver


About this list Date view Thread view Subject view Author view Attachment view
[Next/Previous Months] [Main vserver Project Homepage] [Howto Subscribe/Unsubscribe] [Paul Sladen's vserver stuff]
Generated on Mon 01 Dec 2003 - 07:45:30 GMT by hypermail 2.1.3