How to configure routing for two IPv6 providers

Linux Advanced Routing and Traffic Control

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello,

could someone give me a hint how to configure routing for two IPv6 providers?

I tried to follow "Routing for multiple uplinks/providers" of LARTC but seems I
do something wrong because it does work (almost) for a host (router) but doesn't
work for LAN hosts.

My situation looks as the picture on
https://lartc.org/lartc.html#LARTC.RPDB.MULTIPLE-LINKS

  PROVIDER1 -------------+
                         |
                  +------+--------------+      +-----+
                  |                     |      |     |
                  | Linux host (router) |------| LAN |
                  |                     |      |     |
                  +------+--------------+      +-----+
                         |
  PROVIDER2 -------------+

PROVIDER1 gives me stable /64 prefix.

PROVIDER2 provides every time new /64 prefixes (seems they provide /47 network,
see below).

I want to configure the host (router) to use PROVIDER2 for any outgoing IPv6
connections (including traffic from LAN), except for addresses in PROVIDER1
network. On the other hand, I want to connect to the host and LAN hosts from
Internet by their addresses from PROVIDER1 and PROVIDER2.

The LAN hosts obtain IPv6 addresses from the router by RA (radvd). I could
advertise both prefixes but I stick with PROVIDER2 /64 network though some hosts
on LAN have static IPv6 addresses (besides obtained by RA) from PROVIDER1.

Technical details: PROVIDER1 is Hurricane Electric, so addresses of it are from
2001:470::/32 network. PROVIDER2 is local ISP provider, it provides IPv6
addresses unofficially (seems they are testing this feature), addresses are from
2a01:620::/32 network.

Other detail: despite the picture above I have actually one physical connection
to the provider (PROVIDER2) but the host has two "ethernet" devices: he-ipv6 and
ppp0. As PROVIDER1 gives me stable /64 network I use these addresses to connect
to the host and some LAN hosts from Internet.

I tried to follow instructions in section 4.2.1 Split access:

P1_NET=2001:470::/32
IF1=he-ipv6
IP1=<XXXX::2>
TAB1=HE
P1=<XXXX::1>

P2_NET=2a01:620::/32
IF2=ppp0
IP2=<ppp0 IPv6 address>
TAB2=RT
P2=<from ip -6 route>

<XXXX::1>: is HE server endpoint address,
<XXXX::2>: address on my side of tunnel.

<from ip -6 route>: fe80:: address obtained by ppp daemon.

I could be wrong with P1/P2 part but nevertheless I did following steps:

(copied from my shell script)

------------------------------- 8< --------------------------------

ip -6 route add ${P1_NET} dev ${IF1} src ${IP1} table ${TAB1}
ip -6 route add default via ${P1}               table ${TAB1}
ip -6 route add ${P2_NET} dev ${IF2} src ${IP2} table ${TAB2}
ip -6 route add default via ${P2}               table ${TAB2}

ip -6 route add ${P1_NET} dev ${IF1} # src ${IP1}
ip -6 route add ${P2_NET} dev ${IF2} # src ${IP2}

ip -6 route add default via ${P2}

# ip -6 rule add from ${IP1}/64 table ${TAB1}

------------------------------- 8< --------------------------------

After I run these commands I see that the host uses PROVIDER2 address to ping
external hosts (this means, I think, that outgoing packets go through it) but I
couldn't ping the host by address from PROVIDER1.

As I understand

ip -6 route add default via ${P2}

makes packets go through IF2 but that prevents access from PROVIDER1 address.

I think I should set default route by IF2 (ppp0) but must add special "rule" for
2001:470::/32 network. I did that and then I could ping the host by its address
from PROVIDER1 network (XXXX::2). But in either case I couldn't use IPv6 (even
ping) from LAN.

I would be glad if someone help me to figure out the problem so I could
configure the host as I desire (if such configuration doesn't look too weird).

---
WBR, Vladimir Lomov

-- 
PL/I -- "the fatal disease" -- belongs more to the problem set than to the
solution set.
		-- Edsger W. Dijkstra, SIGPLAN Notices, Volume 17, Number 5

Attachment: signature.asc
Description: PGP signature


[Index of Archives]     [LARTC Home Page]     [Netfilter]     [Netfilter Development]     [Network Development]     [Bugtraq]     [GCC Help]     [Yosemite News]     [Linux Kernel]     [Fedora Users]
  Powered by Linux