
여기 내 설정이 있습니다. Cisco ASA 5505(최신 IOS)가 있습니다. 그 뒤에는 nginx, php-fpm, OwnCloud(모든 최신 버전)를 실행하는 (Ubuntu 12.04) 서버가 있습니다. 내 데스크탑도 ASA 뒤에 위치하며 OwnCloud에 문제없이 액세스할 수 있습니다. Android 태블릿을 무선 액세스 포인트에 연결한 다음 OwnCloud 웹 인터페이스에 액세스하면 모든 것이 잘 작동합니다.
ASA에 L2TP/IPSEC VPN을 설정했습니다. 데스크탑에서 이더넷 연결을 끊고 휴대폰에 연결하고 VPN에 연결할 수 있습니다. 거기에서 nginx 서버에 SSH를 연결하고, 다른 데스크톱 컴퓨터에 VNC를 연결하고, OwnCloud 웹 인터페이스에 액세스할 수 있습니다. 모든 것이 완벽하게 작동합니다.
(핫스팟 테더링을 통해) 안드로이드 태블릿을 VPN에 연결할 수 있습니다. 거기에서 nginx 서버로 SSH를 연결하고 데스크톱 컴퓨터로 VNC를 연결할 수 있습니다. OwnCloud 웹 인터페이스에 액세스하려고 할 때 문제가 발생합니다. 작동하지 않습니다. 그냥 거기 앉아서 회전하고 있어요. 이상한 점은 OwnCloud 디렉터리에 test.php 파일을 만들고(간단한 이름으로 echo('hello world');
) 해당 페이지가 제대로 로드된다는 것입니다.
tcpdump를 사용하여 서버에서 트래픽을 캡처했는데 GET 요청이 들어오는 것을 볼 수 있습니다. 서버가 응답합니다. 그런 다음 태블릿에서 두 개의 중복된 ACKS가 수신되고 서버에서 몇 개의 재전송이 수신되는 것을 볼 수 있습니다.
VPN 클라이언트에는 다른 서브넷의 IP 주소가 제공된다는 점에 유의해야 합니다.
내 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;
}
}
요약하면 로컬 LAN에 있을 때 모든 장치가 제대로 작동합니다. VPN을 통해 연결하면 데스크톱 클라이언트(OS X)가 제대로 작동합니다. VPN 모바일 클라이언트(Android 태블릿)는 SSH 및 VNC를 로컬 시스템에 연결할 수 있습니다. HTTP 요청은 간단한 테스트 페이지에서 VPN에 대해서도 잘 작동하지만 OwnCloud에 액세스할 수 없습니다. 문제를 추가로 진단하려면 어떻게 해야 합니까? 문제는 무엇입니까?
답변1
로컬 네트워크에 대한 DNS 레코드가 있는 NAT 상자가 필요합니다. 이렇게 하면 가상 호스트를 훨씬 더 쉽게 작업하고, 더 장황하게 만들고, 로컬 네트워크와 원격 네트워크 간의 일관성을 높일 수 있습니다.
Owncloud 전용 도메인 이름을 갖는 것은 정말 좋습니다. 숨겨진 Owncloud에 동일한 도메인 이름을 갖는 것은 정말 좋습니다. 그리고 VPN을 사용하면 경로가 로컬 서브넷에 대한 액세스를 허용하는 한 제대로 작동합니다.
내 모든 컴퓨터 또는 VM 사이트에는 고유한 DNS 레코드와 고정 IP가 있습니다. 추가 단계이지만 정리하는 것이 훨씬 더 전문적입니다.