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

搭建n2n VPN伺服器

配置防火牆,允許其他PC連線你的udp埠`****`:控制面板--Windows防火牆--高階設定-出入站規則

轉:教你用n2n在Linux上配置一個非常實用免費的VPN解決方案

n2n 可以成為對你來說非常實用的免費 VPN 解決方案。你可以輕鬆地配置一個超級節點,無論是用你自己家裡的網路,還是從雲主機提供商購買一個可以公共訪問的 VPS 例項。你不再需要把敏感的憑據和金鑰放在第三方 VPN 提供商的手裡,使用 n2n,你可以在你的朋友中配置你自己的低延遲、高頻寬、可擴充套件的 P2P VPN。

作者:譯者: felixonmars來源:Linux中國|2015-01-07 15:18

一個傳統的 VPN(如 OpenVPN、PPTP)由一個 VPN 伺服器和一個或多個連線到這臺伺服器的客戶端組成。當任意兩個 VPN 客戶端彼此通訊時,VPN 伺服器需要中繼它們之間的 VPN 資料流量。這樣一箇中心輻射型的 VPN 拓撲結構存在的問題是,當連線的客戶端增多以後,VPN 伺服器很容易成為一個性能上的瓶頸。從某種意義上來說,中心化的 VPN 伺服器也同樣成為一個單點故障的來源,也就是當 VPN 伺服器出現故障的時候,整個 VPN 都將無法被任何 VPN 客戶端訪問。

點對點 VPN(又稱 P2P VPN)是另一個 VPN 模型,它能解決傳統的基於伺服器-客戶端模型的 VPN 存在的這些問題。一個 P2P VPN 中不再有一箇中心的 VPN 伺服器,任何擁有一個公開 IP 地址的節點都能引導其他節點進入 VPN。當連線到一個 VPN 之後,每一個節點都能與 VPN 中的任何其他節點直接通訊,而不需要經過一箇中間的伺服器節點。當然任何節點出現故障時,VPN 中的剩餘節點不會受到影響。節點中的延遲、頻寬以及 VPN 擴充套件性在這樣的設定中都有自然的提升,當你想要使用 VPN 進行多人遊戲或者與許多朋友分享檔案時,這都是十分理想的。

開源的 P2P VPN 實現已經有幾個了,比如

Tinc、peerVPN,以及 n2n。在本教程中,我將會展示如何在 Linux 上用 n2n 配置點對點 VPN

n2n 是一個開源(GPLv3)軟體,它允許你在使用者間構建一個加密的 2/3 層點對點 VPN。由 n2n 構建的 VPN 是“對 NAT 友好”的,也就是說,不同 NAT 路由器後方的兩個使用者可以通過 VPN 直接與對方通訊。n2n 支援對稱的 NAT 型別,這是 NAT 中限制最多的一種。因此,n2n 的 VPN 資料流量是用 UDP 封裝的。

一個 n2n VPN 由兩類節點組成:邊緣(edge)節點和超級(super)節點。一個邊緣節點是一臺連線到 VPN 的電腦,它可能在一個 NAT 路由器後方。一個超級節點則是擁有一個可以公共訪問的 IP 地址的電腦,它將會幫助 NAT 後方的邊緣節點進行初始通訊。想要在使用者中建立一個 P2P VPN 的話,我們需要至少一個超級節點。

準備工作

在這篇教程中,我將會建立一個擁有 3 個節點的 P2P VPN:一個超級節點和兩個邊緣節點。唯一的要求是,邊緣節點需要能夠 ping 通超級節點的 IP 地址,而它們是否在 NAT 路由器之後則沒有什麼關係。

在 Linux 上安裝 n2n

若想用 n2n 構建一個 P2P VPN,你需要在每個節點上安裝 n2n,包括超級節點。

由於它非常精簡的依賴需求,在大多數 Linux 平臺上 n2n 都能被輕鬆編譯。

在基於 Debian 的系統上安裝 n2n:

  1. $ sudo apt-get install subversion build-essential libssl-dev
  2. $ svn co https://svn.ntop.org/svn/ntop/trunk/n2n
  3. $ cd n2n/n2n_v2
  4. $ make
  5. $ sudo make install

在基於 Red Hat 的系統上安裝 n2n:

  1. $ sudo yum install subversion gcc-c++ openssl-devel
  2. $ svn co https://svn.ntop.org/svn/ntop/trunk/n2n
  3. $ cd n2n/n2n_v2
  4. $ make
  5. $ sudo make install

用 n2n 配置一個 P2P VPN

如前文所述,我們需要至少一個超級節點,它將會作為一個初始化引導伺服器。我們假設這個超級節點的 IP 地址是 1.1.1.1。

超級節點:

在一個作為超級節點的電腦上執行下面的命令。其中“-l <埠>”指定超級節點的監聽埠。執行 supernode 並不需要 root 許可權

  1. $ supernode -l 5000

邊緣節點:

在每個邊緣節點上,使用下面的命令來連線到一個 P2P VPN。edge 守護程式將會在後臺執行。

邊緣節點 #1:

  1. $ sudo edge -d edge0 -a 10.0.0.10 -c mynetwork -u 1000 -g 1000 -k password -l 1.1.1.1:5000 -m ae:e0:4f:e7:47:5b

邊緣節點 #2:

  1. $ sudo edge -d edge0 -a 10.0.0.11 -c mynetwork -u 1000 -g 1000 -k password -l 1.1.1.1:5000 -m ae:e0:4f:e7:47:5c

下面是對命令列的一些解釋:

  • “-d <介面名>”選項指定了由 edge 命令建立的 TAP 介面的名字。
  • “-a <IP地址>”選項(靜態地)指定了分配給 TAP 介面的 VPN 的 IP 地址。如果你想要使用 DHCP,你需要在其中一臺邊緣節點上配置一臺 DHCP 伺服器,然後使用“-a dhcp:0.0.0.0”選項來代替。
  • “-c <組名>”選項指定了 VPN 組的名字(最大長度為 16 個位元組)。這個選項可以被用來在同樣一組節點中建立多個 VPN。
  • “-u”和“-g”選項被用來在建立一個 TAP 介面後降權放棄 root 許可權。edge 守護程序將會作為指定的使用者/組 ID 執行。
  • “-k <金鑰>”選項指定了一個由 twofish 加密的金鑰來使用。如果你想要將金鑰從命令列中隱藏,你可以使用 N2N_KEY 環境變數。
  • “-l <IP地址:埠>”選項指定了超級節點的監聽 IP 地址和埠號。為了冗餘,你可以指定最多兩個不同的超級節點(比如 -l <超級節點 A> -l <超級節點 B>)。
  • “-m ”給 TAP 介面分配了一個靜態的 MAC 地址。不使用這個引數的話,edge 命令將會隨機生成一個 MAC 地址。事實上,為一個 VPN 介面強制指定一個靜態的 MAC 地址是被強烈推薦的做法。否則,比如當你在一個節點上重啟了 edge 守護程式的時候,其它節點的 ARP 快取將會由於新生成的 MAC 地址而遭到汙染,它們將不能向這個節點發送資料,直到被汙染的 ARP 記錄被消除。

至此,你應該能夠從一個邊緣節點用 VPN IP 地址 ping 通另一個邊緣節點了。

注意 edge 守護程序需要超級使用者許可權來建立一個 TAP 介面。因此需要確定用 root 許可權來執行,或者對 edge 命令設定 SUID。之後你總是可以使用“-u”和“-g”選項來降權放棄 root 許可權。

總結

n2n 可以成為對你來說非常實用的免費 VPN 解決方案。你可以輕鬆地配置一個超級節點,無論是用你自己家裡的網路,還是從雲主機提供商購買一個可以公共訪問的 VPS 例項。你不再需要把敏感的憑據和金鑰放在第三方 VPN 提供商的手裡,使用 n2n,你可以在你的朋友中配置你自己的低延遲、高頻寬、可擴充套件的 P2P VPN。

--------------------- 本文來自 皮熊 的CSDN 部落格 ,全文地址請點選:https://blog.csdn.net/ppp2006/article/details/52386252?utm_source=copy