
這是我的設定。我有 Cisco ASA 5505(最新的 IOS)。在它後面,我有一個運行 nginx、php-fpm、OwnCloud(所有最新版本)的(Ubuntu 12.04)伺服器。我的桌面也位於 ASA 後面,並且能夠正常存取 OwnCloud。如果我將 Android 平板電腦連接到我們的無線存取點,然後存取 OwnCloud Web 介面,一切都會正常運作。
我已在 ASA 上設定 L2TP/IPSEC VPN。我可以在桌面上斷開乙太網路連接,連接到手機,然後連接到 VPN。從那裡我可以透過 SSH 存取 nginx 伺服器,透過 VNC 存取其他桌面計算機,並存取 OwnCloud Web 介面。一切都很完美。
我可以將 Android 平板電腦連接到 VPN(透過熱點網路共用)。從那裡我可以透過 SSH 存取 nginx 伺服器,透過 VNC 存取桌面電腦。當我嘗試存取 OwnCloud Web 介面時出現問題。這不起作用。它只是坐在那裡旋轉。奇怪的是,我在 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
您需要一個 NAT 盒,其中包含本地網路的 DNS 記錄。這將使您的虛擬主機更容易使用,更詳細,並且本地和遠端網路之間更加一致...
擁有一個專用於 Owncloud 的網域真是太好了。為您隱藏的 Owncloud 使用相同的網域名稱真是太好了。當您使用 VPN 時,只要您的路由允許存取您的本地子網,它就應該可以正常運作。
我的所有電腦或 VM 網站都有自己獨特的 DNS 記錄和靜態 IP。這是一個額外的步驟,但組織起來更加專業。