Hi,
On Thu, 23 Jun 2005, Iljitsch van Beijnum wrote:
On 22-jun-2005, at 14:51, Mohacsi Janos wrote:
The trouble is that there is no clear way to force the use of internal
addresses for internal stuff and external addresses for external stuff.
This is easier, if you setup RFC3484 style address selection. You
give
higher priority to your local addresses.
I'm not sure how you envision this. My understanding was that the address
with the longest matching prefix would be used. So when I connect to my
server which has both a 2001:: and a 3ffe:: address (sequoia.muada.com for
those of you who want to try) my system at home with a 2001:: address would
use the 2001:: address. However, that's not what happens.
MacOS 10.4:
% telnet sequoia
Trying 3ffe:2500:310:2::1...
FreeBSD 4.9:
# telnet sequoia
Trying 3ffe:2500:310:2::1...
Red Hat 9 Linux:
# telnet sequoia
Trying 3ffe:2500:310:2::1...
(Well, acutally they pick an address non-deterministically.)
Windows XP was the only one that used the 2001:: address each time. (But this
could be because of DNS caching, no way to tell except for rebooting more
times than I care to do right now.)
But that's not the real problem. The real problem is that always choosing the
same address is a bad thing: that way, applications that don't cycle the
address list themselves can easily get stuck retrying a non-working address
and ignoring a working alternative.
(And this would also require two-faced DNS all over the place as you'd try to
connect to other people's unique site locals otherwise.)
The bottom line is that there is no way to do the right thing with only a
priori information. You need at least _some_ measurement info to make
reasonable decisions.
You are mixing things. The DNS is remaining in place. If a host has
more then one DNS entry the DNS query will return all of them. RFC 3484
just do some kind of sorting on the entries. You can select locally your
preferences.
Here is sample transcript what you can do with RFC3484:
1. Setting up IPv6 preference:
[EMAIL PROTECTED]> sudo ./prefer6
Prefix Prec Label Use
::1/128 50 0 0
::/0 40 1 0
2002::/16 30 2 0
::/96 20 3 0
::ffff:0.0.0.0/96 10 4 0
[EMAIL PROTECTED]> telnet sequoia.muada.com
Trying 2001:1af8:2:5::2...
^C
2. Setting up IPv4 preference:
[EMAIL PROTECTED]> sudo ./prefer4
Prefix Prec Label Use
::ffff:0.0.0.0/96 50 0 0
::1/128 40 1 0
::/0 30 2 0
2002::/16 20 3 0
::/96 10 4 0
[EMAIL PROTECTED]>telnet sequoia.muada.com
Trying 83.149.65.1...
telnet: connect to address 83.149.65.1: Connection refused
Trying 2001:1af8:2:5::2...
^C
IPv4 address tried first (probably refused by firewall, switching right to
IPv6....
3. Prefer 3ffe:: addresses
[EMAIL PROTECTED]> sudo ./prefer63
Prefix Prec Label Use
::1/128 50 0 0
3ffe::/16 45 5 0
::/0 40 1 0
2002::/16 30 2 0
::/96 20 3 0
::ffff:0.0.0.0/96 10 4 0
[EMAIL PROTECTED]> telnet sequoia.muada.com
Trying 3ffe:2500:310:2::1...
^C
3ffe:2500:310:2::1 tried first
4. Prefer 2001:: style addresses
[EMAIL PROTECTED]> sudo ./prefer62
Prefix Prec Label Use
::1/128 50 0 0
2001::/16 45 5 0
::/0 40 1 0
2002::/16 30 2 0
::/96 20 3 0
::ffff:0.0.0.0/96 10 4 0
[EMAIL PROTECTED]> telnet sequoia.muada.com
Trying 2001:1af8:2:5::2...
^C
[EMAIL PROTECTED]>
So you RFC3484 is very powerful You can prefer IPv4 address or prefer
2001:: address if you want. You can prefer ULA address if you want. But to
be consistent in a site, you should implement a site wide policy some
other methods e.g. DHCPv6.
I think pretty large number of hosts potentially can support RFC3484.
Windows XP/2003 fully supports it. All *BSD systems also fully supports it.
So how do I install a policy?
Sample scripts I used on FreeBSD attached (You need FreeBSD 5.2 or
later )
For Windows XP/2003 the syntax are very similar to ip6addrctl.
Adding policy rule:
FreeBSD:
ip6addrctl add <prefix> <precedence> <label>
Windows XP
netsh interface ipv6 set prefixpolicy <prefix> <precedence> <label>
Showing policy rules:
FreeBSD:
ip6addrctl show
Windows XP
netsh interface ipv6 show prefixpolicy
Clearing the policy table
FreeBSD:
ip6addrctl flush
Windows XP:
netsh interface ipv6 delete prefixpolicy
Regards,
Janos Mohacsi
#!/bin/sh
#prefer 3ffe::
ip6addrctl flush >/dev/null 2>&1
ip6addrctl add ::1/128 50 0
ip6addrctl add 3ffe::/16 45 5
ip6addrctl add ::/0 40 1
ip6addrctl add 2002::/16 30 2
ip6addrctl add ::/96 20 3
ip6addrctl add ::ffff:0:0/96 10 4
ip6addrctl show
#!/bin/sh
#prefer 2001::
ip6addrctl flush >/dev/null 2>&1
ip6addrctl add ::1/128 50 0
ip6addrctl add 2001::/16 45 5
ip6addrctl add ::/0 40 1
ip6addrctl add 2002::/16 30 2
ip6addrctl add ::/96 20 3
ip6addrctl add ::ffff:0:0/96 10 4
ip6addrctl show
#!/bin/sh
#prefer ipv6
ip6addrctl flush >/dev/null 2>&1
ip6addrctl add ::1/128 50 0
ip6addrctl add ::/0 40 1
ip6addrctl add 2002::/16 30 2
ip6addrctl add ::/96 20 3
ip6addrctl add ::ffff:0:0/96 10 4
ip6addrctl show
#!/bin/sh
#prefer ipv4
ip6addrctl flush
ip6addrctl add ::ffff:0:0/96 50 0
ip6addrctl add ::1/128 40 1
ip6addrctl add ::/0 30 2
ip6addrctl add 2002::/16 20 3
ip6addrctl add ::/96 10 4
ip6addrctl show
_______________________________________________
6bone mailing list
[email protected]
http://mailman.isi.edu/mailman/listinfo/6bone