The problem comes up from the fact that openvpn doesn't appear to reply to
the other end of the tunnel with udp packets having the same source address
as the destination of the original packets. Its sent replies have a source
ip address of the interface the reply packets were sent via.
Normally that would be ok, because you can use the --float option and when
the replies from the server come back with a different ip, the peer (the
notebook) will see it and change the tunnel destination address to the
source of the packets, in this case the private ip of the server.
One last note I forgot to include:
The reason we can't use --float is because the wireless routers are doing
NAT. When the reply comes back with a different source address, the router
doesn't know it's really a reply to an existing udp connection, and it gets
dropped. And that keeps the tunnel from working.