Hi,

after a couple of days of running into dead ends, I would appreciate
some help.

To summarize: For more than 3 years I'm successfully running OpenBSD
(it's now at OPENBSD_4_9/i386, running GENERIC.MP) at the German hoster
Hetzner as my expensive little plaything. They offer native IPv6 for
some time now, and I want to use it. However, the same methodology used
with IPv4 does not work with IPv6 and I just can't figure out why (it's
supposed to work identically.)


The working IPv4 setup:

Additional network is 78.47.124.160/29, the gateway is 78.46.41.129/27.
In /etc/hostname.re0 is the aliases and the route to the gateway of that
network:

inet alias 78.47.124.161 255.255.255.248 78.47.124.167
[...]
!route add -inet -iface -ifp re0 -net 78.46.41.128 78.46.41.129 -netmask
255.255.255.224

I set the default gateway 78.46.41.129 in the first line of /etc/mygate.
This works:

$ ping -I 78.47.124.161 www.google.com
PING www.l.google.com (74.125.77.147): 56 data bytes
64 bytes from 74.125.77.147: icmp_seq=0 ttl=56 time=16.943 ms
[...]


The IPv6 setup (broken):

The IPv6 network is supposed to be 2a01:4f8:110:4363::/64, the gateway
is 2a01:4f8:110:4360::1/59. So again there's the aliases in
/etc/hostname.re0 ...

[...]
inet6 alias 2a01:4f8:110:4363::42 64
[...]
!route add -inet6 -iface -ifp re0 -net 2a01:4f8:110:4360:: -prefixlen 59
2a01:4f8:110:4360::1

The second line in /etc/mygate sets the IPv6 default gateway
2a01:4f8:110:4360::1. This does not work:

$ ping6 ipv6.google.com
PING6(56=40+8+8 bytes) 2a01:4f8:110:4363::42 --> 2a00:1450:8005::68
ping6: sendmsg: No route to host
ping6: wrote ipv6.l.google.com 16 chars, ret=-1


A look at the routing table shows various differences between IPv4 and
IPv6. Again, the working IPv4 entries first:

default           78.46.41.129       UGS   19  6792145      -  8 re0
78.46.41.128/27   link#1             UC    2         0      -  4 re0
78.46.41.128/27   link#1             UCS   0         0      -  8 re0
78.46.41.129      00:26:88:76:21:1b  UHLc  1         0      -  4 re0
78.46.41.142      00:1d:92:39:57:54  UHLc  0         6      -  4 lo0
78.47.124.160/29  link#1             UC    0         0      -  4 re0
78.47.124.161     127.0.0.1          UGHS  0        97  33200  8 lo0

(.142 is the main IP of mrsserver.net)

As can be seen, everything resolves nicely ... by comparison, IPv6 looks
fubar'd:

default                 2a01:4f8:110:4360::1  UGS  0  11  -  8 re0
2a01:4f8:110:4360::/59  2a01:4f8:110:4360::1  US   1  0   -  8 re0
2a01:4f8:110:4363::/64  link#1                UC   0  0   -  4 re0
2a01:4f8:110:4363::42   00:1d:92:39:57:54     HL   0  0   -  4 lo0

That's it, nothing else from these networks, and the local host route
for ::42 isn't even (U)p.

ndp -a shows:

Neighbor                      Linklayer Address  Netif Expire    S Flags
2a01:4f8:110:4363::42         0:1d:92:39:57:54     re0 permanent R
fe80::21d:92ff:fe39:5754%re0  0:1d:92:39:57:54     re0 permanent R
fe80::1%lo0                   (incomplete)         lo0 permanent R

I tried to use ndp -I to set the default IPv6 interface to re0, but what
that does is change the behavior of ping6 from EHOSTUNREACH to 100%
packet loss. After doing so, the gateway shows up in ndp:

2a01:4f8:110:4360::1          (incomplete)         re0 permanent I

... and that's as far as I have come. I also tried to solicit router
information after setting net.inet6.ip6.accept_rtadv to 1, but there's
nothing like that on the wire. I have to do manual configuration.

Lastly, the host's pf.conf is family-agnostic in almost all parts (and
the two remaining places have been triple-checked.) It's also creating
state for all outgoing traffic, so it really shouldn't interfere.

What I haven't pursued, yet, is that Hetzner configured my network
wrong. This is hard to believe, though, as getting an IPv6 subnet from
them is 100% automated and a problem would probably affect all their
customers.

I'm stumped. What have I missed? Any and all help is greatly appreciated!


Thanks,

Moritz

Reply via email to