1. 程式人生 > 實用技巧 >【原創】xl2tpd極簡配置部署

【原創】xl2tpd極簡配置部署

學習xl2tpd VPN時,網上搜到的教程上來就貼一堆不明所以的配置,照葫蘆畫瓢折騰成功後很快又忘了。

現在結合官方提供的說明文件,由簡入繁地一步步記錄下來,以加強鞏固。

環境

客戶端 192.168.0.207 CentOS 6.3

伺服器 192.168.0.213 CentOS 7.2

軟體

pppd

https://ppp.samba.org/

實現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。