I'm sure the answer to this would be available on Google but I don't really know what I'm Google-ing for.
We have two networks; our own internal network (192.168.0.[0-255]) and our 'server' network (Internal addresses are 192.168.1.[0-255]). Our server network is located in a remote datacenter, and our servers are hired dedis (I.E. we have full control over the server software, a mix of RedHat 5/6 and FreeBSD, but no control over the network hardware or server hardware). Our server network sits behind a firewall limiting certain external ports which we also have full software control over, but it's features are limited to just that, a firewall/NAT (no fancy VPN stuff etc). Our internal network is reasonably basic, we have a 20Mb/s line from our ISP connected to a fairly typical Netgear home router. We also have a Mac OS/X server which runs our network services (DNS, DHCP etc.)
What we want;
What we'd like to be able to do is, from these completely separate networks, be able to access servers on the other network just using the IP address or internal hostname (same difference).
So I'm sitting at my workstation, 192.168.0.10, on our internal network. If I open up my terminal and
ssh 192.168.1.20 it would connect to the server at 192.168.1.20 in our server network, as though it was sat in the room*. Similarly if I was SSH'd into a server and wanted to pull something down from our Mac server on our internal network, I should be able to just
scp 192.168.0.100:file ./.
This extends to other things, like mounting an NFS drive on a server to our desktops*, connecting to our databases without having to open ports on the firewall (We lock them down to our static external IP address, but it's still annoying).
I kind of know what I want, but I'm not really sure where to start. I guess the easiest way would be some sort of VPN connection between the two sites, then we would route certain IPs through the VPN tunnel, I have no idea if that's even possible.
Is there something software only (We can get new hardware on our internal network, but like I say we have no physical access to our server infrastructure) that would achieve this?
This is probably a silly question with an obvious answer, but I'm still stumped.
*Performance might be terrible, but it would be no worse than connecting remotely.