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

Re: The argument for writing a general purpose NAT for IPv6



On 19-apr-2007, at 19:44, james woodyatt wrote:

However, let me propose a different direction for solving this: rather than waiting until a port number is selected, put into a control stream, then intercept that control stream, recover the port number and open up the firewall, why not simply set aside a range of port numbers for these types of purposes and let those through the firewall?

With IPv4 this wouldn't work because there has to be a mapping between an private and a public address, but with IPv6 that's not necessary.

An RTSP server may put any IPv6 address in the source attribute of a Transport header, so these ports would have to be open at all times to the whole Internet.

Right. So the question is, what are we trying to accomplish? If the host and the firewall device are working together, it doesn't much matter which of the two rejects unwanted packets. Since the host _does_ know what the RTSP server is up to, it can easily reject unwanted packets.

In my opinion, what you need the firewall device for is to make sure that you can run services on the internal network without exposing those services to the rest of the world. So as long as the firewall device rejects all packets that are addressed to ports where services may run, that's accomplished.

An RTSP server may *also* put any pair of UDP port numbers (starting on an even number) in the client_port attribute of a Transport header, so the ports that would have to be opened to the whole Internet include a very wide range, potentially *all* of them.

That seems strange. Wouldn't the client want to have some say in the port number it needs to open up? But if we can define a range of port numbers that will pass through firewalls, then obviously we can tell RTSP servers to use just these ports.

You're telling me that the way to solve the problem is allow all UDP packets through the filter. And that's just to make RealPlayer and Quicktime work properly.

That's one option. But if the RTSP protocol is so unusual in this respect that it can't live in an uPnP/NAT-PMP world, another option would be to change the protocol. Some mechanism to allow for the proxying that you need but without the address fakery makes sense, but that may be hard to accomplish.

What about IPsec (without the ESP encapsulated in UDP) using ISAKMP?

What do you mean by that? Packets with ip6->nextheader == ESP? These are extremely simple firewall-wise: it's yes or it's no to all of them. Obviously a firewall device can't be an ISAKMP proxy, unknown entities in the middle messing with your packets is exactly what IPsec is supposed to protect you against.

Should I just pass all ESP packets through too?

This is once again a question of whether the firewall and the host are working together, or working against each other. As a home user I would expect my firewall device to let everything that I initiate from the inside through by default, but in a corporate environment it may make sense to distrust hosts and be more restrictive.

ESP packets that don't match any state at the host will be rejected promptly without any adverse effects, so I don't see any reason to invest a lot of effort to make sure only ESP packets that match known state through the firewall device.

I'd like to direct members of the group interested in continuing this discussion about IPv6 filtering behaviors to the ongoing discussion in the BEHAVE working group.

In my experience, mailing list hopping halfway through a discussion doesn't work too well. It would be good if the v6ops people could reach some conclusion (and hopefully, consensus) on these issues.