[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>