tun
(para túneles a nivel de IP) y tap
(para túneles a nivel Ethernet). En la práctica, usualmente utilizará interfaces tun
excepto cuando los clientes VPN deban intengrarse a la red local del servidor a través de un puente Ethernet.
pki/ca.crt
) will be stored on all machines (both server and clients) as /etc/ssl/certs/Falcot_CA.crt
. The server's certificate is installed only on the server (pki/issued/vpn.falcot.com.crt
goes to /etc/ssl/certs/vpn.falcot.com.crt
, and pki/private/vpn.falcot.com.key
goes to /etc/ssl/private/vpn.falcot.com.key
with restricted permissions so that only the administrator can read it), with the corresponding Diffie-Hellman parameters (pki/dh.pem
) installed to /etc/openvpn/dh.pem
. Client certificates are installed on the corresponding VPN client in a similar fashion.
/etc/openvpn/*.conf
. Setting up a VPN server is therefore a matter of storing a corresponding configuration file in this directory. A good starting point is /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz
, which leads to a rather standard server. Of course, some parameters need to be adapted: ca
, cert
, key
and dh
need to describe the selected locations (respectively, /etc/ssl/certs/Falcot_CA.crt
, /etc/ssl/vpn.falcot.com.crt
, /etc/ssl/private/vpn.falcot.com.key
and /etc/openvpn/dh.pem
). The server 10.8.0.0 255.255.255.0
directive defines the subnet to be used by the VPN; the server uses the first IP address in that range (10.8.0.1
) and the rest of the addresses are allocated to clients.
tun0
name. However, firewalls are often configured at the same time as the real network interfaces, which happens before OpenVPN starts. Good practice therefore recommends creating a persistent virtual network interface, and configuring OpenVPN to use this pre-existing interface. This further allows choosing the name for this interface. To this end, openvpn --mktun --dev vpn --dev-type tun
creates a virtual network interface named vpn
with type tun
; this command can easily be integrated in the firewall configuration script, or in an up
directive of the /etc/network/interfaces
file, or a udev rule can be added to that end. The OpenVPN configuration file must also be updated accordingly, with the dev vpn
and dev-type tun
directives.
10.8.0.1
. Para permitir a los clientes que accedan la red local (192.168.0.0/24) necesitará agregar una directiva push route 192.168.0.0 255.255.255.0
a la configuración de OpenVPN para que los clientes VPN automáticamente obtengan una ruta de red que les indique que esta red está disponible a través de la VPN. Lo que es más, los equipos en la red local también necesitarán ser informados que la ruta a la VPN es a través del servidor de VPN (esto funciona automáticamente cuando instala el servidor VPN en la puerta de enlace). Otra alternativa es configurar el servidor VPN para realizar enmascaramiento de IPs de forma que las conexiones que provengan de los clientes VPN parezcan provenir del servidor VPN en su lugar (revise la Sección 10.1, “Puerta de enlace”).
/etc/openvpn/
. Puede conseguir una configuración estándar utilizando /usr/share/doc/openvpn/examples/sample-config-files/client.conf
como punto de partida. La directiva remote vpn.falcot.com 1194
describe la dirección y puerto del servidor OpenVPN; también necesita adaptar ca
, cert
y key
para describir la ubicación de los archivos de llave.
AUTOSTART
directive to none
in the /etc/default/openvpn
file. Starting or stopping a given VPN connection is always possible with the commands systemctl start openvpn@name
and systemctl stop openvpn@name
(where the connection name matches the one defined in /etc/openvpn/name.conf
).
tun*
) en ambos extremos de una conexión SSH y puede configurar estas interfaces virtuales exactamente como si fueran interfaces físicas. Primero debe activar el sistema de túneles configurando PermitTunnel
como «yes» en el archivo de configuración del servidor SSH (/etc/ssh/sshd_config
). Cuando se establece la conexión SSH debe solicitar explícitamente la creación del túnel con la opción -w any:any
(puede reemplaza any
con el número de dispositivo tun
deseado). Esto necesita que el usuario tenga permisos de administrador en ambos extremos para poder crear el dispositivo de red (en otras palabras, debe establecer la conexión como root).
/etc/ipsec.conf
contains the parameters for IPsec tunnels (or Security Associations, in the IPsec terminology) that the host is concerned with. There are many configuration examples in /usr/share/doc/libreswan/
, but Libreswan's online documentation has more examples with explanations:
systemctl
; for example, systemctl start ipsec
will start the IPsec service.
/etc/ppp/options.pptp
, /etc/ppp/peers/falcot
, /etc/ppp/ip-up.d/falcot
y /etc/ppp/ip-down.d/falcot
.
Ejemplo 10.2. El archivo /etc/ppp/options.pptp
# opciones PPP utilizadas en una conexión PPTP lock noauth nobsdcomp nodeflate
Ejemplo 10.3. El archivo /etc/ppp/peers/falcot
# vpn.falcot.com es el servidor PPTP pty "pptp vpn.falcot.com --nolaunchpppd" # el usuario «vpn» identificará a la conexión user vpn remotename pptp # necesita cifrado require-mppe-128 file /etc/ppp/options.pptp ipparam falcot
pptpd
es el servidor PPTP para Linux. Necesitará cambiar pocas cosas de su archivo de configuración principal, /etc/pptpd.conf
: localip (dirección IP local) y remoteip (dirección IP remota). En el ejemplo a continuación el servidor PPTP siempre utiliza la dirección 192.168.0.199
y los clientes PPTP reciben una dirección IP desde 192.168.0.200
a 192.168.0.250
.
Ejemplo 10.6. El archivo /etc/pptpd.conf
# ETIQUETA: speed # # Especifica la velocidad a la que se comunica el demonio PPP. # speed 115200 # ETIQUETA: option # # Especifica la ubicación del archivo de opciones PPP # De forma predeterminada, se lo busca en «/etc/ppp/options» # option /etc/ppp/pptpd-options # ETIQUETA: debug # # Activa (más) depuración al registro del sistema # # debug # ETIQUETA: localip # ETIQUETA: remoteip # # Especifica los rangos de direcciones IP local y remoto # # Puede especificar direcciones IP individuales separadas por coma o # rangos o ambos. Por ejemplo: # # 192.168.0.234,192.168.0.245-249,192.168.0.254 # # RESTRICCIONES IMPORTANTES: # # 1. No se permiten espacios entre las comas o en las direcciones. # # 2. Si provee más direcciones IP que MAX_CONNECTIONS, comenzará al # principio de la lista y continuará hasta que obtenga # MAX_CONNECTIONS direcciones IPs. De lo contrario será ignorado. # # 3. ¡Sin atajos en los rangos! Es decir que 234-8 no significa 234 # a 238, para esto debe tipear 234-238. # # 4. Está bien si provee sólo una IP local - se configurarán todas # las IPs locales como la provista. DEBE proveer al menos una IP # remota para cada cliente simultáneo. # #localip 192.168.0.234-238,192.168.0.245 #remoteip 192.168.1.234-238,192.168.1.245 #localip 10.0.1.1 #remoteip 10.0.1.2-100 localip 192.168.0.199 remoteip 192.168.0.200-250
/etc/ppp/pptpd-options
. Los parámetros importantes son el nombre del servidor (pptp
), el nombre del dominio (falcot.com
y la dirección IP para los servidores DNS y WINS.
Ejemplo 10.7. El archivo /etc/ppp/pptpd-options
## activar la depuración de pppd en el registro del sistema #debug ## modifique «servername» a lo que sea que especificó como su nombre de servidor en chap-secrets name pptp ## modifique el nombre del dominio a su dominio local domain falcot.com ## Estos son valores predeterminados razonables para clientes WinXXXX ## para las configuraciones relacionadas con seguridad # El paquete pppd de Debian ahora es compatible tanto con MSCHAP como con MPPE, actívelos aquí. # ¡Necesita tener también el módulo de núcleo para MPPE! auth require-chap require-mschap require-mschap-v2 require-mppe-128 ## Complete con sus direcciones ms-dns 192.168.0.1 ms-wins 192.168.0.1 ## Complete con su máscara de red netmask 255.255.255.0 ## Algunos valores predeterminados nodefaultroute proxyarp lock
vpn
(y su contraseña asociada) en el archivo /etc/ppp/chap-secrets
. A diferencia de otras instancias en las que un asterisco («*
») funcionaría, aquí debe proveer explícitamente el nombre del servidor. Lo que es más, los clientes PPTP Windows se identifican a sí mismo en la forma DOMINIO\\USUARIO
en lugar de sólo proveer un nombre de usuario. Esto explica porqué el archivo también menciona el usuario FALCOT\\vpn
. También es posible especificar una dirección IP individual para los usuarios; un asterisco en este campo especifica que debe utilizar direcciones dinámicas.