IPv6 unstable

I’m trying to get IPv6 stable on my (remote) server, however it intermittently looses IPv6 connectivity, fixable only by a reboot (etc/init.d/networking restart doesn’t work with the FILE EXISTS problem - possibly related to the dropping of IPv6). I’ve checked that my address and netmask are the ones assigned to me by my ISP.

Key details:
OS: Ubuntu Server 12.04 LTS, fully updated.
Virtualmin: GPL, fully updated.
Extra Modules: nginx.

Contents of /etc/network/interfaces

auto lo eth0
iface lo inet loopback

iface eth0 inet static
address 91.121.6.110
netmask 255.255.255.0
broadcast 91.121.6.255
network 91.121.6.0
gateway 91.121.6.254

iface eth0 inet6 static
address 2001:41d0:1:596e::1
netmask 64
post-up ifconfig eth0 inet6 add 2001:41d0:1:596e::2/64
pre-down ifconfig eth0 inet6 del 2001:41d0:1:596e::2/64
gateway 2001:41d0:1:59FF:FF:FF:FF:FF

Immediately after a reboot, once the loading has finished, my networking has the following state:

saidar@angreal:~$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 4c:72:b9:43:84:40 brd ff:ff:ff:ff:ff:ff
inet 91.121.6.110/24 brd 91.121.6.255 scope global eth0
inet6 2001:41d0:1:596e::1/64 scope global
valid_lft forever preferred_lft forever
inet6 fe80::4e72:b9ff:fe43:8440/64 scope link
valid_lft forever preferred_lft forever

saidar@angreal:~$ ip route default via 91.121.6.254 dev eth0 metric 100 91.121.6.0/24 dev eth0 proto kernel scope link src 91.121.6.110

saidar@angreal:~$ ip -f inet6 route
2001:41d0:1:596e::/64 dev eth0 proto kernel metric 256
2001:41d0:1:5900::/56 dev eth0 proto kernel metric 256 expires 2592264sec
fe80::/64 dev eth0 proto kernel metric 256
default via fe80::21e:79ff:fe1e:d400 dev eth0 proto kernel metric 1024 expires 1741sec
default via fe80::21e:79ff:fe1e:f000 dev eth0 proto kernel metric 1024 expires 1741sec

I can successfully ping my ISPs gateway and ipv6.google.com.
Although my second ipv6 address appears not to have been configured, I can manually ipconfig it and accept incoming IPv6 connections.

However, after a while - usually no more than a couple of hours, I loose all IPv6 connectivity, except to my ISPs gateway. I can no-longer ping external sites, nor accept incoming IPv6 connections. Below are the results of the same commands executed above.

saidar@angreal:~$ ip addr 1: lo: mtu 16436 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 4c:72:b9:43:84:40 brd ff:ff:ff:ff:ff:ff inet 91.121.6.110/24 brd 91.121.6.255 scope global eth0 inet6 2001:41d0:1:596e::2/64 scope global valid_lft forever preferred_lft forever inet6 2001:41d0:1:596e::1/64 scope global valid_lft forever preferred_lft forever inet6 fe80::4e72:b9ff:fe43:8440/64 scope link valid_lft forever preferred_lft forever saidar@angreal:~$ ip route default via 91.121.6.254 dev eth0 metric 100 91.121.6.0/24 dev eth0 proto kernel scope link src 91.121.6.110

saidar@angreal:~$ ip -f inet6 route
2001:41d0:1:596e::/64 dev eth0 proto kernel metric 256
2001:41d0:1:5900::/56 dev eth0 proto kernel metric 256 expires 2548037sec
fe80::/64 dev eth0 proto kernel metric 256

Does anyone have any ideas over what’s causing IPv6 to fail? Any help, or suggestions are welcome.