Hayer configuré una VPN en un Mac-mini que tengo en casa con OpenVPN, la idea es tener conexión externa a este «servidor» en el día a día de mi trabajo. Una nota que creo necesaria hacer, la versión del OS X utilizada es la 10.6.8 (Snow Leopard) y no la más reciente Maverics porque no lo puedo instalar por ser un Mac-mini viejuno.
Al grano. Para configurar tu servidor VPN hay que seguir las directrices que ponen aquí: en concreto desde aquí hasta aquí son suficientes.
Para los pasos previos (instalación y tal) he usado MacPorts (openvpn2) y como cliente uso Tunnelblick en el portátil para conectarme como cliente.
Si has seguido los paso ya tienes la VPN creada y desde el cliente te has podido conectar. O no. Y es que me he encontrado con varios problemas.
Por ejemplo, para poder conectarme he tenido que usar un puerto TCP en lugar del UDP que se configura por defecto. Por alguna razón el Mac Mini, con Mac OS 10.6.8, no me deja abrir los puertos UDP usando el firewall que lleva instalado (ipfw).
Para conectarme desde mi red local he tenido que configurar dos remote en el fichero server.conf, uno con la IP pública y otra con la IP interna del servidor.
Si no te puedes conectar, aunque el firewall del servidor esté apagado desde Preferencias del Sistema, es muy posible que tengas que abrir el puerto desde la línea de comandos. Para abrir el puerto por línea de comandos debes ejecutar el siguiente comando:
sudo ipfw add 40000 allow tcp from any to any dst-port portnum
Donde 40000 es la regla que creas y portnum el puerto que quieres abrir. (para más información man ipfw)
Pero esto lleva a otro problema. Al crear la regla en el firewall (ipfw) desde línea de comandos, al reiniciar el Mac-mini, esta regla desaparece. Así que para que quede configurado de manera permanente te puede ayudar algún programa como NoobProof.
Una última cosa que nos queda es configurar un daemon en el servidor para que se lance como servicio cada vez que se pone en marcha. Creamos el fichero:
/Library/LaunchDaemons/org.openvpn.plist
Y le añadimos este código:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd";>
<plist version="1.0">
<dict>
<key>Label</key>
<string>org.openvpn</string>
<key>OnDemand</key>
<false/>
<key>Program</key>
<string>/opt/local/sbin/openvpn2</string>
<key>ProgramArguments</key>
<array>
<string>openvpn</string>
<string>--config</string>
<string>/etc/openvpn/server.conf</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>TimeOut</key>
<integer>90</integer>
<key>WorkingDirectory</key>
<string>/etc/openvpn</string>
</dict>
</plist>
Ten en cuenta que las líneas:
<string>/opt/local/sbin/openvpn2</string>
y
<string>/etc/openvpn/server.conf</string>
las tendrás que adaptar a tu configuración. Una vez lo tengas, para lanzar el daemon tienes que usar este comándo:
launchctl load -w /Library/LaunchDaemons/org.openvpn.plist
A estas alturas ya deberías ser capaz de conectarte tanto desde tu red LAN como desde fuera de ella (si has abierto el puerto correspondiente en tu router).
Yo lo he conseguido :P