1. 程式人生 > >Docker搭建L2TP-VPN伺服器

Docker搭建L2TP-VPN伺服器

轉自:https://my.oschina.net/u/3269534/blog/2236595

Docker搭建L2TP-VPN伺服器


[TOC]


一、VPN伺服器端配置

(1)首先需要在 Docker 主機上載入 IPsec af_key 核心模組:

sudo modprobe af_key

(2)使用本映象建立一個新的 Docker 容器 (將 ./vpn.env 替換為你自己的 env 檔案):

VPN_IPSEC_PSK=預共享金鑰
VPN_USER=使用者名稱
VPN_PASSWORD=密碼

(3)建立一個新的 Docker 容器 (將 ./vpn.env
 替換為你自己的 env 檔案)

# 安裝docker
curl -sSL https://get.daocloud.io/docker | sh # 指令碼安裝(方式一)
# 開啟docker同時自啟動
systemctl start docker
systemctl enable docker
# 關閉防火牆和禁止自啟動
systemctl stop firewalld
systemctl disable firewalld

# 拉取映象同時建立VPN伺服器容器
docker run \
    --name ipsec-vpn-server \
    --env-file ./vpn.env \
    --restart=always \
    -p 500:500/udp \
    -p 4500:4500/udp \
    -v /lib/modules:/lib/modules:ro \
    -d --privileged \
    hwdsl2/ipsec-vpn-server

(4)修改VPN伺服器端配置

# 進入VPN伺服器
docker exec -it ipsec-vpn-server /bin/bash

​ 編輯 VPN 伺服器上的 /etc/ipsec.conf。找到 phase2alg=... 一行並在末尾加上 ,aes256-sha2_256 字樣。然後找到 sha2-truncbug=yes 並將它替換為 sha2-truncbug=no。儲存修改並執行 service ipsec restart

# 退出VPN伺服器容器
exit
# 重啟VPN伺服器容器
docker restart ipsec-vpn-server

(5)或者我已經封裝好的包括伺服器中安裝了nano編輯器,預共享金鑰、使用者名稱和密碼都是guxiaotu

docker run \
    --name ipsec-vpn-server \
    --restart=always \
    -p 500:500/udp \
    -p 4500:4500/udp \
    -v /lib/modules:/lib/modules:ro \
    -d --privileged \
    guxiaotu/l2tp-vpn

二、Windows 10(1803)客戶端配置

(1)解決 VPN 伺服器 和/或 客戶端與 NAT (比如家用路由器)的相容問題。修改登錄檔管理員許可權開啟CMD執行以下命令,或者下載.reg檔案,管理員身份執行

REG ADD HKLM\SYSTEM\CurrentControlSet\Services\PolicyAgent /v AssumeUDPEncapsulationContextOnSendRule /t REG_DWORD /d 0x2 /f

(2)另外,某些個別的 Windows 系統配置禁用了 IPsec 加密,此時也會導致連線失敗。要重新啟用它,可以執行以下命令,或者下載.reg檔案,管理員身份執行

REG ADD HKLM\SYSTEM\CurrentControlSet\Services\IPSec /v AssumeUDPEncapsulationContextOnSendRule /t REG_DWORD /d 0x2 /f

==重啟計算機後開始配置本地VPN連線==

Windows 10 and 8.x

  1. 右鍵單擊系統托盤中的無線/網路圖示。
  2. 選擇 開啟網路與共享中心
  3. 單擊 設定新的連線或網路
  4. 選擇 連線到工作區,然後單擊 下一步
  5. 單擊 使用我的Internet連線 (VPN)
  6. 在 Internet地址 欄位中輸入你的 VPN 伺服器 IP
  7. 在 目標名稱 欄位中輸入任意內容。單擊 建立
  8. 返回 網路與共享中心。單擊左側的 更改介面卡設定
  9. 右鍵單擊新建立的 VPN 連線,並選擇 屬性
  10. 單擊 安全 選項卡,從 VPN 型別 下拉選單中選擇 "使用 IPsec 的第 2 層隧道協議 (L2TP/IPSec)"。
  11. 單擊 允許使用這些協議。確保選中 "質詢握手身份驗證協議 (CHAP)" 複選框。
  12. 單擊 高階設定 按鈕。
  13. 單擊 使用預共享金鑰作身份驗證 並在 金鑰 欄位中輸入你的 VPN IPsec PSK
  14. 單擊 確定 關閉 高階設定
  15. 單擊 確定 儲存 VPN 連線的詳細資訊。