Asterisk + SIP phones behind NAT broadband - does this work?

Most of my customers use ADSL broadband where the router performs address translation. If I deploy an Asterisk server internally, voip will work internally anywhere the internal network allows SIP packets to be routed.

What (infrastructure) is required to allow calls to come in off the Internet and be routed to a users desktop phone? and vice versa: be initiated at the desktop and be allowed/sent out.

There seem to be address/port translation issues that I dont know how to solve, and this must be a very common setup for others who have implemented Asterisk.

Some reading for you