[e2e] 100% NAT - a DoS proof internet
Dan Wing
dwing at cisco.com
Mon Feb 20 14:24:09 PST 2006
> Dan Wing wrote:
> > (behind on my email - sorry for the delay.)
> >
> >> -----Original Message-----
> >> From: end2end-interest-bounces at postel.org
> >> [mailto:end2end-interest-bounces at postel.org] On Behalf Of Joe Touch
> >> Sent: Monday, February 13, 2006 8:18 AM
> >> To: Jon Crowcroft
> >> Cc: end2end-interest at postel.org
> >> Subject: Re: [e2e] 100% NAT - a DoS proof internet
> >>> So if we want to talk to a set of known people, we hash their
> >>> identifier (name) to TIME. We then send to each other at
> that agreed
> >>> time - no-one else can send to us or from us to them, and
> >>> the hash key can be a shared secret....
> >> How do you "send to each other"?
> >>
> >> You need to talk to a host behind a NAT. You need to reach
> >> the service
> >> on that host that runs this DHTime protocol. You can have
> >> more than one host behind the NAT. A NAT basically makes
> >> everything
> >> behind it look like one host.
> >>
> >> There are two options:
> >>
> >> a. the host behind the NAT tries to reach the other host first
> >> this works only if the 'other host' is NOT behind
> >> a NAT, so we're out of luck
> >>
> >> b. you 'register' your host somewhere as owning a unique
> >> way to demultiplex packets to it
> >
> > You can communicate with a host behind a NAT if that host tries to
> > communicate with you first. This is how ICE (draft-ietf-mmusic-ice)
> > functions. ICE's basic operation in this regard is this:
> >
> > 1. Each host learns its public IP address (ICE describes
> > using STUN,
> > RFC3489, for this; however you could use any other
> > technique you
> > might prefer such as Bonjour, UPnP, or whatever),
>
> You can't learn your public IP address without (a) or (b) above.
>
> > 2. They exchange their public IP addresses with each other using a
> > rendezvous protocol (ICE expects "SDP" is the rendezvous
> > protocol; SDP is used by SIP which solves your (b)), and then
>
> I don't need to 'solve' (b); it's trivial to design a protocol to do
> this. The point I'm making is that (a) or (b) is required.
> This repeats that point.
>
> In the absence of both (a) and (b), how is it solvable? (_that_ is the
> real question).
I must be misunderstanding. ICE (draft-ietf-mmusic-ice) describes
how a bi-directional UDP stream can be established between two
hosts behind their own NATs, like this:
[host]--[NAT]-----[Internet]-----[NAT]--[host]
-d
> Joe
>
> > 3. The hosts begin sending UDP packets to each other's public
> > IP address. The NAT binding is opened when the first
> > inside->outside packet is seen by the NAT, which causes a
> > subsequent outside->inside packet to be NATted to the
> > proper host.
> >
> >
> > There is a similar technique that works with TCP when both hosts are
> > behind unmodified, unconfigured NATs. If I recall correctly the NAT
> > technique does rely on the nearly ubiquitious (but TCP violating)
> > "stealth" NAT behavior (that is, the NAT has to simply drop
> unexpected
> > TCP SYNs rather than respond with an ICMP error or a TCP
> RST). For an
> > example of specifics please see draft-hoffman-behave-tcp-03.txt.
> >
> > -d
> >
> >> A DHT does both of these - (a) to reach a node somewhere
> else that is
> >> NOT NAT'd first, then (b) to register in that
> infrastructure so other
> >> nodes can find it using its node ID.
> >>
> >> Two killer questions:
> >>
> >> 1. if everything is NAT'd, how do you perform step (a)?
> >> i.e., where is the first place you register?
> >>
> >> 2. (b) assumes hosts have unique node-IDs, but you
> >> went through a lot of trouble to remove that property (NATs)
> >>
> >> for every reason you had a NAT in the base net,
> >> why is it now acceptable to not NAT the node-IDs?
> >>
> >> - if you NAT node IDs, you're back where you started
> >>
> >> - if you're OK with not NAT'ing node IDs, why did you
> >> NAT the base net?
> >> i.e., non-NAT'd node IDs now become susceptible
> >> to every message on the DHT
> >>
> >>> there you go...the details should be simple (apart from how you
> >>> provide sufficiently accurate synchronized time without a globally
> >>> reachable adddress betweewn the NTP servers, which, I admit, is
> >>> probably a mite tricky - i guess you need to have them
> >> agree a set of
> >>> rough times or something:)
> >> Time, IMO, is the least of your concerns...
> >>
> >> Joe
> >>
> >>
More information about the end2end-interest
mailing list