On Sun, May 17, 2009 at 11:39:43AM +0200, Felipe Alfaro Solana wrote:
> On Sun, May 17, 2009 at 9:57 AM, Claudio Jeker 
> <cje...@diehard.n-r-g.com>wrote:
> 
> > On Sun, May 17, 2009 at 01:13:29AM +0200, Felipe Alfaro Solana wrote:
> > > Hi misc,
> > > route add allows one to specify a directly-connected route reachable over
> > an
> > > interface, using the -interface switch. However, I can't seem to figure
> > out
> > > if it's possible to specify just the interface name to the -interface
> > > switch. According to the manual page, only an IP address is allowed:
> > >
> > > """
> > >      If the destination is directly reachable via an interface requiring
> > no
> > >      intermediary system to act as a gateway, the -interface modifier
> > should
> > >      be specified; the gateway given is the address of this host on the
> > > common
> > >      network, indicating the interface to be used for transmission.
> > > """
> > >
> > > The thing is the interface I want to use with the -interface switch does
> > not
> > > have a static IP address. I could script something to get the current IP
> > > address of that interface but looks hacky to me. Is it possible to do
> > > something like?
> > >
> > > # route add -net 128.0.0.0/16 -interface vr2
> > >
> > > instead in OpenBSD? I'm a little bit confused since adding the route
> > while
> > > using the IP address yields the following entry in the routing table:
> > >
> > > 128.0/16           link#3             UCS        0        0     -     8
> > vr2
> > >
> > > So, why is exactly that -interface wants an IP address but does not like
> > > interface names?
> > >
> >
> > ifconfig vr2 alias 128.0.0.1/16
> >
> > This will ensure that everything is correctly set up.
> > Doing it with route will most probably cause issues because it will not
> > setup everything correctly. You need an IP on that interface in that
> > network or it will not work.
> 
> 
> Thanks for your reply, Claudio.
> 
> Initially, I tried setting up the alias directly in the vr2 interface.
> However, I had problems because vr2 is an Internet-facing interface
> that uses DHCP. I
> used to use a custom dhclient.conf configuration file as described in [1]
> but, for some reason, when the lease is renewed, I start to suffer
> packet loss. A tcpdump capture shows that some TCP connections are
> being sourced with the IP
> alias address and not the public IP address. That's why I tried using a
> loopback interface.
> 
> This was my custom dhclient.conf:
> 
> interface "vr2" {
>         supersede domain-name "my.domain";
>         supersede domain-name-servers 1.2.3.4;
> }
> 
> alias {
>         interface "vr2";
>         fixed-address 128.0.0.1;
>         option subnet-mask 255.255.0.0;
> }
> 
> First time I invoke dhclient, everything seems to work fine:
> 
> # dhclient vr2
> 
> DHCPREQUEST on vr2 to 255.255.255.255 port 67
> DHCPACK from 10.177.128.1
> bound to A.B.C.D -- renewal in 2590 seconds.
> # ifconfig vr2
> vr2: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
>         lladdr 00:0d:b9:18:9b:fa
>         priority: 0
>         groups: egress
>         media: Ethernet autoselect (100baseTX full-duplex)
>         status: active
>         inet6 fe80::20d:b9ff:fe18:9bfa%vr2 prefixlen 64 scopeid 0x3
>         inet A.B.C.D netmask 0xfffffe00 broadcast 255.255.255.255
>         inet 128.0.0.1 netmask 0xffff0000 broadcast 128.0.255.255
> 
> However, if I call dhclient one more time, the martian IP address seems to
> become the primary IP address and the public IP address the alias:
> 
> # dhclient vr2
> DHCPREQUEST on vr2 to 255.255.255.255 port 67
> DHCPACK from 10.177.128.1
> bound to A.B.C.D -- renewal in 2579 seconds.
> # ifconfig vr2
> vr2: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
>         lladdr 00:0d:b9:18:9b:fa
>         priority: 0
>         groups: egress
>         media: Ethernet autoselect (100baseTX full-duplex)
>         status: active
>         inet6 fe80::20d:b9ff:fe18:9bfa%vr2 prefixlen 64 scopeid 0x3
>         inet 128.0.0.1 netmask 0xffff0000 broadcast 128.0.255.255
>         inet A.B.C.D netmask 0xfffffe00 broadcast 255.255.255.255
> 
> Even more funny, if I want to entirely remove the martian IP address I need
> to remove it twice:
> 
> # ifconfig vr2
> vr2: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
>         lladdr 00:0d:b9:18:9b:fa
>         priority: 0
>         groups: egress
>         media: Ethernet autoselect (100baseTX full-duplex)
>         status: active
>         inet6 fe80::20d:b9ff:fe18:9bfa%vr2 prefixlen 64 scopeid 0x3
>         inet 128.0.0.1 netmask 0xffff0000 broadcast 128.0.255.255
>         inet A.B.C.D netmask 0xfffffe00 broadcast 255.255.255.255
> # ifconfig vr2 delete 128.0.0.1
> # ifconfig vr2
> vr2: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
>         lladdr 00:0d:b9:18:9b:fa
>         priority: 0
>         groups: egress
>         media: Ethernet autoselect (100baseTX full-duplex)
>         status: active
>         inet6 fe80::20d:b9ff:fe18:9bfa%vr2 prefixlen 64 scopeid 0x3
>         inet A.B.C.D netmask 0xfffffe00 broadcast 255.255.255.255
>         inet 128.0.0.1 netmask 0xffff0000 broadcast 128.0.255.255
> # ifconfig vr2 delete 128.0.0.1
> # ifconfig vr2
> vr2: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
>         lladdr 00:0d:b9:18:9b:fa
>         priority: 0
>         groups: egress
>         media: Ethernet autoselect (100baseTX full-duplex)
>         status: active
>         inet6 fe80::20d:b9ff:fe18:9bfa%vr2 prefixlen 64 scopeid 0x3
>         inet A.B.C.D netmask 0xfffffe00 broadcast 255.255.255.255
> 
> Is this a bug in dhclient? A bug in the OpenBSD kernel?
> 

What are you trying to do? Why do you think you can use 128.0/16 and why
do you need it to be assigned on the external interface?
I have the feeling you try something that should be done differently.

-- 
:wq Claudio

Reply via email to