On Wed, 20 Jun 2007 16:11:01 -0700
james woodyatt <[EMAIL PROTECTED]> wrote:

> On 20 Jun 2007, at 15:10, Mark Smith wrote:
> > On Wed, 20 Jun 2007 11:16:15 -0700 james woodyatt <[EMAIL PROTECTED]>  
> > wrote:
> >>
> >> I'd be more sympathetic to arguments like this if we RFC 4864 didn't
> >> insist on recommending  the deployment of stateful packet filters in
> >> IPv6 that break most of the things NAT breaks in IPv4.
> >
> > How does a stateful firewall, present on the end-node itself, cause  
> > these problems?
> 
> We see this all the time today with stateful packet filters in IPv4  
> nodes at global unicast addresses.  Application binds to a socket for  
> accepting connections, but that isn't enough for accepting incoming  
> connections.  Application need to obtain authorization to request the  
> firewall to allow incoming connections.  That involves asking a user  
> for a password.  Bletch.
> 

While I agree that isn't the ideal interface, I really think that
mostly is a user interface/OS implementation problem, not a network
architecture or protocol problem. Why should we "fix" the problem
within the network when the problem is fundamentally occuring at the
boundary between the application and the OS i.e. the networking API.

I'm sure you know this, security comes at the cost of
convenience. If somebody doesn't want to have to "put up" with these
sorts of prompts, then I think that means that they've got their
security settings too high or too sensitive. 

Effort certainly needs to be put into trying to make Internet security
as convenient as it can be. However, a line has to be drawn to identify
the point where if security is made any more convenient than "this",
security is being compromised, and people will be forced to make a
choice between convenience and security.

> Moreover, firewall knows how to track state for TCP and UDP, because  
> that's all the transports the IP stack knows about.  It would be  
> reasonable to port implementations of SCTP and DCCP to live there as  
> well, but nobody bothers because the firewall doesn't know about  
> those transports and needs to be taught about them from scratch.   
> Consequently, applications that should use DCCP or SCTP, use TCP or  
> UDP instead, so they can work with the firewall interface they have.
> 
> Firewalls don't get upgraded to support SCTP and DCCP because  
> applications are all limping along with TCP and UDP.  Egg: meet chicken.
> 

Well, most of the ADSL CPE that my company sells to customers runs
Linux internally (and this is 3rd party commodity CPE, not something
we've put together ourselves). And here is what I've found under the
manual page for the current version of the command line firewalling
configuration utility :

 dccp
       --source-port,--sport [!] port[:port]

       --destination-port,--dport [!] port[:port]

...

  sctp
       --source-port,--sport [!] port[:port]

       --destination-port,--dport [!] port[:port]

       --chunk-types [!] all|any|only chunktype[:flags] [...]
              The  flag  letter  in  upper  case indicates that the flag is to
              match if set, in the lower case indicates to match if unset.


So once a web interface is wrapped around that and/or appropriate
defaults are set, I think the chicken has not only hatched but it is
nearly roasted. Of course these devices are also doing NAT commonly, so
at least for IPv4, it'd be somewhat of a wasted effort.


> > It seems to me that you're making the assumption that the only  
> > scenario IPv6 will be deployed in is one where end-nodes always  
> > have an upstream stateful firewalling device.
> 
> This is likely to be *more* common in the future than it already is  
> today.  Residential IPv6 gateway devices are shipping now in consumer- 
> grade Wi-Fi AP/router products, and they include these packet filters  
> turned on by default.  More are forthcoming.  Their owners are rarely  
> even made aware of these packet filters.  Most won't discover them  
> until they try to do something silly and stupid, like receive  
> incoming VoIP calls over IPv6, fail utterly, and then *maybe* track  
> down the source of the ICMP "administratively prohibited" errors to  
> their own router.
> 

Ask yourself what is the most widely used communications device that
people use. If you can't guess that, ask yourself what recently
announced product from your employer has generated worldwide publicity,
popularity and demand months before it is going to be released, even in
places where it is unlikely to be released in any time soon.

Will that have a firewall on it, or will the customers of that also
have to buy an iFirewall to go with it, because the device itself won't
do firewalling, even though I'd be guessing the OS sitting on it is
easily capable of doing so, and would have enough processing power to do it.

If it doesn't have firewall on it, and the customer doesn't have a
bluetooth or wifi iFirewall in their pocket, where is the carrier going
to put the firewall for all of their customers. How is that firewall
going to scale to support 1000s, 10s or 100s of 1000s of updates to
rules. How is that central firewall going to protect the device from
other malicious customers who are also behind it, and therefore who's
malicious traffic doesn't go through the upstream carrier firewall (I'm
guessing that teenagers would get much more fun out of DoSing the old
man down the road's phone rather than one overseas, because they might
be able to physically see the reaction)

What I'm interpreting you to be saying is :

(a) you seem to be making a very broad and general statement that NAT
is necessary for IPv6

(b) yet your only deployment scenario is one where there is an upstream
stateful firewall that is owned and in control of the person who owns
the downstream devices, and is in close proximity to the devices that
it is protecting.

You may not be exactly saying (a), however it seems to me you're going
close to it.

My argument to those points is :

(a) lets not assume NAT is the only way to solve these problems, as we
already know, recognise and suffer from problems that NAT has created
from IPv4. Let's get creative, and try to solve these problems without
incuring the costs of address translation.

(b) don't assume that what is most likely to be the most common IPv4
case is going to be the most common IPv6 case. Even better, think about
how and where IPv6 is different to IPv4, and try to then identify
possible scenarios that were impossible with IPv4, and then ensure that
IPv4 "thinking" applied to IPv6 doesn't inherently preclude options
that are only possible with IPv6.


> Architecture is hard, folks.  Despite our best laid architectural  
> planz, we are certain to be plagued with middleboxes at every level  
> of the Internet.  They're going to interfere with everything.   
> Basically, if it's known to work today over IPv4/NAT, then there's a  
> pretty good chance it will still work tomorrow over IPv6.  That's  
> about the best we can hope for at this point.
> 
> If NAT between PA and ULA-C unicast addresses solves a problem for  
> somebody, without breaking anything important that isn't already  
> broken by something else we've already done, then why shouldn't we be  
> pragmatic and define a mostly sensible way for them to do it?
> 

That's the crux. Why is NAT immediately sensible, just because it was
somewhat effective in IPv4, when we're moving to something new ? It
reminds me a bit of the cliche, "if the only tool you have is a hammer,
every problem looks like a nail."

> p.s. Readers are encouraged to consider whether this message is a  
> devil's advocacy.
> 
>

That's fair enough, but the devil also usually wants you to accept
things you really shouldn't, and you'll end up paying a price far
higher than you ever imagined :-) People, including me, call NAT "evil"
for a reason :-)

Regards,
Mark.

--------------------------------------------------------------------
IETF IPv6 working group mailing list
ipv6@ietf.org
Administrative Requests: https://www1.ietf.org/mailman/listinfo/ipv6
--------------------------------------------------------------------

Reply via email to