
He aquí mi arreglo. Tengo un Cisco ASA 5505 (último IOS). Detrás, tengo un servidor (Ubuntu 12.04) que ejecuta nginx, php-fpm, OwnCloud (todas las últimas versiones). Mi escritorio también se encuentra detrás del ASA y puede acceder a OwnCloud sin problemas. Si conecto mi tableta Android a nuestro punto de acceso inalámbrico y luego accedo a la interfaz web de OwnCloud, todo funciona bien.
He configurado VPN L2TP/IPSEC en el ASA. Puedo desconectar mi Ethernet en mi escritorio, conectarme a mi teléfono y conectarme a la VPN. Desde allí puedo conectar SSH al servidor nginx, VNC a otras máquinas de escritorio y acceder a la interfaz web de OwnCloud. Todo funciona perfecto.
Puedo conectar la tableta Android a la VPN (mediante conexión de punto de acceso). Desde allí puedo conectar SSH al servidor nginx y VNC a las máquinas de escritorio. El problema surge cuando intento acceder a la interfaz web de OwnCloud. No funciona. Simplemente se queda ahí girando. Lo extraño es que creo un archivo test.php en el directorio OwnCloud (con un simple echo('hello world');
) y esa página se carga bien.
Capturé el tráfico en el servidor usando tcpdump y puedo ver la solicitud GET. El servidor responde. Luego veo un par de ACKS duplicados provenientes de la tableta y algunas retransmisiones provenientes del servidor.
Debo tener en cuenta que a los clientes VPN se les asignan direcciones IP en una subred diferente.
Aquí está mi configuración de nginx:
upstream php-handler {
server 127.0.0.1:9000;
}
# redirect http to https
server {
listen 80;
server_name 10.3.3.3;
#return 301 https://$server_name$request_uri; # enforce https
root /var/www/owncloud/;
client_max_body_size 10G;
client_body_timeout 600s;
client_header_timeout 600s;
rewrite ^/caldav(.*)$ /remote.php/caldav$1 redirect;
rewrite ^/carddav(.*)$ /remote.php/carddav$1 redirect;
rewrite ^/webdav(.*)$ /remote.php/webdav$1 redirect;
index index.php;
error_page 403 /core/templates/403.php;
error_page 404 /core/templates/404.php;
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
location ~ ^/(data|config|\.ht|db_structure\.xml|README) {
deny all;
}
location / {
# The following 2 rules are only needed with webfinger
rewrite ^/.well-known/host-meta /public.php?service=host-meta last;
rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json last;
rewrite ^/.well-known/carddav /remote.php/carddav/ redirect;
rewrite ^/.well-known/caldav /remote.php/caldav/ redirect;
rewrite ^(/core/doc/[^\/]+/)$ $1/index.html;
try_files $uri $uri/ index.php;
}
location ~ ^(.+?\.php)(/.*)?$ {
try_files $1 = 404;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$1;
fastcgi_param PATH_INFO $2;
fastcgi_param HTTPS off;
fastcgi_pass php-handler;
}
# Optional: set long EXPIRES header on static assets
location ~* ^.+\.(jpg|jpeg|gif|bmp|ico|png|css|js|swf)$ {
expires 30d;
# Optional: Don't log access to assets
access_log off;
}
}
En resumen, todos los dispositivos funcionan bien cuando están en la LAN local. Los clientes de escritorio (OS X) funcionan bien cuando se conectan a través de VPN. Los clientes de VPN Mobile (tableta Android) pueden utilizar SSH y VNC en máquinas locales. Las solicitudes HTTP también funcionan bien para VPN en mi página de prueba simple, pero no pueden acceder a OwnCloud. ¿Qué puedo hacer para diagnosticar mejor el problema? ¿Cuál es el problema?
Respuesta1
Necesita una caja NAT, con registros DNS para su red local. En serio, esto hará que sea mucho más fácil trabajar con sus hosts virtuales, más detallados y más consistentes entre las redes locales y remotas...
Es realmente bueno tener un nombre de dominio dedicado a Owncloud. Es realmente bueno tener el mismo nombre de dominio para tu Owncloud oculto. Y cuando ingresa a VPN, debería funcionar, siempre que sus rutas permitan el acceso a su subred local.
Todas mis máquinas o sitios de VM tienen su propio registro DNS único y una IP estática. Es un paso adicional, pero mucho más profesional de organizar.