I have several development servers (various web servers, SVN server, ect) all on our network. One developer will work remotely. I don't really want to make everything public accessible. If I set up a VPN server and let make that publicly accessible, once connected, is everything available that would be available on our network? I thought that was the point of a VPN, but some things I read said there were problems because the IP is only masked at being from 192.168.X.X and not really being that address. If someone was connected to the VPN and a server was at 192.168.123.321, can someone get to it with that IP address?
A VPN would work just fine for your requirements. One thing to watch for is IP address collision. If the remote user has the same subnet as your network, then when they try to connect to 192.168.123.321, they might be getting a local computer instead of the remote server. I would suggest using the class B (172.16.0.0 – 172.31.255.255) or class A (10.x.x.x) network instead since they won't be as likely for a collision.
OpenVPN should suffice (Linux endpoint) - all connections routed from client will "appear" as initiated from the LAN-located VPN endpoint. Make sure that you use strong keys, the VPN port is available from outside (PAT/Firewall(s)). Suggestion - you can use an appliance as the VPN server (like, Linksys WRT routers powered by OpenWRT or DD-WTR - packages available OSS).
Kaplah!
A VPN will basically allow remote network requests to be treated as if that person is on the local network. You can get as simple or complicated with it as you want, so for example you could set up rules that VPN users are only allowed to make connections to IPs. So if they are connecting to 192.168.123.321 and that does not exist on their remote network, but it does on your network the VPN will let them connect to it.