Hello folks!
Since Solaris 10 we've supported IPsec NAT-Traversal (RFC's 3947 and 3948) by
using "nattymod" -> a STREAMS module that gets pushed in between a UDP
application (like the IKE daemon) and UDP.
Solaris 10 FCS did not have the Yosemite (PSARC 2005/082) project integrated,
so we could not de-STREAMS NAT-Traversal. OpenSolaris has Yosemite, so we
can finally revisit the problem.
By eliminating nattymod we can:
* Reduce the amount of lines of code in the system (~700 lines).
* Eliminate race-condition bugs like 6481450 (nattymod calls
putnext() on a freed queue.)
* Open up the API for other Key Management implementations to use
NAT-Traversal IPsec SAs with local-port == 4500.
The new API for an AF_INET UDP endpoint to enable NAT-Traversal is the
UDP_NAT_T_ENDPOINT socket option. It's boolean (off or on), is only allowed
on AF_INET socket (AF_INET6 will return EAFNOSUPPORT, even for IPv4-mapped
sockets, because they can become IPv6 again), and requires the sys_ip_config
privilege to set. I'll have to run this through PSARC via a fast-track, but
I can do that next week.
I have a webrev of code changes available at the new OpenSolaris code-review
site:
http://cr.opensolaris.org/~danmcd/detangle/
and I encourage discussion and criticism. These set of changes fall squarely
in the "networking" half of IPsec, vs. the "security" half, so discussions
should be held on [EMAIL PROTECTED]
One open question is whether or not we should allow NAT-Traversal SAs with a
local port that is NOT UDP 4500. The changes required from the kernel side
are pretty small, and marked with TODO in the appropriate IPsec kernel source
files. The user-land side for our IKE daemon, besides being in
closed-source, are non-trivial, and would require substantive changes. I'm
willing to entertain making the kernel changes, however, given sufficient
community motiviation. :)
I won't be able to THINK about putting these changes back until mid-June at
the earliest, but I think I'm pretty close to finished. I've run our own IKE
and IPsec tests, plus I plan on having additional punchin-client and
punchin-server testing ("punchin" is a Sun-internal IPsec remote access
solution that is a testbed for our IPsec and other TCP/IP and crypto
components).
Please share your comments, criticism, and questions!
Thanks,
--
Daniel L. McDonald - Solaris Security & Networking Engineering
Mail: [EMAIL PROTECTED] | * MY OPINIONS ARE NOT NECESSARILY SUN'S!
*
1 Network Drive Burlington, MA |"rising falling at force ten
http://blogs.sun.com/danmcd/ | we twist the world and ride the wind" - Rush
_______________________________________________
networking-discuss mailing list
[email protected]