1. 程式人生 > >N2N VPN伺服器的搭建

N2N VPN伺服器的搭建

               

2008年,ntop的作者Luca Deri開始研究p2p VPN,他一方面看到公眾對p2p VPN有著強烈的需求,另一方面又不滿足已有產品的現狀,於是n2n誕生了。

如上圖所示,n2n是一個二層架構的VPN網路,其中super node提供場所,讓兩個位於NAT/防火牆之後的edge node進行會面,一旦雙方完成首次握手,剩下的資料流就之發生在兩個edge node之間,如果有一方的NAT屬於對稱型(symmetrical),super node則還需繼續為雙方提供資料包的轉發;edge node負責資料流的加解密,原理很簡單。

對於一個VPN而言,主要涉及封裝和加解密兩個步驟,edge node使用UDP協議進行封裝,目的是為了更好的相容防火牆的策略,因為很多防火牆禁用了非TCP/UDP協議禁用。加密演算法則採用了twofish,好處開源、簡便,處理速度快。
為了降低設計難度,n2n利用了tap/tun虛擬網絡卡,這樣做得好處是一方面軟體尺寸極小,一方面原始碼的依賴性極低,可以很容易移植到嵌入式裝置中,目前有openwrt的版本,在未來的計劃中,還將移植到android和iPhone中。

相對於hamachi,n2n最大的優勢在於:
1. 開源,任何人都可以檢查程式碼,看看是否有貓膩,而hamachi是閉源的,LogMeIn是否會截獲金鑰不得而知,一旦截獲金鑰,就可以對流經 hamachi伺服器的資料包進行解碼。n2n的加解密過程由edge node實現,只有兩端的使用者知道協商好的共享金鑰,super node無從知曉。

2. 靈活性,n2n允許使用者在Internet上自行建立super node,也可以利用任何一個公開的super node。

hamachi使用者則必須登入到LogMeIn伺服器才能建立隧道。
n2n支援的OS也非常廣,Linux、FreeBSD、MAC OSX、甚至windows

官方網站:http://www.ntop.org/n2n/
軟體下載:http://sourceforge.net/projects/ntop/files/

軟體安裝:下載1.3.2版本原始碼  解壓 make make install即可

安裝完後,系統多了兩個命令  edge和 supernode,edge是客戶端,supernode是服務端。

服務端用法:supernode -l <listening port> 就這麼簡單。
supernode -l 8888

客戶端用法
edge -a 3.3.3.4 -c wss -k wss -l 127.0.0.1:8888 &
edge -a 你需要的第2個ip地址 -c 你的虛擬網名 -k 你的密碼  -l 伺服器的ip地址:埠 &

-d <tun device>          | tun device name  可選
-a <tun IP address>    | n2n IP address
-c <community>           | n2n community name
-k <encrypt key>         | Encryption key (ASCII) – also N2N_KEY=<encrypt key>
-s <netmask>             | Edge interface netmask in dotted decimal notation (255.255.255.0)
-l <supernode host:port> | Supernode IP:port
-b                       | Periodically resolve supernode IP
| (when supernodes are running on dynamic IPs)
-p <local port>          | Local port used for connecting to supernode
-u <UID>                 | User ID (numeric) to use when privileges are dropped
-g <GID>                 | Group ID (numeric) to use when privileges are dropped
-f                       | Fork and run as a daemon. Use syslog.
-m <MAC address>         | Choose a MAC address for the TAP interface
| eg. -m 01:02:03:04:05:06
-M <mtu>                 | Specify n2n MTU (default 1400)
-t                       | Use http tunneling (experimental)
-r                       | Enable packet forwarding through n2n community

其他事項
1.資料包使用UDP 53埠,和DNS的一樣。

2.算然資料不直接通過supernode,但supernode對速度影響還是很大,建議搭建自己的supernode。

3.n2n 軟體Windows 版客戶端

http://www.vpnhosting.cz/n2nguien.exe

參考資料:

http://www.ppcn.net/n5690c39.aspx

http://bbs.chinaunix.net/viewthread.php?tid=1596037

http://hi.baidu.com/viccom/blog/item/a308b195c36d5d43d1135e16.html

http://www.ichiayi.com/wiki/tech/n2nvpn

http://www.cublog.cn/u3/103983/showart_2085197.html

==========後記============

後記:寫此文時很倉促,很多東西都沒寫。補充一下:

1.提供一個supernode  88.86.108.50:82 [vpnhosting.cz提供]

2.提供服務端執行語句:

supernode -l 8848 >/dev/null 2>&1 &

先在前臺執行,除錯好以後,將所有輸出 定向到 /dev/null 並且在後臺執行

除錯時,服務端可能會出現如下錯誤

15/Oct/2010 03:25:22 [supernode.c: 325] WARNING: Received packet with unknown protocol version (2): discarded

3.使用windows下客戶端登入時,預設使用V2版本協議,服務端可能不識別,請將windows下客戶端版本調至V1.

4.提供windows下服務端程式,程式來源網際網路,點此下載//本站提供下載,經測試該版本只能使用V2版本

5.提供地址一個,裡面釋出了windows版客戶端和服務端,全部在DOS下開啟命令

6.提供windows下DOS版本N2N 客戶端和服務端 由上面地址釋出

7.提供sourceforge開源專案一個,N2N 客戶端GUI

======================

另附:Campagnol VPN  使用的一些感受,沒有進行詳細測試

Campagnol 是一個分散式基於IP的 VPN程式,可以無配置的直接透過防火牆和 NATs,使用的是傳輸層的 UDP

原理是和N2N一樣的,只不過他是使用的金鑰方式管理。

下載地址:

http://sourceforge.net/projects/campagnol/files/

使用方法:
安裝
簽發CA和金鑰
執行服務端和客戶端

存在的缺陷:
1.金鑰方式管理,比較複雜
2.對服務端依賴太多(CA)
3.IP是由客戶端自行制定,如何進行區分?