安裝 Docker
安裝最新版 Docker
wget -qO- get.docker.com | bash
查看版本
docker version
啟動服務
systemctl start docker
查看狀態
systemctl status docker
使用 Docker 安裝 L2TP
拉取鏡像
docker pull teddysun/l2tp
建立環境參數設定檔
vim /etc/l2tp.env
VPN_IPSEC_PSK=1234567890
VPN_USER=laurance
VPN_PASSWORD=lau888
VPN_PUBLIC_IP=XX.XX.XX.XX
VPN_L2TP_NET=192.168.18.0/24
VPN_L2TP_LOCAL=192.168.18.1
VPN_L2TP_REMOTE=192.168.18.10-192.168.18.250
VPN_XAUTH_NET=192.168.20.0/24
VPN_XAUTH_REMOTE=192.168.20.10-192.168.20.250
VPN_DNS1=8.8.8.8
VPN_DNS2=9.9.9.9
VPN_SHA2_TRUNCBUG=
參數解析
參數 | 參數代表意義 |
---|---|
VPN_IPSEC_PSK | 預共享密鑰 |
VPN_USER | 默認的登錄用戶名 |
VPN_PASSWORD | 默認的登錄用戶密碼 |
VPN_PUBLIC_IP | 指定公網 IP 地址,當你的 VPS 有多個公網 IP 時,可能需要手動指定一下 |
VPN_L2TP_NET | 內網 L2TP 網段範圍,默認為 192.168.18.0/24,一般此處留空即可 |
VPN_L2TP_LOCAL | 內網 L2TP 網關 IP,默認為 192.168.18.1,一般此處留空即可 |
VPN_L2TP_REMOTE | 內網 L2TP 網段分配給連接的 IP 段,默認為 192.168.18.10-192.168.18.250,一般此處留空即可 |
VPN_XAUTH_NET | 內網 XAUTH 網段範圍,默認為 192.168.20.0/24,一般此處留空即可 |
VPN_XAUTH_REMOTE | 內網 XAUTH 網段分配給連接的 IP 段,默認為 192.168.20.10-192.168.20.250,一般此處留空即可 |
VPN_DNS1 | 默認 DNS 服務器,8.8.8.8,一般此處留空即可 |
VPN_DNS2 | 默認 DNS 服務器,8.8.4.4,一般此處留空即可 |
Android 6 和 7 如果遇到連接問題,嘗試在 /etc/ipsec.conf 中設置 sha2-truncbug=yes (默認為 no)
可以在 /etc/l2tp.env 文件中添加 VPN_SHA2_TRUNCBUG=yes,然後重新創建 Docker 容器。
啟動容器
docker run -d --privileged -p 500:500/udp -p 4500:4500/udp --name l2tp --restart=always --env-file /etc/l2tp.env -v /lib/modules:/lib/modules teddysun/l2tp
查看啟動 LOG
docker logs l2tp
查看 ipsec status 輸出
docker exec -it l2tp ipsec status
管理 VPN 用户
列出所有 user & password
docker exec -it l2tp l2tpctl -l
新增 user
docker exec -it l2tp l2tpctl -a
刪除 user
docker exec -it l2tp l2tpctl -d
修改 user 密碼
docker exec -it l2tp l2tpctl -m
查看 libreswan 和 xl2tpd 版本
docker exec -it l2tp l2tpctl -v
Linux Libreswan 3.32 (netkey) on 3.10.0-1160.76.1.el7.x86_64
xl2tpd version: xl2tpd-1.3.15
Windows 10 下连接 L2TP VPN
修改 VPN 協議
Configure a L2TP/IPsec server behind a NAT-T device
win + R
輸入 regedit
路徑: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\PolicyAgent
新增一組機碼 >> DWORD
(32 位)值 >> AssumeUDPEncapsulationContextOnSendRule
>> 值設定為 2
(1 不會過)
PHONE 下连接 L2TP VPN
Android 版本小於或等於 7
時,建議選擇 IPSec Xauth PSK (Cisco IPsec)
模式連接
L2TP/IPSec 一鍵安裝腳本
腳本下載
wget -O StackScript.zip https://files.cnblogs.com/files/think8848/StackScript.zip
解壓並給予權限
unzip StackScript.zip
chmod 755 StackScript
執行腳本
/bin/bash -x StackScript
vim /etc/ipsec.secrets
# 建立預先拱享金鑰
vim /etc/ppp/chap-secrets
# 建立使用者及密碼
systemctl restart ipsec xl2tpd
# 重啟服務
ipsec verify
# 測試 ipsec 狀態 (沒有 failed 就算正常)
# 常用文件檔位置
/etc/ipsec.conf
/etc/ipsec.secrets
/etc/ppp/chap-secrets
/etc/xl2tpd/xl2tpd.conf
# 火牆規則
extif="eth0"
extlp="ppp0"
INNET="192.168.42.0/24"
iptables -A service -i $extif -p UDP --dport 1701 -j ACCEPT # PPTP
iptables -A service -i $extif -p UDP --dport 500 -j ACCEPT # IPSEC
iptables -A service -i $extif -p UDP --dport 4500 -j ACCEPT # XL2TP
iptables -A service -i $extif -p 50 -j ACCEPT # XL2TP
iptables -t nat -A POSTROUTING -o $extif -s $INNET -j MASQUERADE # 轉送VPN流量
iptables -t nat -A POSTROUTING -o $extlp -j MASQUERADE
指令說明
l2tp -a (Add a user) # 新增用戶
l2tp -d (Delete a user) # 刪除用戶
l2tp -l (List all users) # 列出所有用戶
l2tp -m (Modify a user password) # 修改現有用戶密碼
l2tp -h # 列出幫助訊息
ipsec status # 查看 IPSec 運行狀態
ipsec verify # 查看 IPSec 檢查結果
systemctl start|stop|restart|status ipsec # 啟動 IPSec
systemctl start|stop|restart xl2tpd # 啟動 L2TP