顯示廣告
隱藏 ✕
看板 Knuckles_note
作者 Knuckles (站長 那克斯)
標題 [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

修改 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

$ vim /etc/strongswan/ipsec.secrets
# ipsec.secrets - strongSwan IPsec secrets file
: PSK "A long preshared key for ipsec"
將 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

$ vim /etc/ppp/options.xl2tpd
# mtu 和 mru 改成 1200
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 改為想要使用的帳號密碼

啟動
$ service strongswan start
$ service xl2tpd start

已啟動過的話要重新啟動
$ service strongswan restart
$ service xl2tpd restart


設為開機自動執行
$ chkconfig strongswan on
$ chkconfig xl2tpd on


===============
client 端的設定
===============

在 WinXP

「控制台」/「網路連線」/「建立一個新連線」進入新增連線精靈,點下一步

選擇「連線到我工作的地方的網路」,下一步

選擇「虛擬私人網路連線」,下一步

公司名稱,幫這個隨意取個名稱,例如 myVPN,下一步

選「不要撥接起始連線」,下一步

輸入主機名稱或IP位址,下一步

勾選「將這個連線的捷徑加到我的桌面上」,完成

執行桌面上產生的「myVPN」,輸入帳號密碼

點一下內容
[圖]
 

在安全性,不要勾「要求資料加密」,點一下「IPsec 設定」
[圖]
 

輸入設定的金鑰字串
[圖]
 

在 Win10

在控制台/網路連線,VPN連線的內容,要把「允許這些通訊協定」都打勾
[圖]


以系統管理員開啟命令提示字元,輸入 netsh winsock reset netsh winhttp reset proxy


在 iOS 上的話

新增一個 VPN 連線,選擇使用 L2TP
描述就隨意幫這個連線取個名字
接著輸入帳號、密碼、金鑰
[圖]
 


在 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
[圖]

※ 編輯: 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 
分享網址: 複製 已複製
r)回覆 e)編輯 d)刪除 M)收藏 ^x)轉錄 同主題: =)首篇 [)上篇 ])下篇