【原創】xl2tpd極簡配置部署
學習xl2tpd VPN時,網上搜到的教程上來就貼一堆不明所以的配置,照葫蘆畫瓢折騰成功後很快又忘了。
現在結合官方提供的說明文件,由簡入繁地一步步記錄下來,以加強鞏固。
環境
客戶端 192.168.0.207 CentOS 6.3
伺服器 192.168.0.213 CentOS 7.2
軟體
pppd
實現PPP會話的軟體,在l2tp VPN中,其資料包經由L2TP隧道傳輸,兩者結合即PPPoL2TP(Point-to-Point Protocol over L2TP),可類比PPPoE(Point-to-Point Protocol over Ethernet
客戶與伺服器都需要安裝pppd,下載原始碼解壓後執行:
./configure
make
sudo make install
通過原始碼安裝的執行檔案一般在/usr/local/sbin目錄下。
xl2tpd
https://github.com/xelerance/xl2tpd
構建L2TP隧道的軟體,L2TP隧道負責傳輸pppd生成的PPP資料包,一個xl2tpd程序可開啟多個pppd程序,對應多個PPP會話。xl2tpd與其啟動的pppd程序間通過偽終端(pseudo-tty)進行資料通訊,兩者關係可參考《Linux偽終端裝置及其在L2TP中的應用》一文。
客戶端與伺服器都需要安裝xl2tpd,下載原始碼解壓後執行:
make
sudo make install
通過原始碼安裝的執行檔案一般在/usr/local/sbin目錄下。
配置
伺服器
伺服器xl2tpd配置檔案:
/etc/xl2tpd/xl2tpd.conf
簡單配置如下:
[lns default] ip range = 172.16.0.1-172.16.0.254 local ip range = 172.17.0.1
LNS(L2TPNetworkServer)資訊為服務端的主要配置,LNS可以有多個,以 [lns xxx] 格式為名,[lns default] 為預設的LNS配置。
本次配置中LNS包含以下兩項資訊:
ip range,分配給L2TP隧道彼端(客戶端)的IP地址範圍,注意不能像PPTP那樣寫成172.16.0.1-254這樣的格式,起始地址和結束地址都要使用完整的IP描述。
local ip range,與彼端IP相對應的L2TP隧道本地IP地址範圍,注意這是一個範圍,可以配置成172.17.0.1-172.17.0.254,也可以僅僅配置一個IP。
伺服器pppd配置檔案:
/etc/ppp/chap-secrets,使用CHAP(Challenge Handshake Authentication Protocol,質詢握手認證協議)驗證就需要配置這個檔案。
# Secrets for authentication using CHAP
# client server secret IP addresses
test * 111111 *
上述配置共四列資訊,分別為:
client 允許通過驗證的使用者名稱。
server 為什麼服務提供驗證,若為pptpd則僅為pptp服務提供驗證,若為xl2tpd則僅為xl2tp服務提供驗證,若為星號則不區分。
secret 密碼,可以加上雙引號,“111111”。
IP address 限定前來連線的IP地址,星號表示不限制,若需要限制,可以配置成靜態IP(如192.168.1.5)或動態IP(如192.168.1.128/25)。
以#開頭的內容為註釋內容。
客戶端
客戶端xl2tpd配置檔案:
/etc/xl2tpd/xl2tpd.conf
[lac vpntest] lns = 192.168.1.213
LAC(L2TP Access Concentrator)為客戶端配置資訊,可以有多個LAC,以[lns xxx]格式為名。本次配置中只包含一項資訊:
lns服務端通訊地址
PPP撥號配置檔案:
/etc/ppp/peers/vpntest.xl2tpd
user 'ming' password '111111'
user 用於撥號驗證的使用者名稱
password 用於撥號驗證的密碼
使用者名稱與密碼要在服務端/etc/ppp/chap-secrets配置檔案存在。
注意:/etc/xl2tpd/xl2tpd.conf配置檔案中的[lac xxx]與/etc/ppp/peers/xxx.xl2tpd中的xxx要一致,這裡都是vpntest。可以配置多個LAC以對應不同的LNS服務,但要在/etc/ppp/peers目錄下為每個LAC建立對應的xxx.xl2tpd配置檔案。
測試
1)在客戶端和服務端的機器上分別執行xl2tpd命令,xl2tp服務會以後臺方式執行,在第一次執行前確認/var/run目錄是否存在,若/var下沒有run目錄,需要手動建立,否則xl2tp服務會啟動失敗,在/var/log/message中會有日誌提示)。
2)在客戶端機器上執行命令:echo 'c vpntest' > /var/run/xl2tpd/l2tp-control,xl2tpd從l2tp-control檔案中收到命令會建立ppp程序,如果成功在客戶端和服務端會各自生產一個pppX的虛擬網絡卡,如下圖所示:
客戶端:
服務端:
172.16.0.1和172.17.0.1是可以相互通訊的。
另外,只要相關配置存在,一個xl2tpd既可以作為LAC也可以作為LNS。