n2n
n2n是第二層對等虛擬專(zhuān)用網(wǎng)(VPN),允許用戶(hù)在網(wǎng)絡(luò )上而不是應用程序級別利用P2P應用的典型功能。這意味著(zhù)用戶(hù)可以獲得本地IP可見(jiàn)性(例如,屬于同一個(gè)n2n網(wǎng)絡(luò )的兩臺PC可以相互ping通),并且無(wú)論他們當前屬于哪個(gè)網(wǎng)絡(luò ),都可以使用相同的網(wǎng)絡(luò )IP地址訪(fǎng)問(wèn)。簡(jiǎn)而言之,隨著(zhù)OpenVPN將SSL從應用程序(例如,用于實(shí)現https協(xié)議)移至網(wǎng)絡(luò )協(xié)議,n2n將P2P從應用程序移至網(wǎng)絡(luò )級別。
n2n的主要設計功能是:
n2n是基于P2P協(xié)議的加密的第二層專(zhuān)用網(wǎng)絡(luò )。
使用開(kāi)放協(xié)議和用戶(hù)定義的加密密鑰在邊緣節點(diǎn)上執行加密:您無(wú)需像Skype或Hamachi那樣將其委托給公司來(lái)控制您的安全性。
每個(gè)n2n用戶(hù)可以同時(shí)屬于多個(gè)網(wǎng)絡(luò )(又稱(chēng)為社區)。
能夠以反向流量方向(即從外到內)穿越NAT和防火墻,從而即使在專(zhuān)用網(wǎng)絡(luò )上運行也可以訪(fǎng)問(wèn)n2n個(gè)節點(diǎn)。防火墻不再是直接在IP級別進(jìn)行通信的障礙。
n2n網(wǎng)絡(luò )并非自成一體:可以在n2n和非n2n網(wǎng)絡(luò )之間路由流量。
n2n架構基于兩個(gè)組件:
邊緣節點(diǎn):安裝在用戶(hù)PC上的應用程序,允許構建n2n網(wǎng)絡(luò )。實(shí)際上,每個(gè)邊緣節點(diǎn)創(chuàng )建tun/tap設備,然后該tun/tap設備是n2n網(wǎng)絡(luò )的入口點(diǎn)。
超級節點(diǎn):它由邊緣節點(diǎn)在啟動(dòng)時(shí)使用,或用于到達對稱(chēng)防火墻后面的節點(diǎn)。對于那些無(wú)法直接通信的節點(diǎn),此應用程序基本上是目錄寄存器和分組路由器。
邊緣節點(diǎn)通過(guò)虛擬tap進(jìn)行通信。每個(gè)tap接口都是一個(gè)n2n邊緣節點(diǎn)。每臺PC可以具有多個(gè)tap結構,每個(gè)n2n網(wǎng)絡(luò )一個(gè),因此同一臺PC可以屬于多個(gè)社區。
快速開(kāi)始
下載并編譯代碼
決定將您的超級節點(diǎn)放置在何處。假設您將其放在XYW端口的主機A.B.C.D上。
確定要用于保護數據的加密密碼。假設您使用密碼cryptome
確定您要使用的網(wǎng)絡(luò )名稱(chēng)。假設您將其稱(chēng)為mynetwork。請注意,您可以使用您的超節點(diǎn)/邊緣節點(diǎn)來(lái)處理多個(gè)網(wǎng)絡(luò ),而不僅僅是一個(gè)。
確定您計劃在邊緣節點(diǎn)上使用的IP地址。假設您使用IP地址10.1.2.0/24
啟動(dòng)您的應用程序:
#supernode > supernode -l xyw
#edge node1> edge -a 10.1.2.1 -c mynetwork -k encryptme -l a.b.c.d:xyw
#edge node2> edge -a 10.1.2.2 -c mynetwork -k encryptme -l a.b.c.d:xyw
現在測試您的n2n網(wǎng)絡(luò ):
#edge node1> ping 10.1.2.2
#edge node2> ping 10.1.2.1
n2n安全性
n2n 1.x的設計很簡(jiǎn)單,可用于專(zhuān)用n2n網(wǎng)絡(luò )。我們知道它有一些安全限制,例如:
命令行上的鍵是一個(gè)問(wèn)題。
加密中缺少隨機數使得相對容易執行重放攻擊。
缺少HMAC使人相對容易夾在中間。(我不認為這是一個(gè)有根據的批評,因為n2n并不是試圖將信任附加到一種連接上,而只是不透明)。
難以滾動(dòng)密鑰和集成安全密鑰交換協(xié)議。
因此,下一個(gè)n2n 2.x版本將具有以下安全擴展:
每個(gè)加密的有效負載都會(huì )獲得一個(gè)32位的隨機數(salt),因此相同的數據包每次都會(huì )得到不同的加密。這使得執行重放攻擊,發(fā)現密鑰等變得更加困難。[status = WORKING]
每個(gè)加密的數據包都攜帶明文形式的密鑰索引,因此邊緣可以向接收者發(fā)送密鑰更改信號。密鑰交換可以通過(guò)例如IKE(IPSec)或Kerberos來(lái)完成,或者僅具有不時(shí)更新的共享密鑰列表。如果兩個(gè)邊緣上的時(shí)鐘稍有偏差,則具有密鑰索引可以實(shí)現可靠的密鑰滾動(dòng)。[status = WORKING]
Edge程序將具有密鑰發(fā)現通道,以允許插入IKE,Kerberos,SSL等,并提供安全的密鑰交換方法。[status = design phase]
n2n數據包需要包含一些垃圾信息,以避免DPI應用程序檢測到它們[status = design phase]
每個(gè)n2n數據包都攜帶一個(gè)轉換標識符,因此可以傳輸加密和未加密數據包的混合,并在運行時(shí)識別解碼轉換。轉換標識符允許數據轉換插件和擴展。添加新的加密或壓縮類(lèi)型后,無(wú)需更改n2n數據包格式,并且接收方可以檢測是否知道如何處理該數據包。[status = nearly finished]
以上聲明并不意味著(zhù) n2n是不安全的,而是在下一個(gè)主要版本中將更好地解決安全問(wèn)題。
n2n安全性
問(wèn):我可以使用DHCP或ZeroConf來(lái)動(dòng)態(tài)配置節點(diǎn)嗎?
答:可以。您需要在一個(gè)節點(diǎn)上的n2n設備上啟動(dòng)dhcpd。例如:“ dhcp tun0”。有關(guān)更多信息,請參見(jiàn)DHCP mini-HOWTO 。請注意,每個(gè)n2n網(wǎng)絡(luò )不應啟動(dòng)多個(gè)dhcpd(這是最佳做法)。
問(wèn):n2n可以穿越多少個(gè)內聯(lián)防火墻?
答:您是在一個(gè)NAT之后,還是在n-NAT之后,這都無(wú)關(guān)緊要。N2N將跨越所有這些區域。
問(wèn):n2n基于UDP。您有支持HTTP封裝的計劃嗎?
答:當前n2n支持初始HTTP隧道。為了使用它,您需要使用-t啟動(dòng)邊緣節點(diǎn)(超級節點(diǎn)已經(jīng)在TCP和UDP上進(jìn)行偵聽(tīng))。
問(wèn):如何實(shí)現n2n超節點(diǎn)可靠性?
答:具有故障安全n2n網(wǎng)絡(luò )的一種方法是將兩個(gè)不同的n2n接口(具有與超級節點(diǎn)相同的參數)放在帶有brctl的網(wǎng)橋中,并對其進(jìn)行調整以使用STP生成樹(shù)協(xié)議。