Archive

Archive for August, 2009

Handy References

August 17th, 2009 admin No comments

Here are some immediate references that you might find useful if you’re trying to solve a general IPv6 connectivity problem, or trying to get up to speed on IPv6 in the round:

IPv6 Intelligence

http://ipv6int.net/systems/mac_os_x-ipv6.html

Derek Morr’s Living with IPv6 blog

http://www.personal.psu.edu/dvm105/blogs/ipv6/

SIXXS

http://www.sixxs.net/wiki/SixXS_Wiki

ARIN IPv6 Wiki

http://whois.arin.net/index.php/Main_Page


Categories: Tips Tags:

IPv6 Firewalling

August 17th, 2009 admin 1 comment

First, the bad news. There is no clean, elegant way to firewall IPv6 traffic in MacOSX. The Firewall GUI control panel won’t do it. But the internal firewall that runs behind the GUI is FreeBSD’s ipfw packet filter, which does support stateful filtering. I’ll try it soon on a Mac, but I’ve used this on FreeBSD and it’s not too awful.

Categories: Tips Tags:

Enabling IPv6 privacy addresses

August 17th, 2009 admin No comments

One security annoyance with IPv6, especially its stateless autoconfig feature, is that the default IPv6 address contains your compter’s MAC (physical Ethernet) address. This makes it far too easy to track you on the Internet. IPv4 NAT, for all its evils, at least protected your unique identity behind your firewall.

Fortunately IPv6 has a slick feature, called Privacy Addressing, that fixes this. Your computer generates random host address parts, changing them periodically. Old random addresses hand around as long as you have a session open using them, but new sessions use the latest randomly-generated IPv6 address. The feature takes care to check for collisions, automatically forcing a retry should one occur (two in a row is statistically very unlikely).

You turn the feature on using the sysctl command:

$ sudo sysctl -w net.inet6.ip6.use_tempaddr=1

I haven’t quite figured out what the timer is on this. It seems to be an hour or so between IP address changes. I’ll play around with it, or go read the Darwin code to see what’s going on under the covers. For machines that don’t have to be servers, however, this looks like a very handy feature!

Categories: Tips Tags:

Manually adding a temporary static IPv6 alias to an Ethernet interface

August 17th, 2009 admin No comments
Assume you want to assign a static IPv6 address 2100:xxxx:xxxx::2/48 to make your Mac an easily-reached server via IPv6. First, create the static IPv6 alias (substitute your own IPv6 prefix for xxxx:xxxx):
sudo ifconfig en0 inet6 2100:xxxx:xxxx::2/48
Then verify this worked:
ifconfig en0 | grep inet6
inet6 fe80::217:f2ff:fec6:62ec%en0 prefixlen 64 scopeid 0×4
inet6 2001:xxxx:xxxx::2 prefixlen 64 autoconf
Second, set the default gateway:
sudo route add -inet6 -prefixlen 0 default 2100:xxxx:xxxx::1
Note that if you have a link-local gateway to the IPv6 router to the global Internet, you don’t have to do this second step. To see if you do, type:
netstat -rn | grep default
default       10.10.10.1        UGSc       16       17    en1
default       fe80::200:ff:fe01:0%en1         UGSc        en1
If you’re dual-stacked, you’ll also see an IPv4 gateway.
Should you want to remove the IPv6 alias without rebooting, just type:
sudo ifconfig en1 inet6 -alias 2100:xxxx:xxxx::2
NOTE: As implied in the tip’s title, this method of IPv6 static assignment is temporary, only lasting until you reboot!
To make a permanent assignment, use the GUI interface Network panel in System Preferences. Alternatively, you can use the networksetup utility to create the alias and the gateway all at once, which will persist across boots:
sudo networksetup -setv6manual Ethernet 2001:xxxx:xxxx::2 48 2001:xxxx:xxxx::1
As far as I can tell, the only way to remove an alias created via networksetup is through the GUI.

Assume you want to assign a static IPv6 address 2100:xxxx:xxxx::2/48 to make your Mac an easily-reached server via IPv6. First, create the static IPv6 alias (substitute your own IPv6 prefix for xxxx:xxxx):

$ sudo ifconfig en0 inet6 2100:xxxx:xxxx::2/48

Then verify this worked:

$ ifconfig en0 | grep inet6
	inet6 fe80::217:f2ff:fec6:62ec%en0 prefixlen 64 scopeid 0x4
	inet6 2001:xxxx:xxxx::2 prefixlen 64 autoconf

Second, set the default gateway:

$ sudo route add -inet6 -prefixlen 0 default 2100:xxxx:xxxx::1

Note that if you have a link-local gateway to the IPv6 router to the global Internet, you don’t have to do this second step. To see if you do, type:

$ netstat -rn | grep default
default       10.10.10.1        UGSc       16       17    en1
default       fe80::200:ff:fe01:0%en1         UGSc        en1

If you’re dual-stacked, you’ll also see an IPv4 gateway.

Should you want to remove the IPv6 alias without rebooting, just type:

$ sudo ifconfig en1 inet6 -alias 2100:xxxx:xxxx::2

NOTE: As implied in the tip’s title, this method of IPv6 static assignment is temporary, only lasting until you reboot!

To make a permanent assignment, use the GUI interface Network panel in System Preferences. Alternatively, you can use the networksetup utility to create the alias and the gateway all at once, which will persist across boots:

$ sudo networksetup -setv6manual Ethernet 2001:xxxx:xxxx::2 48 2001:xxxx:xxxx::1

As far as I can tell, the only way to remove an alias created via networksetup is through the GUI.

Categories: How-To Tags:

BitCricket’s IPv6 subnet calculator

August 17th, 2009 admin No comments
http://www.bitcricket.com/ip-subnet-calculator.html:
There really isn’t anything special about IPv6 subnet calculations. But they can be hard to visualize with all those extra bits. This tool is a help.

http://www.bitcricket.com/ip-subnet-calculator.html

There really isn’t anything special about IPv6 subnet calculations. But they can be hard to visualize with all those extra bits. This tool is a help; it’s free, with both Mac and Windows versions.

Categories: Tools Tags:

MacOSX ain’t got no DHCPv6

August 17th, 2009 admin No comments
Mac OS X doesn’t support DHCPv6; it’s just plain missing from the base operating system. DHCPv6 would be useful for setting the IPv6 nameserver address, which incidentally is stored in /etc/named.conf. As things stand, DNS lookups will always go out via IPv4. Most IPv4 name servers happily respond to queries for IPv6 AAAA records, so this isn’t a disaster. It’s just annoying.
A port of the WIDE/KAME DHCPv6 probably will work, as Leopard’s (and Panther’s AFAIK) IPv6  stack is based on FreeBSD’s KAME project. The WIDE/KAME source builds fine on MacOSX 10.5 (Leopard) — just download it, type ./configure, and make, and stand back. But I haven’t tried installing it (via sudo make install) yet, as I want to see where it inserts itself in the base OS. I’ll let you know if I succeed.
Windows does support IPv6, although it’s buggy up until Vista/W2008 SP2. Still, it would be great for Macs to have this, as it’s a key component of being an enterprise player.

Mac OS X doesn’t support DHCPv6; it’s just plain missing from the base operating system. DHCPv6 would be useful for setting the IPv6 nameserver address, which incidentally is stored in /etc/named.conf. As things stand, DNS lookups will always go out via IPv4. Most IPv4 name servers happily respond to queries for IPv6 AAAA records, so this isn’t a disaster. It’s just annoying.

A port of the WIDE/KAME DHCPv6 probably will work, as Leopard’s (and Panther’s AFAIK) IPv6  stack is based on FreeBSD’s KAME project. The WIDE/KAME source builds fine on MacOSX 10.5 (Leopard) — just download it, type ./configure, and make, and stand back. But I haven’t tried installing it (via sudo make install) yet, as I want to see where it inserts itself in the base OS. I’ll let you know if I succeed.

Windows does support IPv6, although it’s buggy up until Vista/W2008 SP2. Still, it would be great for Macs to have this, as it’s a key feature for being an enterprise player.

Categories: Tips Tags:

Displaying IPv6 protocol stack version info

August 17th, 2009 admin No comments

The sysctl command does this:

$ sysctl net.inet6.ip6.kame_version
net.inet6.ip6.kame_version: 20010528/apple-darwin

This means we’re running the 2001 version of the KAME BSD IPv6 stack. Man, that’s old, but it shows how stable IPv6 is!

Categories: Tips Tags:

IPv6 Applications for MacOSX

August 17th, 2009 admin No comments

MacOSX Leopard (10.5) has the largest set of IPv6-enabled apps. Besides Safari, the following all work with IPv6 servers:

  • Mail (Mail.app) supports SMTP over IPv6. I’m not sure about POP3/IMAP4.
  • The built-in Apache HTTP server can listen on IPv6 interfaces
  • The BIND9 DNS server supports queries via IPv6 interfaces, but you must add a listen-on-v6 {any;}; line to your named.conf file.
  • PHP and Perl both have IPv6 modules and libraries

If anyone can verify a third-party app that supports IPv6, let me know and I’ll update the list. So far the only one I’m aware of is Intermapper (http://www.intermapper.com).

Categories: Tips Tags:

Surfing the IPv6 Internet

August 17th, 2009 admin No comments

Web surfing using the popular browsers — Safari, Firefox. Camino, Opera — is pretty automatic. It starts with DNS. MacOSX perfers IPv6 addresses when it looks up a domain, so if a URL has both an IPv4 and IPv6 address (i.e., both A and AAAA zone records), then it will return the IPv6 address to the browser.

For example, my site WhatIsMyIPv6.com has both records:

$ nslookup
> whatismyipv6.com.
Address: 216.64.158.90
> set type=AAAA
> whatismyipv6.com.
whatismyipv6.com has AAAA address 2001:470:a02c::90

The above is a useful example of debugging IPv6 DNS, but some people prefer dig, which works similarly:

$ dig whatismyipv6.com A +short
216.64.158.90
$ dig whatismyipv6.com AAAA +short
2001:470:a02c::90
The +short tag on the end causes dig to abbreviate its output to a minimalist answer. Leave it off to get more detailed debugging info.
If DNS is working, then Safari, Firefox, and Opera will surf to IPv6 sites when available. Camino requires a tweak. Type about:config in the URL bar and press enter. Then type “ipv6″ in the Filter search bar and press enter. You’ll see a line that says network.dns.disableIPv6. Its default value is “true”. Double-click on this entry to toggle it to “false”. Then quit and restart Camino. Now it’s IPv6 enabled too.
Categories: Tips Tags:

Turning IPv6 on and off in MacOSX

August 17th, 2009 admin No comments

IPv6 is active by default when MacOSX is first installed, at least for Panther and Leopard, and I’m sure Snow Leopard. But you can be manually turn it on and off, either via the GUI Network control panel or via the command line utility  /usr/sbin/ip6.

To start IPv6 on all interfaces:

ip6 -a

To stop it:

ip6 -x
Categories: Tips Tags: