Configure uma VPN, rotear o samba sobre ela

1

Eu recebo 3 endereços IP do meu provedor, então depois do meu modem eu tenho um switch com três coisas. Dois são servidores, um é um roteador. Todos os meus computadores pessoais estão por trás do roteador. Meu servidor antigo costumava ter duas portas ethernet, então eu colocava uma no switch e uma no roteador para que eu pudesse manter o tráfego do servidor fora do roteador e ainda ter compartilhamentos de samba para a mídia.

Meu novo servidor de baixo consumo de energia tem apenas uma LAN. Eventualmente eu vou ter um plug ethernet USB para ele, mas até então eu gostaria de ter meus compartilhamentos de samba. Eu pensei comigo mesmo, deve haver alguma maneira de conseguir isso via VPN.

Então, o que eu gostaria de fazer é configurar um servidor VPN no servidor para permitir que os clientes por trás do roteador se conectem a ele. Isso pareceu bastante simples, exceto que todos os guias que vi presumem que você pode alocar endereços na LAN do servidor. Como a LAN do meu servidor é a internet pública, não posso fazer isso. Existe alguma maneira de criar uma LAN 'imaginária' que exista apenas na mente do servidor e colocar meus clientes VPN nisso?

Para esclarecer, se o servidor for 68.232.SSS.SSS e se o roteador for 68.232.RRR.RRR e se os computadores atrás do roteador forem 10.0.0.1-255, posso fazer com que os clientes VPN usem endereços como 192.168.0. VPN?

  OOoOoOOOooOOo
OoO  Public  OoOOo-----Server eth0 (Real)    68.232.SSS.SSS
OoO  Internet OoO             eth1 (Virtual) 192.168.0.1
 OoOoOOoOOoOOOo
     |
     \--Router eth0 (WAN) 68.232.RRR.RRR
         |     eth1 (LAN) 10.0.0.1
         |
         \-----Client eth1 (Virtual) 192.168.0.2  
                      eth0 (Real)    10.0.0.2
    
por Huckle 16.02.2012 / 19:27

3 respostas

2
  1. instale o openvpn no seu servidor e no seu cliente
  2. gere os certificados como no HOWTO oficial:

    root@server:/etc/openvpn/easy-rsa# cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0 /etc/openvpn/easy-rsa
    root@server:/etc/openvpn/easy-rsa# cd /etc/openvpn/easy-rsa
    

    Edite / etc / openvpn / easy-rsa / vars e preencha os valores apropriados

    root@server:/etc/openvpn/easy-rsa# . ./vars
    NOTE: If you run ./clean-all, I will be doing a rm -rf on /etc/openvpn/easy-rsa/keys
    root@server:/etc/openvpn/easy-rsa# ./clean-all
    root@server:/etc/openvpn/easy-rsa# ./build-ca
    Generating a 1024 bit RSA private key
    ......................++++++
    ........++++++
    writing new private key to 'ca.key'
    -----
    You are about to be asked to enter information that will be incorporated
    into your certificate request.
    What you are about to enter is what is called a Distinguished Name or a DN.
    There are quite a few fields but you can leave some blank
    For some fields there will be a default value,
    If you enter '.', the field will be left blank.
    -----
    Country Name (2 letter code) [HK]:
    State or Province Name (full name) [New Territories]:
    Locality Name (eg, city) [Tuen Mun]:
    Organization Name (eg, company) [Home]:
    Organizational Unit Name (eg, section) [changeme]:
    Common Name (eg, your name or your server's hostname) [OpenVPN-CA]:
    Name [OpenVPN-CA]:
    Email Address [[email protected]]:
    root@server:/etc/openvpn/easy-rsa# ./build-key-server server
    Generating a 1024 bit RSA private key
    ...............++++++
    ..........++++++
    writing new private key to 'server.key'
    -----
    You are about to be asked to enter information that will be incorporated
    into your certificate request.
    What you are about to enter is what is called a Distinguished Name or a DN.
    There are quite a few fields but you can leave some blank
    For some fields there will be a default value,
    If you enter '.', the field will be left blank.
    -----
    Country Name (2 letter code) [HK]:
    State or Province Name (full name) [New Territories]:
    Locality Name (eg, city) [Tuen Mun]:
    Organization Name (eg, company) [Home]:
    Organizational Unit Name (eg, section) [changeme]:
    Common Name (eg, your name or your server's hostname) [server]:
    Name [OpenVPN-CA]:
    Email Address [[email protected]]:
    
    Please enter the following 'extra' attributes
    to be sent with your certificate request
    A challenge password []:
    An optional company name []:
    Using configuration from /etc/openvpn/easy-rsa/openssl-1.0.0.cnf
    Check that the request matches the signature
    Signature ok
    The Subject's Distinguished Name is as follows
    countryName           :PRINTABLE:'HK'
    stateOrProvinceName   :PRINTABLE:'New Territories'
    localityName          :PRINTABLE:'Tuen Mun'
    organizationName      :PRINTABLE:'Home'
    organizationalUnitName:PRINTABLE:'changeme'
    commonName            :PRINTABLE:'server'
    name                  :PRINTABLE:'OpenVPN-CA'
    emailAddress          :IA5STRING:'[email protected]'
    Certificate is to be certified until Mar 18 13:18:09 2022 GMT (3650 days)
    Sign the certificate? [y/n]:y
    
    
    1 out of 1 certificate requests certified, commit? [y/n]y
    Write out database with 1 new entries
    Data Base Updated
    root@server:/etc/openvpn/easy-rsa# ./build-key client
    Generating a 1024 bit RSA private key
    ..........++++++
    ...................................................++++++
    writing new private key to 'client.key'
    -----
    You are about to be asked to enter information that will be incorporated
    into your certificate request.
    What you are about to enter is what is called a Distinguished Name or a DN.
    There are quite a few fields but you can leave some blank
    For some fields there will be a default value,
    If you enter '.', the field will be left blank.
    -----
    Country Name (2 letter code) [HK]:
    State or Province Name (full name) [New Territories]:
    Locality Name (eg, city) [Tuen Mun]:
    Organization Name (eg, company) [Home]:
    Organizational Unit Name (eg, section) [changeme]:
    Common Name (eg, your name or your server's hostname) [client]:
    Name [OpenVPN-CA]:
    Email Address [[email protected]]:
    
    Please enter the following 'extra' attributes
    to be sent with your certificate request
    A challenge password []:
    An optional company name []:
    Using configuration from /etc/openvpn/easy-rsa/openssl-1.0.0.cnf
    Check that the request matches the signature
    Signature ok
    The Subject's Distinguished Name is as follows
    countryName           :PRINTABLE:'HK'
    stateOrProvinceName   :PRINTABLE:'New Territories'
    localityName          :PRINTABLE:'Tuen Mun'
    organizationName      :PRINTABLE:'Home'
    organizationalUnitName:PRINTABLE:'changeme'
    commonName            :PRINTABLE:'client'
    name                  :PRINTABLE:'OpenVPN-CA'
    emailAddress          :IA5STRING:'[email protected]'
    Certificate is to be certified until Mar 18 13:20:00 2022 GMT (3650 days)
    Sign the certificate? [y/n]:y
    
    
    1 out of 1 certificate requests certified, commit? [y/n]y
    Write out database with 1 new entries
    Data Base Updated
    root@server:/etc/openvpn/easy-rsa# ./build-dh
    Generating DH parameters, 1024 bit long safe prime, generator 2
    This is going to take a long time
    ............................................................................+..................+...........+...........................+..............+..............................................................+......................................................................................................+......................................................................................+..............................................................................+..................+.................+..................................................................+.........................................+...........+..........................................................................................+..............................................+....................................+...................+....+..+................+.+.........+..............................................................+....................................................................................................................+...........+.....................................................................................................................................+.........................................................+...........................................................+.......................................................................................................................................................................................................................................+..............+..............................................................................................................................................+............................+..........................................+....................................................................................................................................++*++*++*
    
  3. copie os arquivos necessários de / etc / openvpn / easy-rsa / keys no servidor para / etc / openvpn

    para servidor: ca.crt dh1024.pem server.crt server.key

    para cliente: ca.crt client.crt client.key

  4. copie os arquivos de configuração de amostra apropriados de / usr / share / doc / openvpn / examples / sample-config-files / para / etc / openvpn e descomprima-os

    servidor: server.conf.gz

    client: client.conf

  5. O arquivo de configuração do servidor deve ser viável por padrão
  6. edite a entrada "remote" no cliente /etc/openvpn/client.conf

    Insira o nome do servidor / endereço IP. Nenhuma outra mudança precisa ser feita

  7. Abra o UDP 1194 no firewall do servidor
  8. O serviço está pronto para começar agora, o servidor está em 10.8.0.1

    Eu suponho que você só precisa acessar o servidor, trabalho adicional precisa ser feito se você quiser acessar outras redes internas.

  9. configure o samba para escutar em 10.8.0.0/24

Tudo deveria ter sido feito, deixe um comentário aqui se algo der errado.

    
por Michael Tsang 20.03.2012 / 14:39
0

Instale openvpn no servidor e nos clientes. No servidor, isso abrirá uma interface tun0 tunnel com uma sub-rede IP de sua escolha. As opções relevantes no arquivo de configuração /etc/openvpn/server.conf são:

dev tun
server 192.168.1.0 255.255.255.0

A menos que você queira que os clientes direcionem todo o tráfego deles por meio da VPN, comente as linhas parecidas com push "route A.B.C.D W.X.Y.Z" da configuração.

Além da configuração de rede, você precisa gerar certificados para o servidor e para os clientes (ambos os lados são autenticados). Como fazer isso é coberto na documentação do OpenVPN .

Finalmente, você tem que configurar os clientes para poder usar esta conexão, então você coloca no seu /etc/openvpn/client.conf :

remote 68.232.SSS.SSS 1194

O 1194 / udp é a porta padrão do OpenVPN, que precisa estar aberta para o mundo em seu firewall (daí a necessidade de certificados).

Espero que esta resposta e a configuração de documentação e amostra do openvpn o ajudem.

    
por taneli 20.03.2012 / 09:03
0

Embora não seja uma resposta direta à sua pergunta, sugiro que você considere montar seu servidor usando o sshfs. Tudo o que você precisa é de um servidor ssh em execução, em vez de uma combinação complexa de samba e uma solução vpn aparafusada.

No cliente, dê uma olhada em Como montar automaticamente usando sshfs? para uma solução GUI ou link para uma solução fstab de todo o sistema.

    
por Egil 20.03.2012 / 10:11