Linux IPv6 Multihomed
Shadow Hawkins on Saturday, 08 September 2007 16:43:46
I have got 2 tunnels on one machine to different POPs and wanted to use both of them. That brought up the routing issue with only one default route.
Since 2.6.19 it is possible to have multipe IPv6 routing tables. See here my setup on Debian:
Howto have 2 or more IPv6 tunnels on one machine
(Multihomed IPv6 Setup)
Since 2.6.19 linux has support for CONFIG_IPV6_MULTIPLE_TABLES (Support
multiple routing tables) and since 2.6.20 CONFIG_IPV6_SUBTREES (Enable routing
by source address or prefix).
With this infrastructure it is possible to have multiple IPv6 addresses on
different subnets (read differnet SixxS tunnels to different POPs) working.
With a normal setup, you would end up with one default route and route all
traffic through this link.
My setup is the following:
One SixxS tunnel Maribor, Slovenia (sixxs-si), and one to Hamburg, Germany
(sixxs-de).
First added a new table to /etc/iproute2/rt_tables:
echo "100 sixxs" >> /etc/iproute2/rt_tables
In /etc/network/interfaces I have the following setup (Static IPv4 Adress):
auto sixxs-si
iface sixxs-si inet6 v4tunnel
address 2001:1::2
netmask 64
endpoint 212.18.63.73
ttl 64
up ip link set mtu 1280 dev sixxs-si
up ip route add default via 2001:1::1 dev sixxs-si
auto sixxs-de
iface sixxs-de inet6 v4tunnel
address 2001:ffff::2
netmask 64
endpoint 212.224.0.188
ttl 64
up ip link set mtu 1280 dev sixxs-de
up ip -6 rule add from 2001:ffff::2 table sixxs
up ip -6 route add default via 2001:ffff::1 table sixxs
down ip -6 rule del table sixxs
down ip -6 route flush table sixxs
IPv6 adresses are not the actual ones.
Linux IPv6 Multihomed
Shadow Hawkins on Saturday, 08 September 2007 16:46:29
I will update this howto here when needed:
http://www.kolmann.at/philipp/linux/IPv6-Multihome-Howto.txt
Linux IPv6 Multihomed
Shadow Hawkins on Monday, 10 December 2007 13:40:44
Whenever I do the
ip -6 route add default via <sixxs-tunnel-endpoint-ipv6> dev sixxs table sixxs
I get a "RTNETLINK answers: No route to host"
The table "sixxs" already has a host-route to <sixxs-tunnel-endpoint-ipv6>.
The tunnel "sixxs" is up and I can be pinged via it from the outside.
Any ideas?
########### sixxs=100 routing-table
ip -6 route list table sixxs 2001:6f8:xxxx:xxxx::1 via 2001:6f8:xxxx:xxxx::1 dev sixxs metric 0
cache mtu 1280 advmss 1220 hoplimit 4294967295
2001:6f8:xxxx:xxxx::1 dev sixxs metric 1024 expires 21333468sec mtu 1280 advmss 1220 hoplimit 4294967295
########### failing to add default route in sixxs-table
ip -6 route add default via 2001:6f8:xxxx:xxxx::1 table sixxs RTNETLINK answers: No route to host
########### default routing-table
ip -6 route list ::/96 via :: dev tun6to4 metric 256 expires 19367706sec mtu 1480 advmss 1420 hoplimit 4294967295
2001:6f8:xxxx:xxxx::2/127 via :: dev sixxs metric 256 expires 21333982sec mtu 1280 advmss 1220 hoplimit 4294967295
....
fe80::/64 dev eth0 metric 256 expires 19367675sec mtu 1500 advmss 1440 hoplimit 4294967295
fe80::/64 dev tun6to4 metric 256 expires 19367706sec mtu 1480 advmss 1420 hoplimit 4294967295
fe80::/64 via :: dev sixxs metric 256 expires 21331662sec mtu 1280 advmss 1220 hoplimit 4294967295
default via ::192.88.99.1 dev tun6to4 metric 1 expires 19367706sec mtu 1480 advmss 1420 hoplimit 4294967295
########### rules
ip -6 rule
0: from all lookup local
16383: from 2001:6f8:xxxx:xxxx::1/64 lookup sixxs
32766: from all lookup main
########### interfaces
ip -6 addr 1: lo: <LOOPBACK,UP,10000> mtu 16436
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
3: eth0: ...
7: tun6to4@NONE: <NOARP,UP,10000> mtu 1480
inet6 2002:xxxx:xxxx::1/16 scope global
valid_lft forever preferred_lft forever
inet6 ::xxx.xxx.xxx.xxx/128 scope global
valid_lft forever preferred_lft forever
11: sixxs@NONE: <POINTOPOINT,NOARP,UP,10000> mtu 1280
inet6 2001:6f8:xxxx:xxxx::2/127 scope global
valid_lft forever preferred_lft forever
inet6 fe80::xxxx:xxxx/128 scope link
valid_lft forever preferred_lft forever
Linux IPv6 Multihomed
Shadow Hawkins on Monday, 10 December 2007 14:07:09
Ok, found it.
I needed the ipv4-endpoint of the tunnel, not the ipv6-endpoint.
ip -6 route add default via ::<tunnel-endpoint-ipv4> dev sixxs table sixxs
Linux IPv6 Multihomed
Shadow Hawkins on Monday, 10 September 2007 19:10:14
And it will be works like source based routing?
When someone access your sixxs-si address then sixxs-si will answer and route thru tunnel-si and the same for de? When someone access sixxs-de then reply will go from sixxs-de thru tunnel-de?
Linux IPv6 Multihomed
Shadow Hawkins on Sunday, 16 September 2007 12:40:11
yea, it's source based routing.
it works as you described.
Philipp
Posting is only allowed when you are logged in. |