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
- 右鍵單擊系統托盤中的無線/網絡圖標。
- 選擇 打開網絡與共享中心。
- 單擊 設置新的連接或網絡。
- 選擇 連接到工作區,然後單擊 下一步。
- 單擊 使用我的Internet連接 (VPN)。
- 在 Internet地址 字段中輸入
你的 VPN 服務器 IP
。 - 在 目標名稱 字段中輸入任意內容。單擊 創建。
- 返回 網絡與共享中心。單擊左側的 更改適配器設置。
- 右鍵單擊新創建的 VPN 連接,並選擇 屬性。
- 單擊 安全 選項卡,從 VPN 類型 下拉菜單中選擇 "使用 IPsec 的第 2 層隧道協議 (L2TP/IPSec)"。
- 單擊 允許使用這些協議。確保選中 "質詢握手身份驗證協議 (CHAP)" 複選框。
- 單擊 高級設置 按鈕。
- 單擊 使用預共享密鑰作身份驗證 並在 密鑰 字段中輸入
你的 VPN IPsec PSK
。 - 單擊 確定 關閉 高級設置。
- 單擊 確定 保存 VPN 連接的詳細信息。