【原創】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(L2TP Network Server)信息為服務端的主要配置,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。

xl2tpd.conf文件中以分號";"作為注釋開頭。

客戶端

客戶端xl2tpd配置文件:

/etc/xl2tpd/xl2tpd.conf

[lac vpntest]
lns = 192.168.1.213

LAC(L2TP Access Concentrator)為客戶端配置信息,格式為[lac xxx] ,xxx即LAC的名字,可以配置多個LAC信息。若是改動了LAC的名字,需要重啟xl2tpd服務方能生效。

本次的LAC配置中只包含一項信息:lns, 即該LAC所連接LNS的IP地址或域名,不同的LAC能連接不同的LNS

測試

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是可以相互通信的。

關閉客戶端的命令為: echo 'd vpntest' > /var/run/xl2tpd/l2tp-control

'c vpntest'與'd vpntest'中的vpntest即配置文件/etc/xl2tpd/xl2tpd.conf中[lac xxx]相應的LAC名xxx

另外,只要相關配置存在,一個xl2tpd既可以作為LAC也可以作為LNS。

取消數據壓縮

上述配置中,PPP協議默認對數據進行了壓縮,不利於捕包觀察和調試,可通過如下方式取消壓縮:

方法一,通過服務器配置取消壓縮:

1)在服務器編輯pppd的配置文件/etc/ppp/options.xl2tpd,增加一行“noccp”;

#不要對數據進行壓縮
noccp

pppd的配置文件中以"#"作為注釋開頭。

2)在服務器編輯xl2tpd的配置文件/etc/xl2tpd/xl2tpd.conf,增加pppd的配置文件路徑:

[lns default]
ip range = 172.16.0.1-172.16.0.254
local ip range = 172.17.0.1
;pppd配置文件路徑
pppoptfile = /etc/ppp/options.xl2tpd

方法二,通過客戶端配置取消壓縮:

編輯客戶端的pppd配置文件/etc/ppp/peers/vpntest.xl2tpd,增加一行"noccp",然后在/etc/xl2tpd/xl2tpd.conf中相應的LAC配置節下增加vpntest.xl2tpd的路徑全名:

pppoptfile = /etc/ppp/peers/vpntest.xl2tpd

(這里的vpntest.xl2tpd與LNS的options.xl2tpd性質一樣都是pppd的配置文件,不過從網上的諸多教程看,LAC的pppd配置文件一般存放於/etc/ppp/peers目錄下,而LNS的pppd配置文件一般存放於/etc/ppp目錄下)

為tty設備加鎖

pppd使用tty設備與xl2tpd進行數據通信,tty默認沒有被加鎖。

在pppd的配置文件中(LNS為/etc/ppp/options.xl2tpd,LNC為/etcppp/peers/vpntest.xl2tpd),添加如下配置:

#為tty加鎖
lock

如此一來,當pppd打開一個tty設備后,就會生成一個UUCP類型的文件鎖以阻止其他進程訪問該設備。

更多參考

在安裝xl2tpd和pppd的系統中,可通過查閱man手冊來獲取更多的參考信息:

man xl2tpd,介紹xl2tpd程序的使用

man xl2tpd.conf,介紹xl2tpd.conf配置文件

man pppd,介紹pppd程序的使用,內容比較多,其中的OPTIONS各個選項可以寫入配置文件,然后在xl2tpd.conf中使用pppoptfile指明路徑名。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM