透過 VPN 存取 OwnCloud 在 Android 和 chromebook 上不起作用?

透過 VPN 存取 OwnCloud 在 Android 和 chromebook 上不起作用?

這是我的設定。我有 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。這是一個額外的步驟,但組織起來更加專業。

相關內容