To answer one part, all the machines on all networks (connected together with GIT) must have the same subnet mask and must have unique addresses. "All the machines" includes PCs, routers, printers, etc, anything at all on the networks that has an IP address.
For example, three Lans...
Lan 1:
Router - 192.168.0.10
Machine - 192.168.0.11
Machine - 192.168.0.12
Machine - 192.168.0.13
Lan 2:
Router - 192.168.0.20
Machine - 192.168.0.21
Machine - 192.168.0.22
Machine - 192.168.0.23
Lan 3:
Router - 192.168.0.30
Machine - 192.168.0.31
Machine - 192.168.0.32
Machine - 192.168.0.33
As you see, all addresses are different. Lans such as these can be connected together using GIT.
I personally am not sure how to set up Git to include a non-NATed client, as I have no experience with that. I'm sure it's already discussed in these forums though.
After the virtual LAN is created with Git, you should be able (when using TCP, ARP and ICMP) to ping the remote machines using their local address...such as 192.168.0.11 being able to send a ping to 192.168.0.33.
Then select the appropriate protocols and forward the ports in Git, and all is well. Most games/apps come with documentation stating the port requirements for networking--but others may require a little research. Like Empire Earth...the docs say port 33334-33335 for network play, but in multiplayer over LAN mode, using a sniffer (I use network spy or ethereal), I found that EE used port 33336.
Also, for a list of ports used by applications, look here at
http://www.portforward.com/cports.htm. There's more at that site about port forwarding instructions for various routers, and instructions for hardware and software firewalls. The C&C:Generals ports are listed there. The site is updated constantly, so they say.