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

Re: IPv6-PMP?



On Apr 10, 2007, at 18:43, Fred Baker wrote:

	ip access-list permit ftp any host ftp.example.com
	ip access-list permit ftp-data any host ftp.example.com

Oh, the AirPort Extreme has manually configured IPv4/NAT port forwarding. That's not what I'm talking about.

It's possible for an expert user who 1) knows where to find the AirPort Utility, 2) knows how to invoke its advanced configuration interface, 3) knows how to find the port-mapping pane and can understand how to write a firewall rule, and 4) knows the administrative password for the AirPort base station, to set a forwarding rule that will do this. I'm pretty sure we'll end up doing something like this in the future for IPv6 (when we can agree on a suitable human interface for it in the administrative utility), but that's a completely orthogonal problem.

The problem I'm highlighting here is that manually configuring firewall rules is way, way beyond the skills of the vast majority of our customers. To remedy that with IPv4/NAT, we integrated NAT-PMP into the operating system so that when you start the AFP server (for example; it works just as well for SMTP, HTTP, IMAP, foo, bar and baz) on your computer (in Mac OS X 10.4, you also have to have the Bonjour preference pane installed and configured properly, though this may not be required in future operating systems), you automatically get the IPv4/NAT port-mapping rule installed in your router for you. No complicated configuration necessary. It just works automatically, and there it is: a mostly reasonable facsimile of end-to-end goodness restored to the Internet.

No such facility is available for IPv6, and that strikes me as very weird. For a long time, I had assumed that the reason it wasn't there was that we were all expecting that residential IPv6 gateways wouldn't need to break the end-to-end transparency of the network by blocking flows that didn't match application state, and therefore we wouldn't be seeing stateful packet filters at default gateways. Alas, I now realize that was a mistake. So, why don't we have anything like UPnP IGD and NAT-PMP for IPv6? They're necessary for IPv4/NAT and we need them in IPv6 for the same reasons. It seems like we ought to standardize them.

I'm struggling with what's hard about that if you keep network layer devices looking at the network layer and maybe the port numbers from the transport header. Why do you want your firewall mucking around inside your data?

Consider ISAKMP and IPsec for a moment. An outbound ISAKMP initiation will create appropriate UDP state for port 500, but it won't do anything to permit inbound IPsec ESP packets for the corresponding SA to be delivered unless something in the stateful packet filter is reading the ISAKMP traffic and knows what inbound flows are expected to pass the filter. (Truthfully, I don't think IPv6-PMP can solve this problem. I'm going to have to write an ISAKMP proxy for that.)

The larger problem is that future application protocols may have similar issues with stateful packet filters. Do we really want to limit the ability of application protocol designers to deploy new systems this way? It seems to me that ICMP is the place where a solution to this problem should be applied. I'm envisioning something very much like the way MLD messages are sent when a socket joins a multicast group. Something like that could be done for unicast when a UDP socket is bound or a TCP socket is placed into the LISTEN state. Default gateways would respond by opening the pinhole appropriately, and perhaps sending a similar ICMP message upstream to the next default gateway if necessary.


--
j h woodyatt <jhw@apple.com>