Estas duas redes estão "separadas" pela Internet, pelo que normalmente os computadores atrás de uma não conseguem aceder a serviços dos computadores na outra.
Depois desta configuração, o cliente na rede B conseguirá aceder a todos os serviços na rede A, agindo como se estivesse dentro da própria rede A. Com configurações adicionais, os restantes computadores na rede B podem conseguir aceder à rede A através do cliente configurado.
Exemplo de topologia:
Rede A --INTERNET-- Rede B
| |
servidor cliente
Detalhes do ambiente:
- Na rede A é permitida a entrada de tráfego por secure shell (SSH) num host específico dessa rede, aqui chamado gateway. O acesso à rede é feito através de um servidor, que pode ser distinto da gateway, algures dentro da rede A;
- A gateway usa o servidor SSH Dropbear. Tanto a gateway como o servidor são routers que correm OpenWRT Kamikaze. Outros ambientes podem ter detalhes de configuração diferentes.
TODO:
- Descobrir como utilizar resolução de nomes iterativa, tendo em conta respostas NXDOMAIN: a ideia é utilizar a resolução de nomes da rede B mas quando se obtém uma resposta negativa, recorrer à resolução de nomes do servidor na rede A;
- Investigar melhor os parâmetros nos ficheiros de configuração.
No servidor (dentro da rede A):
- Instalar, configurar e activar o servidor OpenVPN:
root@server:~# apt-get install openvpn
root@server:~# egrep -v "\#|;|^$" /etc/openvpn/server.conf
port 1194
proto tcp-server
dev tun
ifconfig 192.168.100.1 192.168.100.20
keepalive 10 120
status openvpn-status.log
verb 3
root@server:~# /etc/init.d/openvpn enable ; /etc/init.d/openvpn start
No cliente (dentro da rede B):
- Automatizar logins na gateway:
user@client:~$ cd .ssh/
user@client:~/.ssh$ ssh-keygen -t dsa
user@client:~/.ssh$ ssh-copy-id -i id_dsa.pub root@gateway.redeA.com
user@client:~/.ssh$ ssh root@gateway.redeA.com "cat .ssh/authorized_keys >> /etc/dropbear/authorized_keys; rm .ssh/authorized_keys" - Automatizar encaminhamento de portos assim que houver ligação
user@client:~$ grep "post-" /etc/network/interfaces
post-up su user -c "ssh -N root@gateway.redeA.com -L 1090:server:1194" &
post-down pkill -u user -f "ssh -N root@gateway.redeA.com -L 1090:server:1194" - Instalar, configurar e activar cliente VPN
root@client:~# apt-get install openvpn
user@client:~$ cat /etc/openvpn/client.conf
dev tun
ifconfig 192.168.100.20 192.168.100.1
up ./defroute.sh
down ./remroute.sh
keepalive 1 120
proto tcp-client
remote localhost 1090
resolv-retry infinite
nobind
persist-key
persist-tun
verb 3
tun-mtu 1500
mssfix 1450
user@client:~$ cat /etc/openvpn/defroute.sh
#!/bin/sh
route add -net 10.0.0.0 netmask 255.0.0.0 gw $5
mv /etc/resolv.conf /etc/resolv.conf.back
echo "nameserver IP_DO_SERVIDOR `cat /etc/resolv.conf.back | awk '{print $2}'`" > /etc/resolv.conf
user@client:~$ cat /etc/openvpn/remroute.sh
#!/bin/sh
route del -net 10.0.0.0 netmask 255.0.0.0 gw $5
mv /etc/resolv.conf.back /etc/resolv.conf
user@client:~$ grep OPTARGS /etc/default/openvpn
OPTARGS="--script-security 2"
root@client:~# invoke-rc.d openvpn restart
Referências:
OpenWRT Wiki: Why Public Key Authentication - Disable password login
comp.security.ssh newsgroup: "Re: Possible to setup a SSH port forwarding only (!) in background without showing a Terminal window?"
Documentação do pacote openvpn (em
/usr/share/doc/openvpn
).
Sem comentários:
Enviar um comentário