歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> Linux教程

如何在Ubuntu 11.10上連接L2TP VPN

要在家繼續項目的開發,但架設的GitLab只能校內訪問,更悲催的是學校架設的SSL VPN不支持Linux,好在想起學校以前架設的L2TP VPN,應該可以支持Linux,於是便一通谷歌百度,然而發現搜到的這些文章,要麼十分繁瑣,要麼無法配通,因此就寫了這篇博文,一則方便以後檢索,二則也能給有這方面需要的兄弟提供一個方便。

一、安裝XL2TPD

安裝xl2tpd很簡單,至少在Ubuntu上是這樣:

sudo apt-get install xl2tpd 二、配置XL2TPD

配置xl2tpd,需要修改它的配置文件(/etc/xl2tpd/xl2tpd.conf),如下所示:

sudo vi /etc/xl2tpd/xl2tpd.conf [global] port = 1701 access control = no [lac testvpn] lns = x.x.x.x ;您VPN服務器的IP地址或域名 redial = yes redial timeout = 15 max redials = 5 require chap = yes refuse pap = yes require authentication = yes name = [email protected] pppoptfile = /etc/ppp/options.l2tpd.testvpn ppp debug = no 其中比較關鍵的配置如下:

05行:[lac testvpn]是將VPN連接的名字設置為testvpn,您可以把它改成任何您想要的名字
06行:lns的內容填入您VPN服務器的IP地址或域名
10行:要求使用使用chap質詢握手認證協議
13行:name的內容需要填入您的用戶名
pppoptfile的內容則是您接下來要生成的選項文件名,具體創建過程如下:
sudo vi /etc/ppp/options.l2tpd.testvpn asyncmap 0 noauth crtscts lock hide-password modem netmask 255.255.255.0 proxyarp lcp-echo-interval 30 lcp-echo-failure 4 ipcp-accept-local ipcp-accept-remote noipx 然後再配置一下chap認證所需的用戶名和密碼即可:

sudo vi /etc/ppp/chap-secrets # Secrets for authentication using CHAP # client        server  secret                  IP addresses [email protected] *       mypassword        * 其中[email protected]是用戶名,它同xl2tp.conf配置文件中的name語句中的內容是一致的,而mypassword是該用戶使用的密碼。這樣就配置好了xl2tpd了。

三、連接VPN

配置好了xl2tpd之後,為了要讓它生效需要重啟該服務:

sudo /etc/init.d/xl2tpd restart 然後使用下列命令連接VPN:

sudo -u root -H sh -c "echo 'c wzuvpn' > /var/run/xl2tpd/l2tp-control" 四、接下來的工作:

上述命令使用之後,並沒有任何提示是否連接成功,為了檢查連接是否成功,就需要使用以下指令來查看:

ifconfig ... ppp0      Link encap:點對點協議             inet 地址:10.63.1.2  點對點:10.63.1.1  掩碼:255.255.255.255           UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  躍點數:1           接收數據包:4 錯誤:0 丟棄:0 過載:0 幀數:0           發送數據包:5 錯誤:0 丟棄:0 過載:0 載波:0           碰撞:0 發送隊列長度:3            接收字節:40 (40.0 B)  發送字節:61 (61.0 B) 如下所示,使用ifconfig命令之後,如果看到有ppp0,則說明該VPN連接成功,否則請查看xl2tpd是否正常啟動(這個常在重啟機器後出現)。

VPN連接成功之後,並不能正常工作,它還缺乏兩個關鍵的內容,一是到內網的路由,二是內網內部服務器的解析。比如我學校的服務器使用192.168.0.0/255.255.128.0這個網段,而內網地址分配則使用整個10網段,因此我將我家中的路由設置為192.168.254.0/24這個網段,這樣就避免了訪問家裡網絡的沖突:

sudo route add -net 192.168.0.0 netmask 255.255.128.0 dev ppp0 sudo route add -net 10.0.0.0 netmask 255.0.0.0 dev ppp0 上述兩句表明通過ppp0來訪問內網及內網服務器,這樣查看機器上的路由如下所示:

route 內核 IP 路由表 目標            網關            子網掩碼        標志  躍點   引用  使用 接口 default         dir-605         0.0.0.0         UG    0      0        0 eth0 10.0.0.0        *               255.0.0.0       U     0      0        0 ppp0 10.63.1.1       *               255.255.255.255 UH    0      0        0 ppp0 link-local      *               255.255.0.0     U     1000   0        0 eth0 192.168.0.0     *               255.255.128.0   U     0      0        0 ppp0 192.168.254.0   *               255.255.255.0   U     1      0        0 eth0 注意接口為ppp0的路由,千萬不要象有些文章中寫得那樣,使用下列語句:

sudo route del default sudo route add -net 0.0.0.0 netmask 0.0.0.0 dev ppp0 想象一下,01行一執行,默認路由被刪除,VPN連接就不可能不斷了。

那麼對內網服務器的解析如何來處理呢?如果只需要訪問幾個地址的話,可以直接在/etc/hosts文件中直接解析,如果需要訪問很多地址的話,可以修改/etc/resolv.conf文件中的DNS服務器,在頂部添加新的內網DNS服務器即可。

五、斷開VPN連接

斷開VPN連接可以用以下語句來實現:

sudo -u root -H sh -c "echo 'd wzuvpn' > /var/run/xl2tpd/l2tp-control" 這樣整個L2TP VPN的連接配置就介紹完了。

當然上述操作最好可以使用腳本來完成,由於沒幾句語句,所以就偷懶不寫了,什麼時候勤快了或更懶了,興許會寫出來,到時再更新吧!當然如果有兄弟看不下去,幫我寫了那就最為完美了。一笑!

另:如果有部分服務連接不上的話,可以修改/etc/ppp/options.l2tpd.testvpn文件,通過添加mtu 1400來解決(當然1400這個值比較保守,要精確大小的話,可以通過分析該服務的包來計算精確值,這個比較復雜在這裡就不詳細說明了。

Copyright © Linux教程網 All Rights Reserved