看板 Knuckles_note
作者 標題 [CentOS] 安裝 L2TP/IPsec VPN
時間 2014年06月26日 Thu. PM 01:27:47
安裝環境: Linux CentOS 6
參考: http://atifans.net/articles/setup-l2tp-ipsec-vpn-on-centos/
需先安裝 EPEL repo (參考: http://disp.cc/b/11-6w1m)
安裝 strongswan xl2tpd ppp
$yum install strongswan xl2tpd ppp
修改 /etc/sysctl.conf
將 net.ipv4.ip_forward = 0
改成 net.ipv4.ip_forward = 1
使修改生效
$ sysctl -p
修改防火牆設定
# VPN L2TP
iptables -A INPUT -p udp --dport 500 -j ACCEPT # IKE
iptables -A INPUT -p udp --dport 4500 -j ACCEPT # NAT-T
iptables -A INPUT -p udp -m policy --dir in --pol ipsec -m udp --dport 1701 -j ACCEPT # 強制l2tp透過ipsec存取
#注意是192.168.1.0,不是192.168.0.0
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE
iptables -A INPUT -p udp --dport 500 -j ACCEPT # IKE
iptables -A INPUT -p udp --dport 4500 -j ACCEPT # NAT-T
iptables -A INPUT -p udp -m policy --dir in --pol ipsec -m udp --dport 1701 -j ACCEPT # 強制l2tp透過ipsec存取
#注意是192.168.1.0,不是192.168.0.0
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE
修改 IPsec 設定
$ vim /etc/strongswan/ipsec.conf
加上:
conn %default
ikelifetime=60m
keylife=20m
rekeymargin=3m
keyingtries=1
conn l2tp
keyexchange=ikev1 # IKE版本
left=xxx.xxx.xxx.xxx # 改成自己server的IP位址
leftsubnet=0.0.0.0/0
leftprotoport=17/1701 # l2tp udp流量
authby=secret # PSK驗證
leftfirewall=no # 不要讓strongswan更改防火牆
right=%any # 任意IP
rightprotoport=17/%any # 任意port udp流量
type=transport # ipsec transport mode
auto=add
ikelifetime=60m
keylife=20m
rekeymargin=3m
keyingtries=1
conn l2tp
keyexchange=ikev1 # IKE版本
left=xxx.xxx.xxx.xxx # 改成自己server的IP位址
leftsubnet=0.0.0.0/0
leftprotoport=17/1701 # l2tp udp流量
authby=secret # PSK驗證
leftfirewall=no # 不要讓strongswan更改防火牆
right=%any # 任意IP
rightprotoport=17/%any # 任意port udp流量
type=transport # ipsec transport mode
auto=add
$ vim /etc/strongswan/ipsec.secrets
# ipsec.secrets - strongSwan IPsec secrets file
: PSK "A long preshared key for ipsec"
將 A long preshared key for ipsec: PSK "A long preshared key for ipsec"
改成自訂的字串當作金鑰
$ vim /etc/xl2tpd/xl2tpd.conf
[global]
;改成自己server的IP位址
listen-addr = xxx.xxx.xxx.xxx
[lns default]
ip range = 192.168.1.128-192.168.1.254
local ip = 192.168.1.99
require chap = yes
refuse pap = yes
require authentication = yes
name = LinuxVPNserver
ppp debug = yes
pppoptfile = /etc/ppp/options.xl2tpd
length bit = yes
;改成自己server的IP位址
listen-addr = xxx.xxx.xxx.xxx
[lns default]
ip range = 192.168.1.128-192.168.1.254
local ip = 192.168.1.99
require chap = yes
refuse pap = yes
require authentication = yes
name = LinuxVPNserver
ppp debug = yes
pppoptfile = /etc/ppp/options.xl2tpd
length bit = yes
$ vim /etc/ppp/options.xl2tpd
# mtu 和 mru 改成 1200
mtu 1200
mru 1200
# 再後面加上一行 login
login
mtu 1200
mru 1200
# 再後面加上一行 login
login
設定帳號密碼為 name/password
$ vim /etc/ppp/chap-secrets
# Secrets for authentication using CHAP
# client server secret IP addresses
name LinuxVPNserver password *
name 和 password 改為想要使用的帳號密碼# client server secret IP addresses
name LinuxVPNserver password *
啟動
$ service strongswan start
$ service xl2tpd start
已啟動過的話要重新啟動
$ service strongswan restart
$ service xl2tpd restart
設為開機自動執行
$ chkconfig strongswan on
$ chkconfig xl2tpd on
===============
client 端的設定
===============
在 WinXP
「控制台」/「網路連線」/「建立一個新連線」進入新增連線精靈,點下一步
選擇「連線到我工作的地方的網路」,下一步
選擇「虛擬私人網路連線」,下一步
公司名稱,幫這個隨意取個名稱,例如 myVPN,下一步
選「不要撥接起始連線」,下一步
輸入主機名稱或IP位址,下一步
勾選「將這個連線的捷徑加到我的桌面上」,完成
執行桌面上產生的「myVPN」,輸入帳號密碼
點一下內容
![[圖]](http://knuckles.disp.cc/pic/pick/2014062634_1.png)
在安全性,不要勾「要求資料加密」,點一下「IPsec 設定」
![[圖]](http://knuckles.disp.cc/pic/pick/2014062650_4.png)
輸入設定的金鑰字串
![[圖]](http://knuckles.disp.cc/pic/pick/2014062636_3.png)
在 Win10
在控制台/網路連線,VPN連線的內容,要把「允許這些通訊協定」都打勾
![[圖]](https://i4.disp.cc/u/21/3887a6e.png)
以系統管理員開啟命令提示字元,輸入 netsh winsock reset netsh winhttp reset proxy
在 iOS 上的話
新增一個 VPN 連線,選擇使用 L2TP
描述就隨意幫這個連線取個名字
接著輸入帳號、密碼、金鑰
![[圖]](http://knuckles.disp.cc/pic/pick/S__958470.jpg)
在 Android 上的話
在VPN設定新增一個VPN連線
名稱隨意輸入
類型選「L2TP/IPSec PSK」
輸入位址
接著的 L2TP安全 和 IPSec識別碼 不用輸入
接著輸入金鑰字串
儲存
點選建立好的連線後輸入帳號密碼
--
※ 作者: Knuckles 時間: 2014-06-26 13:27:47
※ 編輯: Knuckles 時間: 2016-09-22 13:30:50
參考 https://github.com/hwdsl2/setup-ipsec-vpn/issues/336
在 Linux kernel 4.15.x 會造成 xl2tpd 無法啟動
出現像這樣的錯誤訊息:
udp_xmit failed to xxx.xxx.xxx.xxx:xxxx with err=-1:No such device
解決方法,在 Linode 上可以改用別的 Linux kernel 版本來開機,例如 4.14.19
![[圖]](https://i.imgur.com/CWwxF70.png)
※ 編輯: Knuckles 時間: 2021-11-23 04:01:19 (新加坡)
在CentOS7執行 xl2tpd 出現錯誤,用 systemctl status xl2ptd 查看出現
Process: 24228 ExecStartPre=/sbin/modprobe -q l2tp_ppp (code=exited, status=1/FAILURE)
修改 /usr/lib/systemd/system/xl2tpd.service
將 ExecStartPre=/sbin/modprobe -q l2tp_ppp 這行註解掉
重啟 xl2tpd
# systemctl daemon-reload
# systemctl start xl2tpd
※ 編輯: Knuckles 時間: 2021-12-24 00:44:44 (台灣)
※ 看板: KnucklesNote 文章推薦值: 0 目前人氣: 0 累積人氣: 2264
回列表(←)
分享