IPv6 gateway aus anderem Subnetz

mapet

Active OpenBSD User
Hallo,

ich würde auf meinem Rootserver gerne IPv6 nutzen. Allerdings befindet sich das Gateway nicht im selben Subnetz. Für FreeBSD wird folgendes Vorgehen vorgeschlagen:

Code:
route add -inet6 [ipv6-gateway] -iface [interface]
ndp -s [ipv6-gateway] [mac-gateway]
route add -inet6 default [ipv6-gateway]

Hilft mir jetzt mit OpenBSD nicht wirklich weiter. Nach einigem Suchen hab ich folgendes gefunden, was das Äquivalent zu der 1. Zeile sein sollte:

Code:
route add -inet6 -iface -ifp em0 -host [ipv6-gateway] -prefixlen 64 [ipv6-em0]

Soweit die Theorie.

Beim Einrichten funktioniert das allerdings nicht. Das ndp setzen schlägt fehl, die Routen frisst OpenBSD, kann dann aber keine Verbindungen aufbauen.

Netzwerk-Konfiguration (IPv6)
Adressbereich:2001:db8:ffff:00ab::0 /64
Gateway:2001:db8:ffff:1:beef::1

Meinem Server gebe ich nun direkt die 1. Adresse für das Interface:
Code:
ifconfig em0 inet6 alias 2001:db8:ffff:00ab::1 prefixlen 64
das funktioniert dann auch:
Code:
~ # ifconfig em0
em0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        lladdr 00:25:90:e0:20:c6
        priority: 0
        groups: egress
        media: Ethernet autoselect (1000baseT full-duplex,master,rxpause,txpause)
        status: active
        inet 217.XXX.XXX.XXX netmask 0xffffff80 broadcast 217.XXX.XXX.XXX
        inet6 fe80::225:90ff:fee0:20c6%em0 prefixlen 64 scopeid 0x1
        inet6 2001:db8:ffff:ab::1 prefixlen 64

Die Route kann ich auch setzen:
Code:
~ # route add -inet6 -iface -ifp em0 -host 2001:db8:ffff:1:beef::1 -prefixlen 64 2001:db8:ffff:ab::1
add host 2001:db8:ffff:1:beef::1: gateway 2001:db8:ffff:ab::1
Das Setzen eines neuen Entry in ndp schlägt allerdings fehl:
Code:
~ # ndp -s 2001:db8:ffff:1:beef::1 00:0c:db:51:45:00
set: cannot configure a new entry
Ein ndp -a zeigt mir die neuen Eintrag ebenfalls nicht an:
Code:
~ # ndp -a
Neighbor                                         Linklayer Address  Netif Expire    S Flags
host.name                                        0:25:90:e0:20:c6    em0 permanent R
fe80::225:90ff:fee0:20c6%em0                     0:25:90:e0:20:c6    em0 permanent R
fe80::1%lo0                                      (incomplete)        lo0 permanent R
Default Route setzen funktioniert ebenfalls:
Code:
~ # route add -inet6 default 2001:db8:ffff:1:beef::1
add net default: gateway 2001:db8:ffff:1:beef::1
Externe hosts kann ich allerdings nicht anpingen:
Code:
~ # ping6 ipv6.google.com
PING6(56=40+8+8 bytes) 2001:db8:ffff:ab::1 --> 2404:6800:4003:c00::63
ping6: sendmsg: No route to host
ping6: wrote ipv6.l.google.com 16 chars, ret=-1
ping6: sendmsg: No route to host
ping6: wrote ipv6.l.google.com 16 chars, ret=-1
Prinzipiell ist das Gateway allerdings erreichbar, was ich aus meinem Heimnetz mit Tunnel testen kann:
Code:
~ $ ping6 2001:db8:ffff:1:beef::1
PING6(56=40+8+8 bytes) 2001:db8:200:5df::2 --> 2001:db8:ffff:1:beef::1
16 bytes from 2001:db8:ffff:1:beef::1, icmp_seq=0 hlim=59 time=25.903 ms
16 bytes from 2001:db8:ffff:1:beef::1, icmp_seq=1 hlim=59 time=26.497 ms
16 bytes from 2001:db8:ffff:1:beef::1, icmp_seq=2 hlim=59 time=26.303 ms
16 bytes from 2001:db8:ffff:1:beef::1, icmp_seq=3 hlim=59 time=24.363 ms
Irgendjemand eine Idee, wie ich dieses etwas komische Setup bei OpenBSD hinbekomme?

Marc

PS: Das /32 Dokuprefix ist bewusst gewählt ;)
 
Hi mark05,

meintest du sowas?

Code:
~ # route add -inet6 -mpath default -ifp em0 2001:db8:ffff:1:beef::1
add net default: gateway 2001:db8:ffff:1:beef::1
~ # ping6 2001:db8:ffff:1:beef::1
PING6(56=40+8+8 bytes) 2001:db8:ffff:ab::1 --> 2001:db8:ffff:1:beef::1
ping6: sendmsg: No route to host
ping6: wrote 2001:db8:ffff:1:beef::1 16 chars, ret=-1
ping6: sendmsg: No route to host
ping6: wrote 2001:db8:ffff:1:beef::1 16 chars, ret=-1

Hat leider auch nicht geholfen :(
 
Falls du die sysctl meinst, die hatte ich gesetzt. Allerdings wir mein Anwendungsfall nicht ganz behandelt, oder ich seh den Wald vor lauter Bäumen nicht. Wäre nett, wenn du mir da ein wenig auf die Sprünge helfen könntest.
 
hi

wichtig ist natuerlich dem ping oder der ausgehenden verbindung zu sagen von welcher src ip er die verbindung machen soll.

jedoch glaube ich das du multipath routing brauchst.


mm. musst du nur , wenn ich das richtig verstanden habe mit den folgenden werten

Adressbereich:2001:db8:ffff:00ab::0 /64
Gateway:2001:db8:ffff:1:beef::1

ifconfig em0 -inet6 2001:db8:ffff:00ab::1 /64
setzen

und dann
route add -inet6 2001:db8:ffff:1:beef::1

formal ist das gw im gleichen netz 2001:db8:ffff:

sollte somit sich setzen lassen.

holger
 
ifconfig em0 -inet6 2001:db8:ffff:00ab::1 /64
setzen
das hab ich ja gemacht (s. OP)
und dann
route add -inet6 2001:db8:ffff:1:beef::1

formal ist das gw im gleichen netz 2001:db8:ffff:

sollte somit sich setzen lassen.

holger
lässt sich leider nicht setzen:
Code:
~ # route add -inet6 2001:db8:ffff:1:beef::1
route: writing to routing socket: Invalid argument
add host 2001:db8:ffff:1:beef::1: Invalid argument

Da fehlte die destination. Als default gesetzt funktioniert es nicht. Die abgehende IP ist immer die richtige von meinem em0 interface: 2001db8:ffff:ab::1.

Die prefixlen ist ja 64. damit unterscheidet sich das netz 2001:db8:ffff:1:: und 2001:db8:ffff:ab:: und genau damit scheine ich zu kämpfen zu haben.
 
Code:
~ # netstat -rn -f inet6 
Routing tables

Internet6:
Destination                        Gateway                        Flags  Refs      Use  Mtu  Prio Iface
::/104                             ::1                            UGRS      0        0    -    8 lo0 
::/96                              ::1                            UGRS      0        0    -    8 lo0 
default                            2001:db8:ffff:1:beef::1        UGS        0      27    -    8 em0 
::1                                ::1                            UH        14        6 33144    4 lo0 
::127.0.0.0/104                    ::1                            UGRS      0        0    -    8 lo0 
::224.0.0.0/100                    ::1                            UGRS      0        0    -    8 lo0 
::255.0.0.0/104                    ::1                            UGRS      0        0    -    8 lo0 
::ffff:0.0.0.0/96                  ::1                            UGRS      0        0    -    8 lo0 
2001:db8:ffff:1:beef::1            2001:db8:ffff:ab::1            UHS        1        2    -    8 em0 
2001:db8:ffff:ab::/64              link#1                        UC        0        0    -    4 em0 
2001:db8:ffff:ab::1                00:25:90:e0:20:c6              UHL        0        0    -    4 lo0 
2002::/24                          ::1                            UGRS      0        0    -    8 lo0 
2002:7f00::/24                     ::1                            UGRS      0        0    -    8 lo0 
2002:e000::/20                     ::1                            UGRS      0        0    -    8 lo0 
2002:ff00::/24                     ::1                            UGRS      0        0    -    8 lo0 
fe80::/10                          ::1                            UGRS      0        0    -    8 lo0 
fe80::%em0/64                      link#1                        UC        0        0    -    4 em0 
fe80::225:90ff:fee0:20c6%em0       00:25:90:e0:20:c6              HL        0        6    -    4 lo0 
fe80::%lo0/64                      fe80::1%lo0                    U          0        0    -    4 lo0 
fe80::1%lo0                        link#4                        UHL        0        4    -    4 lo0 
fec0::/10                          ::1                            UGRS      0        0    -    8 lo0 
ff01::/16                          ::1                            UGRS      0        0    -    8 lo0 
ff01::%em0/32                      link#1                        UC        0        0    -    4 em0 
ff01::%lo0/32                      fe80::1%lo0                    UC        0        0    -    4 lo0 
ff02::/16                          ::1                            UGRS      0        0    -    8 lo0 
ff02::%em0/32                      link#1                        UC        1        0    -    4 em0 
ff02::2%em0                        link#1                        UHLc      0      11    -    4 em0 
ff02::%lo0/32                      fe80::1%lo0                    UC        0        0    -    4 lo0

~ # ndp -a
Neighbor                            Linklayer Address  Netif Expire    S Flags
host.name                           0:25:90:e0:20:c6    em0 permanent R
fe80::225:90ff:fee0:20c6%em0        0:25:90:e0:20:c6    em0 permanent R
fe80::1%lo0                         (incomplete)        lo0 permanent R
 
Frag mal beim Hoster, ob es eine link-local Adresse für das GW gibt (z.B. fe80::1%em0).
Was mich wundert ist, dass als GW beim Eintrag zur Route nach 2001:db8:ffff:1:beef::1 eine IPv6-Adresse steht, IMHO sollte da eine MAC-Adresse stehen.

Versuch mal einfach das Kommando
# route add -inet6 2001:db8:ffff:1:beef::1 -iface em0
ohne den ganzen anderen Schnickschnack, bekommst du da eine Fehlermeldung?

Rob
 
Frag mal beim Hoster, ob es eine link-local Adresse für das GW gibt (z.B. fe80::1%em0).
Was mich wundert ist, dass als GW beim Eintrag zur Route nach 2001:db8:ffff:1:beef::1 eine IPv6-Adresse steht, IMHO sollte da eine MAC-Adresse stehen.
ich hab dem die adresse mitgegeben, über die er das GW erreichen sollte.
Versuch mal einfach das Kommando
# route add -inet6 2001:db8:ffff:1:beef::1 -iface em0
ohne den ganzen anderen Schnickschnack, bekommst du da eine Fehlermeldung?

Rob
jop:
Code:
~ # route add -inet6 2001:4ba0:ffff:1:beef::1 -iface em0
route: em0: bad value
EDIT: -iface wird unter OpenBSD anders gehandhabt:
If the destination is directly reachable via an interface requiring no
intermediary system to act as a gateway, the -iface 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.
 
link local scheint es nicht zu geben. Die Antwort:
Prinzipiell müssen Sie nur eine IP aus Ihrem Netz hochfahren und eine Hostroute zum Gateway setzen. Es müssen mindestens folgende Routen existieren:
Code:
2001:4ba0:ffff:1:beef::1 dev eth0
default via 2001:4ba0:ffff:1:beef::1
 
hi

eine linklocal addr gibt es immer fuer den jeweiligen host , sollte aber an solch einer stelle nicht verwendet werden.

da die von die genannten ipv6 addr als netz 2001:4ba0:ffff haben sollten diese auch normal gesetzt werden koennen.

defaulr gw wie schon gesagt

route add -inet6 default 2001:4ba0:ffff:1:beef::1



holger
 
hi

eine linklocal addr gibt es immer fuer den jeweiligen host , sollte aber an solch einer stelle nicht verwendet werden.

ja, das weiss ich wohl. ich meinte es jetzt eher auf das Routing bezogen. Also so, wie Hetzner das macht.

da die von die genannten ipv6 addr als netz 2001:4ba0:ffff haben sollten diese auch normal gesetzt werden koennen.

defaulr gw wie schon gesagt

route add -inet6 default 2001:4ba0:ffff:1:beef::1



holger
die weigert er sich zu setzen, weil er das Netz nicht erreicht (weder per /etc/mygate, in dem ich sie vor einem Neustart gesetzt hatte, noch per Hand auf der Konsole) :
Code:
marc@malkier
~ $ ifconfig em0
em0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        lladdr 00:25:90:e0:20:c6
        priority: 0
        groups: egress
        media: Ethernet autoselect (1000baseT full-duplex,master,rxpause,txpause)
        status: active
        inet 217.79.184.47 netmask 0xffffff80 broadcast 217.79.184.127
        inet6 fe80::225:90ff:fee0:20c6%em0 prefixlen 64 scopeid 0x1
        inet6 2001:4ba0:ffff:ab::1 prefixlen 64
marc@malkier
~ $ netstat -rn
Routing tables

Internet:
Destination        Gateway            Flags  Refs      Use  Mtu  Prio Iface
default            217.79.184.1      UGS      12      984    -    8 em0
127/8              127.0.0.1          UGRS      0        0 33144    8 lo0
127.0.0.1          127.0.0.1          UH        4      369 33144    4 lo0
217.79.184.0/25    link#1            UC        1        0    -    4 em0
217.79.184.1      00:d0:03:b6:fc:00  UHLc      1        0    -    4 em0
224/4              127.0.0.1          URS        0        0 33144    8 lo0

Internet6:
Destination                        Gateway                        Flags  Refs      Use  Mtu  Prio Iface
::/104                            ::1                            UGRS      0        0    -    8 lo0
::/96                              ::1                            UGRS      0        0    -    8 lo0
::1                                ::1                            UH        14        0 33144    4 lo0
::127.0.0.0/104                    ::1                            UGRS      0        0    -    8 lo0
::224.0.0.0/100                    ::1                            UGRS      0        0    -    8 lo0
::255.0.0.0/104                    ::1                            UGRS      0        0    -    8 lo0
::ffff:0.0.0.0/96                  ::1                            UGRS      0        0    -    8 lo0
2001:4ba0:ffff:ab::/64            link#1                        UC        0        0    -    4 em0
2001:4ba0:ffff:ab::1              00:25:90:e0:20:c6              HL        0        0    -    4 lo0
2002::/24                          ::1                            UGRS      0        0    -    8 lo0
2002:7f00::/24                    ::1                            UGRS      0        0    -    8 lo0
2002:e000::/20                    ::1                            UGRS      0        0    -    8 lo0
2002:ff00::/24                    ::1                            UGRS      0        0    -    8 lo0
fe80::/10                          ::1                            UGRS      0        0    -    8 lo0
fe80::%em0/64                      link#1                        UC        0        0    -    4 em0
fe80::225:90ff:fee0:20c6%em0      00:25:90:e0:20:c6              HL        0        0    -    4 lo0
fe80::%lo0/64                      fe80::1%lo0                    U          0        0    -    4 lo0
fe80::1%lo0                        link#4                        UHL        0        0    -    4 lo0
fec0::/10                          ::1                            UGRS      0        0    -    8 lo0
ff01::/16                          ::1                            UGRS      0        0    -    8 lo0
ff01::%em0/32                      link#1                        UC        0        0    -    4 em0
ff01::%lo0/32                      fe80::1%lo0                    UC        0        0    -    4 lo0
ff02::/16                          ::1                            UGRS      0        0    -    8 lo0
ff02::%em0/32                      link#1                        UC        0        0    -    4 em0
ff02::%lo0/32                      fe80::1%lo0                    UC        0        0    -    4 lo0
marc@malkier
~ $ sudo route add -inet6 default 2001:4ba0:ffff:1:beef::1    

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

    #1) Respect the privacy of others.
    #2) Think before you type.
    #3) With great power comes great responsibility.

Password:
route: writing to routing socket: Network is unreachable
add net default: gateway 2001:4ba0:ffff:1:beef::1: Network is unreachable
marc@malkier
~ $
Meine bisherigen Versuche, das ganze per Hostroute zu lösen, sind irgendwie auch fehlgeschlagen.
 
bist du sicher das du die richtige gw addr hast ?

weil "beef" ist eigentlich ein synonym bei einer beispiel addr.


der erste teil der addr ist ja identisch

2001:4ba0:ffff:1

wobei die 1 das erste netzmasken bit wieder spieglen sollte .


holger
 
aber die SLA ist doch eine andere, und daher meint OpenBSD, dass er das Netz bei einer Prefix Länge 64 nicht erreichen kann, oder? Der Support spricht ja auch davon, dass eine Hostroute gesetzt werden muss und anschließend die default route auf das GW.

Ich werde wohl gleich mal die Rescue starten und es mal mit deren Linux ausprobieren :-\
 
So, bin nun endlich mal dazu gekommen, das Linux der rescue Konsole zu probieren:
Code:
~ # ip -6 route add 2001:4ba0:ffff:1:beef::1 dev eth0
~ # ip -6 route add default via 2001:4ba0:ffff:1:beef::1
~ # ip -6 route show
2001:4ba0:ffff:1:beef::1 dev eth0  metric 1024
2001:4ba0:ffff:ab::/64 dev eth0  proto kernel  metric 256
fe80::/64 dev eth0  proto kernel  metric 256
default via 2001:4ba0:ffff:1:beef::1 dev eth0  metric 1024
~ # ping6 ipv6.google.com
PING ipv6.google.com(la-in-x6a.1e100.net) 56 data bytes
64 bytes from la-in-x6a.1e100.net: icmp_seq=1 ttl=54 time=39.5 ms
64 bytes from la-in-x6a.1e100.net: icmp_seq=2 ttl=54 time=39.3 ms
64 bytes from la-in-x6a.1e100.net: icmp_seq=3 ttl=54 time=38.8 ms
64 bytes from la-in-x6a.1e100.net: icmp_seq=4 ttl=54 time=39.1 ms
^C
Das heisst zumindest schonmal, dass es prinzipiell so funktionieren sollte.
 
Also, den letzten Tipp, den ich habe: schau mal, ob es eine sysctl-Variable net.inet6.icmp6.nd6_onlink_ns_rfc4861 (wie bei FreeBSD) gibt.
Wenn ja, setz mal den Wert auf 1.

Rob
 
Leider gibt es das sysctl nicht:
Code:
net.inet6.ip6.forwarding=0
net.inet6.ip6.redirect=1
net.inet6.ip6.hlim=64
net.inet6.ip6.mrtproto=103
net.inet6.ip6.maxfragpackets=200
net.inet6.ip6.accept_rtadv=0
net.inet6.ip6.log_interval=5
net.inet6.ip6.hdrnestlimit=10
net.inet6.ip6.dad_count=1
net.inet6.ip6.auto_flowlabel=1
net.inet6.ip6.defmcasthlim=1
net.inet6.ip6.use_deprecated=1
net.inet6.ip6.rr_prune=5
net.inet6.ip6.v6only=1
net.inet6.ip6.maxfrags=200
net.inet6.ip6.mforwarding=0
net.inet6.ip6.multipath=0
net.inet6.ip6.multicast_mtudisc=0
net.inet6.ip6.neighborgcthresh=2048
net.inet6.ip6.maxifprefixes=16
net.inet6.ip6.maxifdefrouters=16
net.inet6.ip6.maxdynroutes=4096
net.inet6.ip6.dad_pending=0
net.inet6.ip6.mtudisctimeout=600
net.inet6.icmp6.rediraccept=0
net.inet6.icmp6.redirtimeout=600
net.inet6.icmp6.nd6_prune=1
net.inet6.icmp6.nd6_delay=5
net.inet6.icmp6.nd6_umaxtries=3
net.inet6.icmp6.nd6_mmaxtries=3
net.inet6.icmp6.nd6_useloopback=1
net.inet6.icmp6.nodeinfo=1
net.inet6.icmp6.errppslimit=100
net.inet6.icmp6.nd6_maxnudhint=0
net.inet6.icmp6.mtudisc_hiwat=1280
net.inet6.icmp6.mtudisc_lowat=256
net.inet6.icmp6.nd6_debug=0
net.inet6.divert.recvspace=65636
net.inet6.divert.sendspace=65636
 
Zurück
Oben