Thanks for a great explanation.
As far as I can see, there is one problem with this approach. It doesn’t work well for incoming calls.
If the NAT server doesn’t know that an H.323 client exists (ie. if there has not yet been an outbound call), then it doesn’t know where to forward the incoming Q931 SETUP message.
Some NAT systems support H.323 in this way. Generally, _if_ they can support incoming calls, then it is only to one client.
In my opinion, a gatekeeper is a better solution. It handles incoming calls much more elegantly by ringing all phones or one particular phone if it’s registered.