On Sun, May 17, 2009 at 9:57 AM, Claudio Jeker <[email protected]>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?
Thanks in advance.
[1]
http://www.felipe-alfaro.org/blog/2009/05/08/openbsd-dynamic-and-static-ip-address-on-the-same-interface/
>
>
> --
> :wq Claudio
>
>
--
http://www.felipe-alfaro.org/blog/disclaimer/