[ubuntu/ipv6] default gateway genegeerd na opstarten

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • cyberstalker
  • Registratie: September 2005
  • Niet online

cyberstalker

Eersteklas beunhaas

Topicstarter
Na het opstarten wordt de default gateway voor ipv6 genegeerd, totdat ik de route verwijder en opnieuw instel. Dit gebeurt enkel op machines die gebruik maken van een bridging interface.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$ ip addr show br0
9: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP 
    link/ether 78:45:c4:82:9a:a8 brd ff:ff:ff:ff:ff:ff
    inet xxx.xxx.129.16/24 brd xxx.xxx.129.255 scope global br0
    inet 10.0.0.156/8 brd 10.255.255.255 scope global br0:1
    inet6 xxxx:xxxx:0:1::129:16/64 scope global 
       valid_lft forever preferred_lft forever
    inet6 fe80::d45b:9bff:fe86:c8dd/64 scope link 
       valid_lft forever preferred_lft forever

$ ip -6 route
xxxx:xxxx:0:1::/64 dev br0  proto kernel  metric 256 
fe80::/64 dev br0  proto kernel  metric 256 
default via xxxx:xxxx:0:1::1 dev br0  metric 1024
default via fe80::211:bcff:fe9a:5000 dev br0  proto kernel  metric 1024  expires 1750sec
default via fe80::211:bcff:feae:8800 dev br0  proto kernel  metric 1024  expires 1750sec


Wanneer ik nu bijvoorbeeld probeer te pingen naar google.com, krijg ik de melding dat het netwerk down is:

code:
1
2
3
4
5
6
$ ping6 -c 1 google.com
PING google.com(2a00:1450:400c:c05::66) 56 data bytes
ping: sendmsg: Network is down

--- google.com ping statistics ---
1 packets transmitted, 0 received, 100% packet loss, time 0ms


Wanneer ik de default route verwijder en opnieuw aanmaak werkt alles ineens (tot een reboot)

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$ sudo ip -6 route del default via xxxx:xxxx:0:1::1 dev br0
$ sudo ip -6 route add default via xxxx:xxxx:0:1::1 dev br0

$ ip -6 route
xxxx:xxxx:0:1::/64 dev br0  proto kernel  metric 256 
fe80::/64 dev br0  proto kernel  metric 256 
default via fe80::211:bcff:fe9a:5000 dev br0  proto kernel  metric 1024  expires 1498sec
default via fe80::211:bcff:feae:8800 dev br0  proto kernel  metric 1024  expires 1498sec
default via xxxx:xxxx:0:1::1 dev br0  metric 1024

$ ping6 -c 1 google.com
PING google.com(2a00:1450:400c:c05::66) 56 data bytes
64 bytes from 2a00:1450:400c:c05::66: icmp_seq=1 ttl=57 time=29.6 ms

--- google.com ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 29.625/29.625/29.625/0.000 ms


Wat me opviel is dat na het verwijderen en opnieuw toevoegen van de default route deze ineens onder de link-local routes staan. Omdat ik dacht dat het daar misschien iets mee te maken zou kunnen hebben, heb ik een keer gewacht totdat deze routes zouden expiren, dit had echter geen oplossing van het probleem tot het gevolg.

Ik heb al geprobeerd om als workaround de route te verwijderen en opnieuw in te stellen in een post-up rule in het interfaces bestand, dit zorgt er echter voor dat het ipv6 adres volledig verdwijnt.

Kan iemand me uitleggen waarom dit fout zou kunnen gaan en wat ik eraan zou kunnen doen?

Ik ontken het bestaan van IE.


Acties:
  • 0 Henk 'm!

  • webfreakz.nl
  • Registratie: November 2003
  • Laatst online: 21-08 15:56

webfreakz.nl

el-nul-zet-é-er

cyberstalker schreef op zaterdag 08 september 2012 @ 12:26:
Ik heb al geprobeerd om als workaround de route te verwijderen en opnieuw in te stellen in een post-up rule in het interfaces bestand, dit zorgt er echter voor dat het ipv6 adres volledig verdwijnt.
Laat dan dit bestand óók zien in je post..

Anyway, bij mij ziet het bestand onder Ubuntu 10.04 /etc/network/interfaces er als volgt uit, en dat werkt prima:

code:
1
2
3
4
5
6
ronald@tartarus:~$ cat /etc/network/interfaces
<...>
iface eth0 inet6 static
 address 2001:DB8::1337
 netmask 64
 gateway 2001:DB8::1

"You smell that, son? What sir? Napalm, I love the smell of napalm in the mornin!" || Children of Bodom fan!


Acties:
  • 0 Henk 'm!

  • cyberstalker
  • Registratie: September 2005
  • Niet online

cyberstalker

Eersteklas beunhaas

Topicstarter
Op verzoek het interfaces bestand. Zoals ik al in mijn TS aangaf treedt het probleem enkel op wanneer ik een bridge gebruik (br0). Het gekke is dat ik precies ditzelfde probleem ook al op een andere machine heb gehad en het daar na een aantal dagen spontaan is verdwenen.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
 
# The loopback network interface
auto lo
iface lo inet loopback
 
# The primary network interface
auto bond0 br0 br0:1
iface bond0 inet manual
    bond-slaves none
    bond-mode 4
    bond-miimon 100
 
iface br0 inet static
    address xxx.xxx.129.16
    netmask 255.255.255.0
    network xxx.xxx.129.0
    broadcast xxx.xxx.129.255
    gateway xxx.xxx.129.254
    dns-nameservers 127.0.0.1
    dns-search example.org
    bridge_ports bond0
    bridge_stp off
    bridge_fd 0
    bridge_maxwait 0

iface br0 inet6 static
    address xxxx:xxxx:0:1::129:16
    netmask 64
    gateway xxxx:xxxx:0:1::1
 
auto eth0
iface eth0 inet manual
    bond-master bond0
    bond-primary eth0 eth1
 
auto eth1
iface eth1 inet manual
    bond-master bond0
    bond-primary eth0 eth1
 
iface br0:1 inet static
    address 10.0.0.156
    netmask 255.0.0.0

Ik ontken het bestaan van IE.


Acties:
  • 0 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 21:39

Hero of Time

Moderator LNX

There is only one Legend

Haal eens 'auto eth1' en 'auto eth0' eruit, is nergens voor nodig. Het is ook vreemd hoe je je config hebt, in bond0 zeg je dat er geen slaves zijn, maar lager zeg je tegen eth0 en eth1 dat bond0 hun master is. Spreekt elkaar tegen en zou zeer mogelijk je probleem veroorzaken. Je route werkt pas, als er daadwerkelijk een fysieke interface beschikbaar is. Bond0 wordt ingesteld, geen slaves, br0 wordt ingesteld met bond0 erbij, dan komen pas eth0 en eth1 aan met hun config. Tegen die tijd is er al een route gezet die niet bereikbaar is, en werkt deze dus niet.

Overigens, waarom heb je een bridge op je bond interface, is nergens voor nodig. Je gebruikt OF bonding, OF bridging. Niet beide tegelijk. Lees jezelf eens in in welke situatie je wat gebruikt.

Commandline FTW | Tweakt met mate


Acties:
  • 0 Henk 'm!

  • cyberstalker
  • Registratie: September 2005
  • Niet online

cyberstalker

Eersteklas beunhaas

Topicstarter
De reden voor de 'auto eth*' en bond-slaves none is dat wanneer de bonding driver wordt geladen, de ethernet driver nog niet beschikbaar is. Wanneer deze dus als bond-slaves zijn aangemerkt komt het netwerk niet correct op. Om deze reden staan eth0 en eth1 ook op auto: ze komen op wanneer hun driver geladen is en melden zich dan aan bij de bond0 interface.

De reden voor het gebruik van de bonding interface zijn om gebruik te kunnen maken van link aggregation. Op deze manier is er niet alleen failover maar kan ook de volledige snelheid van beide 10Gb kaarten worden gebruikt om een enkele 20Gb interface te maken. Wanneer ik de bridge rechtstreeks op eth0 en eth1 laat werken heb ik die mogelijkheid niet.

Maar goed, het probleem zou dus zijn dat wanneer de route wordt toegevoegd, deze nog niet geldig is (omdat bond0 nog geen interfaces heeft). De bridge interface markeert deze dan als ongeldig en weigert pakketten daarop te routeren. Ik heb hiervoor al bridge_maxwait geprobeerd en bridge_waitport, maar dat heeft geen effect.

Ik ontken het bestaan van IE.


Acties:
  • 0 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 21:39

Hero of Time

Moderator LNX

There is only one Legend

Als je eth0 en eth1 wilt samen laten werken, heb je die hele bridge niet nodig! Heb je wel gelezen wat ik er over had gezegd net? Heb je er extra info voor gezocht?

En dat je driver niet geladen is ten tijde van het up brengen van het netwerk, is zeer apart. Alle hardware moet op dat punt allang werken en operationeel zijn.

Commandline FTW | Tweakt met mate


Acties:
  • 0 Henk 'm!

  • cyberstalker
  • Registratie: September 2005
  • Niet online

cyberstalker

Eersteklas beunhaas

Topicstarter
Ik heb de bridge interface nodig omdat ik virtuele machines wil draaien die ook vanaf buiten bereikbaar zijn (dus geen NAT). Daar heb je echt een bridge interface voor nodig.

En dat het niet werkt met de bond-slaves vind ik ook apart, maar het is een bekend probleem met Ubuntu. Sterker nog, deze oplossing komt rechtstreeks van de ubuntu documentatie: https://help.ubuntu.com/community/UbuntuBonding

Ik ontken het bestaan van IE.


Acties:
  • 0 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 21:39

Hero of Time

Moderator LNX

There is only one Legend

Welke virtualisatie gebruik je dan? Is het niet een idee om naar Debian te kijken? Voor de echt serieuze zaken neem ik Debian, dat voelt gewoon een stuk stabieler en meer af dan Ubuntu. Geen rariteiten.

Commandline FTW | Tweakt met mate


Acties:
  • 0 Henk 'm!

  • cyberstalker
  • Registratie: September 2005
  • Niet online

cyberstalker

Eersteklas beunhaas

Topicstarter
Ik gebruik kvm voor virtualisatie. Ik heb ook naar Debian gekeken, punt is echter dat de nieuwere versies van kvm die met Ubuntu worden meegeleverd behoorlijke performanceverbeteringen met zich meebrengen, waardoor ik toch liever bij Ubuntu blijf. Daarnaast draaien alle andere servers ook op Ubuntu en is het natuurlijk wel prettig om een zo uniform mogelijk systeem te hebben.

Ik ontken het bestaan van IE.


Acties:
  • 0 Henk 'm!

  • Kees
  • Registratie: Juni 1999
  • Laatst online: 18:55

Kees

Serveradmin / BOFH / DoC
Ik doe het zelf (ook met ubuntu) subtiel anders.

De bonding config heb ik in /etc/modprobe.d/bonding staan (maar dat maakt verder niet veel uit):
code:
1
2
3
4
5
6
$ cat /etc/modprobe.d/bonding.conf 
alias bond0 bonding
options bond0 mode=1 miimon=100 updelay=500 primary=eth0 max_bonds=2

alias bond1 bonding
options bond1 mode=1 miimon=100 updelay=500 primary=eth2 max_bonds=2


De eth* interfaces laat ik nergens op komen, de bond interface wel:
code:
1
2
3
4
5
6
auto bond0
iface bond0 inet manual
    pre-up ifconfig bond0 up
    up ifenslave bond0 eth0 eth1
    down ifenslave -d bond0 eth0 eth1
    post-down ifconfig bond0 down

Hierover definieer ik dan weer een vlan, en daaroverheen weer een bridge:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
auto br0.XXX
iface br0.XXX inet static
    address a.b.c.113
    netmask 255.255.255.0
    gateway a.b.c.1
    bridge_ports vlanXXX
    bridge_stp off

iface br0.XXX inet6 static
    address abcd:abcd:abcd:abcd::115
    netmask 64
    up ip -6 addr add dcba:dcba:dcba:abcd::115/64 dev eth0
    post-up sleep 5
    post-up ip -6 route add default via abcd:abcd:abcd:abcd::1 dev eth0 src abcd:abcd:abcd:abcd::115

Ik kwam er ook achter dat ik die sleep nodig had, want anders geeft hij een error alla 'er is nog geen route naar de gateway'. Verder heb ik meerdere ranges aan de interfaces hangen, en daarom moet ik een source adres geven (anders doet hij stom reageren met een verkeerd source adres als die toevallig dichter bij het destination adres ligt).

Dus mischien is een sleep ook wel wat voor jou.

"Een serveradmin, voluit een serveradministrator, is dan weer een slavenbeheerder oftewel een slavendrijver" - Rataplan

Pagina: 1