RouterOS是MikroTik推出的一種路由操作系統(tǒng),可以在基于x86構(gòu)架的PC上安裝RouterOS,從而實(shí)現(xiàn)路由功能。RouterOS是基于Linux2.6內(nèi)核開發(fā)的,所占資源并不高,一臺(tái)內(nèi)存配置為64MB,硬盤容量為512MB的PC就足以運(yùn)行該系統(tǒng),也就是說,在一臺(tái)淘汰下來的服務(wù)器上安裝RouterOS,這臺(tái)服務(wù)器就變身為高端路由器了。
如果沒有閑置的電腦,也可以用VMware等虛擬化軟件,創(chuàng)建一臺(tái)虛擬機(jī),在虛擬機(jī)上安裝RouterOS,用虛擬機(jī)當(dāng)做路由器。
VPN(虛擬專用網(wǎng)絡(luò))是在公用網(wǎng)絡(luò)上建立專用網(wǎng)絡(luò),是通過在互聯(lián)網(wǎng)或其他公共網(wǎng)絡(luò)上建立的臨時(shí)的、安全的連接,這個(gè)連接的實(shí)質(zhì)是用加密技術(shù)封裝出一條穿過混亂的公用網(wǎng)絡(luò)的安全、穩(wěn)定的隧道。這種加密的隧道技術(shù)主要有PPTP、L2TP、MPLS、IPSEC VPN、SSL VPN、SOCK V5等幾種類型,本文就是借助MikroTik RouterOS這款路由操作系統(tǒng)搭建PPTP協(xié)議的VPN服務(wù)器。
為了簡化操作,此處只介紹用RouterOS搭建PPTP服務(wù)器的全過程,不涉及路由等問題,因此,安裝RouterOS的電腦只需要一塊網(wǎng)卡,并能連通互聯(lián)網(wǎng)。
圖1 網(wǎng)絡(luò)拓?fù)鋱D
下面先介紹一下本次實(shí)驗(yàn)的拓?fù)浣Y(jié)構(gòu)圖,如圖1所示。
圖中的服務(wù)器代表某單位的內(nèi)部應(yīng)用,該單位的內(nèi)部地址段為 :172.16.1.0/24,網(wǎng) 關(guān) 為172.16.1.254;
RouterOS是安裝在該單位某臺(tái)物理服務(wù)器上,該服務(wù)器局域網(wǎng)地址配置為172.16.1.73,外網(wǎng)映射地址為59.56.72.12。
為PPTP客戶端規(guī)劃的地址范圍為:172.16.1.48-172.16.1.240。
安裝好RouterOS后,為路由操作系統(tǒng)配置好IP地址,具體配置過程不在本文討論之列。在本例中,路由操作系統(tǒng)的IP地址/子網(wǎng)掩碼和網(wǎng)關(guān)分別是:172.16.1.73/255.255.2 55.0,172.16.1.254。
用WinBox連 接RouteOS路由器,連接方法很簡單,運(yùn)行WinBox后, 在“Connext To” 文本框輸入路由器的IP地址:172.16.1.73,分 別 在“l(fā)ogin”和“Password”文本框中輸入路由器的管理員賬戶名和密碼,如果是新安裝的路由操作系統(tǒng),系統(tǒng)管理員賬號(hào)是“admin”,默認(rèn)密碼為空。
圖2 Interface List窗口
注意:如果所安裝的路由操作系統(tǒng)版本較低,用高版本的WinBox連接路由器會(huì)報(bào)“could not fetch index”之類的錯(cuò)誤。如果出現(xiàn)這個(gè)錯(cuò)誤,可以選擇低一些版本的WinBox連接路由器。上只有一塊網(wǎng)卡,此時(shí)接口列表中只有一個(gè)名為“ether1”(此名可以更改)的以太網(wǎng)接口。我們要搭建PPTP服務(wù)器,首先應(yīng)添加一個(gè)類型為“PPTP Server”的接口,單擊“Interface List”工具欄上的“+”圖標(biāo)按鈕,在下拉菜單中“PPTP Server Binding”,如 圖2所示。
(3) 出 現(xiàn)“New Interface”(新 接 口)窗口后,默認(rèn)的接口名稱是“pptp-in1”,本例就使用這個(gè)默認(rèn)名稱,單擊“OK”按鈕創(chuàng)建新接口。
(1)登錄到路由器后,單擊左側(cè)菜單上的“Interfaces”(接口)。
(2) 彈 出“Interface List”窗口后,如果服務(wù)器
(1)依次單擊WinBox窗口左側(cè)“IP” 菜單→“Pool”(池)。
(2)出現(xiàn)“IP Pool”(IP池)窗口后,單擊窗口工具欄“+”圖標(biāo)按鈕。
(3)出現(xiàn)“New IP Pool”窗 口 后,在“Name”文 本框中為地址池取一個(gè)名稱。本例為“vpntool”,在“Addresses”文本框輸入為PPTP客戶端分配的地址,此處的地址可以是地址范圍,如本例中的“172.16.1.50-172.16.1.240”,也可以是具體地址,如果要添加或刪除多個(gè)地址或多個(gè)地址段,單擊地址右側(cè)的“▼”(添加)或“▲”(刪除)或按鈕。
PPTP是一種點(diǎn)對(duì)點(diǎn)隧道協(xié)議,和PPP(點(diǎn)到點(diǎn)協(xié)議)一樣,位于OSI模型的第二層數(shù)據(jù)鏈路層。PPTP使用TCP連接的創(chuàng)建,維護(hù),與終止隧道,并使用GRE將PPP幀封裝成隧道數(shù)據(jù),被封裝后的PPP幀的有效載荷可以被加密或者壓縮或者同時(shí)被加密與壓縮。
在RouterOS路由器中,PPTP也是PPP點(diǎn)到點(diǎn)協(xié)議中的一種,因此,PPTP相關(guān)配置放在了RouterOS的PPP功能菜單上。
(1)單擊WinBox窗口左側(cè)“PPP” 菜單。
圖3 創(chuàng)建地址池
(2)出現(xiàn)“PPP”窗口后,單擊“Profile”(模板)選項(xiàng)卡,在“ProFile”選項(xiàng)卡下單擊“+”圖標(biāo)按鈕,新建一個(gè)模板。
(3)出現(xiàn)“PPP Profile”窗口后,在“Name”文本框?yàn)樾履0迦∫粋€(gè)名稱,本例 為“vpnprofile”。 在“Local Address”文本框輸入RouterOS路由器的地址,本例為“172.16.1.73”,單擊“Remote Address”右側(cè)下拉地址列表按鈕,選擇前面創(chuàng)建的地址池,本例前面創(chuàng)建的地址池是“vpnpool”,如圖3所示。
(4) PPTP客戶端操作系統(tǒng)無論是桌面Windows操作系統(tǒng)還是手機(jī)的Android操作系統(tǒng),都要求VPN隧道是加密的,因此,需要將PPP模板中有關(guān)協(xié)議的配置更改為“需要加密”。在“PPP Profile”窗口單擊“Protocols”(協(xié)議)選項(xiàng)卡,將“Use Encryption”的單選按鈕中勾選“required”(需要),其他按默認(rèn)值配置即可。
常見錯(cuò)誤提示:有很多在Linux操作系統(tǒng)上連接PPTP服務(wù)器或用RouterOS自帶的PPTP客戶端(需要?jiǎng)?chuàng)建)直接連接PPTP服務(wù)器,都能成功連接,但在Windows上或在手機(jī)上不能連接PPTP服務(wù)器主要原因就是沒有勾選“Use Encryption”下 的“required”。
(1)在“PPP”窗口單擊“Secrets”選項(xiàng)卡,新建一個(gè)VPN賬戶。
(2) 出 現(xiàn)“New PPP Secret”窗 口 后,分 別 在“Name” 和“Password” 文本框中指定新賬戶的賬戶名稱和密碼,在本例中,新建VPN賬戶的用戶名為“vpntest01”,密 碼 是“123456”。在“Profile”下拉列表中選擇剛配置的PPP模板,在本例中,新建的模板文件是“vpnprofile”。如果只想讓該用戶登錄PPTP服務(wù)器,在“Service”下拉菜單中選擇“PPTP”即可,在本例中,允許該用戶訪問所有PPP服務(wù),故使用默認(rèn)值“any”。
(1) 在“PPP” 窗 口“Interface”下,單擊“PPTP Server”按鈕。
(2)勾選“Enabled”(允許)。開啟PPTP服務(wù)。
(3) 出現(xiàn)“PPTP Server”窗 口 后, 在“Default Profile”下拉菜單中選擇剛配置的PPP模板,在本例中,剛配置的模板是“vpnprofile”。
在“Authentication”(身份認(rèn)證)勾選PPTP身份認(rèn)證方式,“PAP”和“CHAP”是PPP支持的兩種授權(quán)認(rèn)證方式,兩種方式都需要賬號(hào)和密碼,因此在配置PPTP客戶端時(shí),也需要PPTP賬號(hào)和密碼。為了讓大家在創(chuàng)建VPN連接時(shí)對(duì)認(rèn)證方式有更清晰的認(rèn)識(shí),少出錯(cuò),下面對(duì)RouterOS PPTP支持的4種認(rèn)證方式做個(gè)簡要介紹。
PAP(密碼驗(yàn)證協(xié)議)是兩次握手協(xié)議,認(rèn)證過程非常簡單。PAP只在鏈路建立階段進(jìn)行身份認(rèn)證,一旦鏈路建立成功將不再進(jìn)行認(rèn)證檢測。PAP使用明文格式發(fā)送用戶名和密碼,發(fā)起方為PPTP客戶端,可以做無限次的嘗試(容易暴力破解),直到身份驗(yàn)證過程結(jié)束。在實(shí)際應(yīng)用中,如果應(yīng)用環(huán)境對(duì)安全性要求不高,可以采用PAP認(rèn)證建立PPP連接。
CHAP(詢問握手認(rèn)證協(xié)議)通過三次握手周期性的校驗(yàn)對(duì)端的身份。首先,PPTP客戶端發(fā)送挑戰(zhàn)信息,PPTP服務(wù)器接收到挑戰(zhàn)信息后,根據(jù)PPTP客戶端提供的用戶名到自己本地的數(shù)據(jù)庫中查找對(duì)應(yīng)的密碼(如果沒有設(shè)密碼就用默認(rèn)的密碼),查到密碼再結(jié)合PPTP客戶端發(fā)來的id和隨機(jī)數(shù)據(jù),根據(jù)MD5算法算出一個(gè)Hash值。其次,PPTP客戶端回復(fù)認(rèn)證請(qǐng)求,PPTP服務(wù)器處理挑戰(zhàn)的響應(yīng)信息,根據(jù)PPTP客戶端發(fā)來的認(rèn)證用戶名,PPTP服務(wù)器在本地?cái)?shù)據(jù)庫中查找PPTP客戶端對(duì)應(yīng)的密碼(口令)結(jié)合id找到先前保存的隨機(jī)數(shù)據(jù)和id根據(jù)MD5算法算出一個(gè)Hash值,與PPTP客戶端得到的Hash值做比較,若一致,則認(rèn)證通過,如果不一致,則認(rèn)證不通過。最后,PPTP服務(wù)器告知PPTP客戶端認(rèn)證是否通過。
MSCHAP(微軟挑戰(zhàn)握手認(rèn)證協(xié)議)認(rèn)證過程與CHAP類似,微軟開發(fā)MSCHAP是為了對(duì)遠(yuǎn)程Windows工作站進(jìn)行身份驗(yàn)證,它在響應(yīng)時(shí)使用質(zhì)詢響應(yīng)機(jī)制和單向加密認(rèn)證。MS-CHAP也是三次握手協(xié)議,除加密算法不同外,和CHAP相比,MSCHAP支持重傳機(jī)制。在PPTP客戶端認(rèn)證失敗的情況下,如果PPTP服務(wù)器允許PPTP客戶端進(jìn)行重傳,PPTP客戶端會(huì)將認(rèn)證相關(guān)信息重新發(fā)回,PPTP服務(wù)器根據(jù)此信息重新對(duì)PPTP客戶端進(jìn)行認(rèn)證。PPTP服務(wù)器最多允許PPTP客戶端重傳3次。
MSCHAP2(微軟挑戰(zhàn)握手認(rèn)證協(xié)議2)是MSCHAP的升級(jí)版本,除加密算法有變化外,還有其他兩個(gè)重要變化,一是MSCHAP2通過報(bào)文捎帶的方式實(shí)現(xiàn)了PPTP服務(wù)器和PPTP客戶端的雙向認(rèn)證;二是MSCHAP2支持修改密碼機(jī)制。PPTP客戶端由于密碼過期導(dǎo)致認(rèn)證失敗時(shí),PPTP客戶端會(huì)將用戶輸入的新密碼信息發(fā)回PPTP服務(wù)器,PPTP服務(wù)器根據(jù)新密碼信息重新進(jìn)行認(rèn)證。
(4) 綜 上 所 述,在“PPTP Server”窗 口 設(shè) 置“Authentication”身份認(rèn)證時(shí),可視PPTP客戶端而定。Windows XP以上操作系統(tǒng)都支持上述4種認(rèn)證方式,如果PPTP客戶端操作系統(tǒng)都是Windows操作系統(tǒng),只勾選“mschap2”即可,如圖4所示。
圖4 窗口設(shè)置
很多單位(或個(gè)人)架設(shè)自己的VPN服務(wù)器后,在使用“VPN連接”連接到單位局域網(wǎng)后,經(jīng)常出現(xiàn)無法上網(wǎng)(無法連接互聯(lián)網(wǎng))的現(xiàn)象,這是因?yàn)橥ㄟ^VPN連接到單位網(wǎng)絡(luò)后,該電腦就成為單位內(nèi)部的一臺(tái)電腦。包括PPTP服務(wù)器在內(nèi)的,所有PPTP客戶端要共享一個(gè)IP地址上網(wǎng),就必須進(jìn)行網(wǎng)絡(luò)地址轉(zhuǎn)換。用RouteOS搭建PPTP服務(wù)器,可以通過IP偽裝來實(shí)現(xiàn)共享上網(wǎng)。下面是共享上網(wǎng)的實(shí)現(xiàn)過程:
(1)依次單擊WinBox窗 口 左 側(cè)“IP” 菜 單→“Firewall”(防火墻),添加防火墻規(guī)則。
(2)出現(xiàn)“Firewall”窗口后,單擊“NAT”(網(wǎng)絡(luò)地址轉(zhuǎn)換)選項(xiàng)卡,在“NAT”選項(xiàng)卡下單擊“+”圖標(biāo)按鈕。
(3) 出 現(xiàn)“New NAT Rule”窗口后,在“Chain”(鏈路)下拉列表中選默認(rèn) 的“srcnat”(源 地 址轉(zhuǎn)換),在“Src Address”(源地址)文本框輸入單位網(wǎng)絡(luò)的IP地址段。在本例中,某單位的IP地址段是“172.16.1.0/24”。在“Out.Interface”(輸出接口)下拉列表中選擇RouterOS路由器上連接外網(wǎng)的網(wǎng)絡(luò)接口。在本例中,安裝RouteOS路由器的服務(wù)器上只有一塊網(wǎng)卡,因此,除前面創(chuàng)建的接口“pptp-in1”外,只有“ether1”這樣一個(gè)網(wǎng)絡(luò)接口,故此處選“ether1”。
(4)在“New NAT Rule”窗口單擊“Action”選項(xiàng)卡,在“Action”下拉菜單中選擇“masquerade”(偽裝),即采用IP偽裝方式實(shí)現(xiàn)共享上網(wǎng)。
至此,在RouterOS路由器上的所有參數(shù)全部設(shè)置完成,下一步就是用一臺(tái)電腦嘗試創(chuàng)建VPN連接,以測試所搭建的PPTP服務(wù)器能否正常工作。
在Windows上創(chuàng)建VPN連接大致相同,本例是在Windows 10上創(chuàng)建 VPN,首先通過控制面板或其他方式進(jìn)入“網(wǎng)絡(luò)和共享中心”,如果使用控制面板,具體路徑是“控制面板”→“網(wǎng)絡(luò)和internet” →“網(wǎng)絡(luò)和共享中心”。
1.進(jìn)入“網(wǎng)絡(luò)和共享中心”后單擊“設(shè)置新的連接或網(wǎng)絡(luò)”。
2.出現(xiàn)“設(shè)置連接或網(wǎng)絡(luò)”窗口后,單擊“連接到工作區(qū)”。
3.出現(xiàn)“連接到工作區(qū)”窗口后,單擊“使用我的Internet連接(VPN)”。
4.出現(xiàn)“鍵入要連接的Internet地址”窗口后,在地址欄輸入映射RouterOS的外網(wǎng)地址。在本例中,RouterOS的內(nèi)網(wǎng)地址配置是172.16.1.73,外網(wǎng)映射地址為59.56.72.12,此處輸入地址“59.56.71.12”。 在“目標(biāo)名稱”文本框中為新建的VPN連接取一個(gè)名字。在本例中,使用的是“VPN連接”。
創(chuàng)建好VPN連接后,就可以在“控制面板”→“網(wǎng)絡(luò)和 Internet”→“網(wǎng)絡(luò)連接”找到新創(chuàng)建的VPN連接“VPN連接”。雙擊此連接即可將本地PC通過VPN隧道連接到單位的局域網(wǎng),首次使用VPN連接,要求輸入用戶名和密碼。
在本例中,前面為已為PPP用戶創(chuàng)建了一個(gè)名為“vpntest01”的用戶,密碼是“123456”,用該賬號(hào)和密碼連接到單位的PPTP服務(wù)器后,就可以訪問單位內(nèi)部的網(wǎng)絡(luò)和應(yīng)用了。
1.驗(yàn)證方式不一致引起的故障
筆者在創(chuàng)建VPN連接時(shí),有連接失敗的經(jīng)歷,筆者分別在Windows XP、Windows 7及Windows 10上都做過嘗試,經(jīng)檢查,發(fā)現(xiàn)所創(chuàng)建VPN連接的身份驗(yàn)證方式和PPTP服務(wù)器提供的身份驗(yàn)證方式不一致,從而出現(xiàn)連接失敗的現(xiàn)象,解決方法如下:
(1) 通 過“控 制面 板” →“網(wǎng) 絡(luò) 和Interne”→“網(wǎng)絡(luò)連接”,打開網(wǎng)絡(luò)連接窗口。
(2)右擊新創(chuàng)建的VPN連接“VPN連接”,在右鍵菜單中選擇“屬性”。
(3)出現(xiàn)“VPN連接”屬性窗口后,單擊“安全”選項(xiàng)卡,在“身份驗(yàn)證”攔勾選“允許使用這些協(xié)議”,然后勾選在配置PPTP Server時(shí)所提供的驗(yàn)證方式,如mschap2。
2.在單位內(nèi)部嘗試VPN連接引起的故障
筆者搭建好PPTP服務(wù)器后,在單位內(nèi)找了一臺(tái)PC創(chuàng)建VPN連接,急于測試所搭建VPN服務(wù)器,結(jié)果出現(xiàn)連接不上VPN服務(wù)器的故障,如果用RouteOS自帶的PPTP客戶端連接VPN服務(wù)器,能連接成功。
如果要在單位測試所搭建的PPTP服務(wù)器是否成功,可以開啟手機(jī)熱點(diǎn),當(dāng)PC連上手機(jī)熱點(diǎn)后,再嘗試VPN連接。當(dāng)然,在局域網(wǎng)內(nèi)部也是可以使用VPN的,但需要做相應(yīng)的設(shè)置。
3.防火墻禁止使用VPN引起的故障
如何判斷是防火墻還是VPN連接本身的故障,先開啟手機(jī)熱點(diǎn),當(dāng)PC連接到手機(jī)熱點(diǎn)后再進(jìn)行VPN連接,或者在手機(jī)上嘗試VPN連接即可。