遊戲重複下載慢?流量不夠用?本地遊戲緩存服務器搭建教程

大家好,我是飄雷。

春節假期裏,正在上大學的大侄子跟我抱怨,說現在大學還在使用流量扣費的校園網,宿舍裏幾個同學下載遊戲的時候都叫苦不迭,不僅流量費用貴,而且大家的下載速度還慢,很是不爽。

說起這個,我就想到自己家裏幾臺PC主機+筆記本下載遊戲的時候,也有類似的情況。

雖然steam遊戲有局域網內流式傳輸的功能,但是要使用的話得保持一臺設備通電開機,而且像是育碧的Uplay和暴雪的battle之類的平臺可沒這種功能。

所以我就趁着假期研究了一下,摸索出一套使用Lancache這個項目在本地搭建遊戲緩存服務器的教程,只需要有一臺設備下載過遊戲,局域網內其他設備再次下載時,就能從本地緩存中獲取內容。

這樣一方面可以大大減少外網帶寬的佔用,對使用流量的校園網或者CPE用戶很是友好,另一方面也能加快下載速度,減少等待的時間,希望能幫到用得上的朋友。

一、Lancache介紹

Lancache是一套在GitHub上開源免費的局域網緩存解決方案,它基於Nginx,通過DNS劫持技術,可以將Steam、EA app (原Origin)、育碧、拳頭、暴雪戰網等平臺的下載域名解析到本地緩存服務器的IP地址,而非直接訪問互聯網。

這樣當首次下載遊戲時,遊戲文件就會被緩存到本地的服務器中,後續在局域網中再次下載時,就能在本地服務器直接讀取內容,實現一次下載、多人共享。

具體來說,LanCache 的運行依賴於兩個核心組件:緩存服務器(Cache Server)DNS 轉發器(DNS Redirector)

它的工作步驟如下:

  1. DNS 劫持:LanCache 充當了局域網內的 DNS 服務器。當你的電腦嘗試訪問 Steam 的內容服務器(如 content.steampowered.com)時,LanCache 的 DNS 轉發器會將該域名解析到本地緩存服務器的 IP,而不是互聯網 IP。

  2. 透明代理:遊戲客戶端(如 Steam 客戶端)認爲它在連接官方服務器,但實際上它連接的是你本地運行的 Nginx 實例。

  3. 智能緩存:

  • 首次下載:本地沒有文件,Nginx 會從互聯網下載文件,並同步流式傳輸給你的電腦,同時在本地磁盤保留一份拷貝。

  • 後續下載:當第二臺電腦請求相同文件時,Nginx 發現磁盤已有緩存,直接從本地以極速發送數據,完全不佔用外網流量。

二、Lancache部署方式

這裏我以家裏的威聯通Qu805爲例,爲大家展示Lancache的docker部署過程,操作步驟非常簡單,其他品牌的軟路由或者NAS也能輕鬆搞定。

首先我們要給Lancache新建一個保存配置文件的文件夾,這個位置大家可以自行決定,我是在Container新建了一個lancache文件夾,並在其中新建了cache和logs兩個文件夾用於目錄映射。

另外有一個折騰了我好幾天才部署成功的難點,我們也需要提前處理一下。

Lancache這個項目,使用的是GitHub中的cache-domains項目作爲配置生成器,從而創建配置數據,然後纔可以將其加載到本地網絡現有的 DNS 基礎架構中。

https://github.com/uklans/cache-domains

換句話說,如果沒有魔法飛棍來保證GitHub通暢的話,可能會出現Lancache的DNS服務無法正常運行的問題。

所以爲了保險,我們可以提前下載該項目,

然後將解壓後的所有文件都上傳到NAS裏,比如我存放在了/Container/lancache/domains文件夾裏。

接着我們登錄威聯通NAS後臺,打開Container Station容器工作站,點擊左側的”應用程序“,然後點擊右側黑色”創建“按鈕。

在彈出的代碼輸入框中,我們輸入以下YAML代碼,這裏需要注意代碼中的IP和文件夾部分,大家可以根據自己局域網和設備的實際情況進行修改。

x-restart-policy: &restart-policy "no"

services:

  dns:

    image: lancachenet/lancache-dns:latest

    restart: *restart-policy

    # DNS服務使用 monolithic 的共享 IP

    network_mode: service:monolithic

    # 目錄掛載,根據實際情況填寫。格式:NAS本地路徑:容器內路徑

    volumes:

      - /share/Container/lancache/domains:/data/cachedomains

    # IP根據實際情況填寫

    environment:

      - USE_GENERIC_CACHE=true

      - LANCACHE_IP=192.168.10.209

      - DNS_BIND_IP=192.168.10.209

    # 這裏使用阿里雲的公共DNS,如果所在地有更快的運營商DNS,也可以自行替換

      - UPSTREAM_DNS=223.5.5.5

      - TZ=Asia/Shanghai 

  monolithic:

    image: lancachenet/monolithic:latest

    restart: *restart-policy

    ports:

      - 80:80/tcp

      - 443:443/tcp

    # 目錄掛載,根據實際情況填寫。格式:NAS本地路徑:容器內路徑

    volumes:

      - /share/Container/lancache/domains:/data/cachedomains    

      - /share/Container/lancache/cache:/data/cache

      - /share/Container/lancache/logs:/data/logs

    networks:

      lancache_net:

        ipv4_address: 192.168.10.209

    # IP根據實際情況填寫

    environment:

      - USE_GENERIC_CACHE=true

      - LANCACHE_IP=192.168.10.209

      - CACHE_DISK_SIZE=200g

      - MIN_FREE_DISK=10g

      - CACHE_INDEX_SIZE=250m

      - CACHE_MAX_AGE=3650d

      - TZ=Asia/Shanghai

## 定義網絡 (Macvlan 模式)

networks:

  lancache_net:

    driver: macvlan

    driver_opts:

      ## 你的 QNAP 網卡名稱 (請確保 qvs0 是正確的虛擬交換機接口)

      parent: qvs0

    ipam:

      config:

        # 根據你的局域網實際網段和網關填寫

        - subnet: 192.168.10.0/24

          gateway: 192.168.10.1

這裏由於Lancache項目需要佔用80和443端口,所以我們通過Macvlan創建另外一個 IP,代碼中我使用的是192.168.10.209,大家不要直接照搬,先看看自己局域網的網段。

代碼粘貼無誤後,記得點擊下方的 “驗證”按鈕,確保YAML格式正確,最後點擊創建按鈕,系統就會自動拉取這個非常精簡的鏡像並啓動服務,咱們可以在容器列表中看到lancache-dns和lancache-monolithic這兩個容器正在運行,狀態顯示爲綠色小圓點。

三、Lancache使用方法

1.修改DNS

Lancache正確部署後,使用方法是非常簡單的,我們只需要將電腦的DNS指向剛纔我們給Lancache配置的網址即可,比如這裏我使用的就是代碼中的 192.168.10.209:

需要注意的是,如果這臺部署了Lancache的NAS關機或重啓,那電腦將會因爲解析不到DNS而無法上網,這種情況下把電腦DNS改回自動獲取即可。

2.初次下載

DNS設置好後,隨便打開個網頁,測試網絡通暢,說明Lancache已經可以正常工作了。

接下來我們就可以打開steam或者其他遊戲平臺,下載一個遊戲試試。

如下圖所示,可以看到在首次下載遊戲時,Qu805是處於邊接收、邊發送的狀態,說明遊戲文件已經流經了NAS,並且在NAS中進行了緩存。

3.二次下載

當我們二次下載Lancache緩存過的遊戲時,可以看到NAS網口的發送速度超過了100MB/s,此時文件完全從本地NAS的中獲取,不僅速度更快,而且也不用消耗外網流量。

4.補充

有朋友可能會說,每次都需要用電腦先下載一次遊戲後才能加速,還是有點兒繁瑣,那麼GitHub上一個叫做steam-lancache-prefill的項目可以代替steam客戶端來觸發這個下載緩存的操作,實現預填充功能,有興趣的朋友可以自行探索一下。

https://github.com/tpill90/steam-lancache-prefill

總結

本期爲大家分享的這套利用NAS構建本地遊戲緩存服務器的方法,非常適合宿舍、家庭或者公司這類多人下載相同遊戲的共享環境,也可以用來解決帶寬或者流量受限的問題,大家有需要的話可以嘗試一下,還是相當好用的。

更多遊戲資訊請關註:電玩幫遊戲資訊專區

電玩幫圖文攻略 www.vgover.com