Linux – OpenVPN

VPN Site-to-Site
Sistema Operacional – Fedora Core release 5 (Bordeaux) em ambas as máquinas.

Matriz:

* Hostname – FW_Matriz
* Ip Lan ETH0 – 10.2.30.1
* Ip Wan ETH1 -200.200.200.200
* Rede Matriz – 10.2.30.0/24

Filial:

* Hostname – FW_Filial
* Ip Lan ETH0 – 10.2.40.1
* Ip Wan ETH1 – 200.201.202.203
* Rede Filial – 10.2.40.0/24

Configurando nossa VPN na Matriz:

O OpenVPN trabalha em 3 modos: nenhuma criptografia (apenas o túnel), criptografia com chaves estáticas e no modo TLS, em que as chaves são trocadas periodicamente.

Neste caso vou utilizar criptografia com chaves estáticas.

Dependências necessárias:

* openssl
* lzo
* pam
* openssl-devel
* lzo-devel
* pam-devel

Faça download do pacote LZO:

$ wget http://www.oberhumer.com/opensource/lzo/download/lzo-2.02.tar.gz
$ tar -xzvf lzo-2.02.tar.gz
$ cd cd lzo-2.02
$ ./configure –prefix=/usr –enable-shared && make
# make install && install -v -m755 -d /usr/share/doc/lzo-2.02 && install -v -m644 doc/* /usr/share/doc/lzo-2.02

Faça o download da versão mais recente do openVPN: http://openvpn.net/index.php/downloads.html

$ wget http://openvpn.net/release/openvpn-2.0.9.tar.gz
$ tar -xzvf openvpn-2.0.9.tar.gz
$ cd openvpn-2.0.9
$ ./configure
$ make
# make install

Ou instale pelo método mais prático:

# yum install openvpn openssl lzo pam openssl-devel lzo-devel pam-devel

Configurando a matriz
Depois de instalado devemos gerar uma chave criptografada.

# openvpn -genkey -secret /etc/openvpn/static.key

A chave foi gerada no diretório /etc/openvpn.

Dê um cat no arquivo apenas para visualização:

# cat /etc/openvpn/static.key

O resultado será algo assim:

#
# 2048 bit OpenVPN static key
#
– BEGIN OpenVPN Static key V1 –
0cfdaa32103e4c666c45812dabda87a1
4f545e028388469311sssb9d67e16f0
f063f47f21ff6b5f85fbcaaa0a7d3b9c91b
e08f712d8352b6b4db74c58d018d41fe
eb337713ce2a2171cebad4c6ac475016
bb985c23f51e0e737f4caa5850c17f21e5
f4f851074e9f8e4aaea9465d024b7d0fb01d
8fc9a01d47e32892ff71e0ef328986cc4aa4
842c1a4bbb476549493e92ec40364963f
dd6cc0c0cf49b902f46418b813805e0c
f43d7dd183422ec3bb1fc7cc863b3a80
e004b29c0193f799a01ac7c0ee73f52661
ea075a64f26bc046d889978b1e8d9f5e8
9a478c0fe7dfc0a134779b1beee791e90ddc
706c7a01a3d3e30bfc697e4b31a19069
b08d45c8b4b436255c7979af1ba52a0c
– END OpenVPN Static key V1 –

Agora acesse o diretório:

# cd /etc/openvpn

Crie um backup do arquivo original openvpn.conf:

# mv openvpn.conf openvpn.conf.ori

Crie o arquivo novamente:

# touch openvpn.conf

E preencha-o com esse conteúdo:

############### Configuração matriz ################
dev tun
ifconfig 10.2.60.1 10.2.60.2
cd /etc/openvpn
secret static.key
port 5000
comp-lzo
user nobody
group nobody
ping 10
log /var/log/openvpn_matriz.log
log-append /var/log/openvpn_matriz.log
verb 6

Em seguida vamos iniciar a conexão no servidor, faltando apenas configurar a filial.

Execute o seguinte comando no servidor da Matriz:

# openvpn -config /etc/openvpn/openvpn.conf -daemon

Ou digite:

# /etc/init.d/openvpn start

Caso não apresente nenhum erro digite no prompt:

# ifconfig

E verifique se a interface tun0 está up.

tun0 Link encap:Point-to-Point Protocol
inet addr:10.2.60.1 P-t-P:10.2.60.2 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1255 Metric:1
RX packets:1383257 errors:0 dropped:0 overruns:0 frame:0
TX packets:1144968 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:10
RX bytes:82865921 (79.0 Mb) TX bytes:383951667 (366.1 Mb)

Se aparecer algo assim, a configuração da matriz já está ok, faltando apenas liberar a porta 5000.

Agora para se certificar que o serviço está rodando na porta correta, digite no prompt:

# netstat -putan

O resultado será algo parecido com isso, note que o OPENVPN está rodando na porta 5000 em cima de UDP:

Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:199 0.0.0.0:* LISTEN 2692/snmpd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1780/sshd
tcp 0 20 10.2.30.1:22 10.2.30.3:4347 ESTABLISHED 21703/1
udp 0 0 0.0.0.0:5000 0.0.0.0:* 30704/openvpn
udp 0 0 0.0.0.0:161 0.0.0.0:* 2692/snmpd

Se você estiver em dúvida se o serviço está rodando, digite no prompt:

# ps aux
root 2700 0.0 0.2 1588 416 tty3 Ss+ Feb12 0:00 /sbin/mingetty tty3
root 2701 0.0 0.2 1588 416 tty4 Ss+ Feb12 0:00 /sbin/mingetty tty4
root 2702 0.0 0.2 1584 412 tty5 Ss+ Feb12 0:00 /sbin/mingetty tty5
root 2703 0.0 0.2 1588 416 tty6 Ss+ Feb12 0:00 /sbin/mingetty tty6
root 2793 0.0 0.0 0 0 ? S131072] S=[107520->131072]
Thu Feb 19 16:39:14 2009 us=104491 UDPv4 link local (bound): [undef]:5000
Thu Feb 19 16:39:14 2009 us=104578 UDPv4 link remote: [undef]
Thu Feb 19 16:39:18 2009 us=990824 UDPv4 READ [60] from 200.201.200.203:5000: DATA len=60
Thu Feb 19 16:39:18 2009 us=991365 Peer Connection Initiated with 200.201.200.203:5000
Thu Feb 19 16:39:18 2009 us=991922 Initialization Sequence Completed
Thu Feb 19 16:39:24 2009 us=462779 UDPv4 WRITE [60] to 200.201.200.203:5000: DATA len=60
Thu Feb 19 16:39:24 2009 us=468669 UDPv4 READ [196] from 200.201.200.203:5000: DATA len=196
Thu Feb 19 16:39:34 2009 us=671371 UDPv4 READ [60] from 200.201.200.203:5000: DATA len=60
Thu Feb 19 16:39:44 2009 us=757217 UDPv4 READ [60] from 200.201.200.203:5000: DATA len=60
Thu Feb 19 16:39:54 2009 us=986099 UDPv4 READ [60] from 200.201.200.203:5000: DATA len=60
Thu Feb 19 16:40:05 2009 us=6781 UDPv4 READ [60] from 200.201.200.203:5000: DATA len=60
Thu Feb 19 16:40:15 2009 us=246863 UDPv4 READ [60] from 200.201.200.203:5000: DATA len=60
Thu Feb 19 16:40:15 2009 us=613320 TUN READ [60]
Thu Feb 19 16:40:15 2009 us=613817 UDPv4 WRITE [100] to 200.201.200.203:5000: DATA len=100
Thu Feb 19 16:40:15 2009 us=620200 UDPv4 READ [100] from 200.201.200.203:5000: DATA len=100
Thu Feb 19 16:40:15 2009 us=620570 TUN WRITE [60]
Thu Feb 19 16:40:16 2009 us=613581 TUN READ [60]
Thu Feb 19 16:40:16 2009 us=614243 UDPv4 WRITE [100] to 200.201.200.203:5000: DATA len=100

Dica: Toda vez que você reiniciar o OPENVPN suas rotas serão perdidas.

Para que isso não aconteça, acesse o diretório /etc/openvpn e crie um arquivo chamado openvpn-startup:

# cd /etc/openvpn
# touch openvpn-startup
# chmod 777 openvpn-startup

Dentro do arquivo “openvpn-startup” adicione as rotas que você precisa, fazendo isso toda vez que o openVPN for iniciando as rotas serão criadas automaticamente.

Para entender o por quê disso, dê um cat em /etc/init.d/openvpn e dê uma olhada no script de inicialização do OPENVPN. Note que em um determinado momento ele procura um arquivo openvpn-startup para ser executado durante o processo de inicialização.

Deixe uma resposta

Faça o login usando um destes métodos para comentar:

WordPress.com Logo

You are commenting using your WordPress.com account. Sair / Alterar )

Imagem do Twitter

You are commenting using your Twitter account. Sair / Alterar )

Foto do Facebook

You are commenting using your Facebook account. Sair / Alterar )

Connecting to %s

Seguir

Obtenha todo post novo entregue na sua caixa de entrada.