N2N高级进阶使用
此教程轉載于我的博客https://blog.goodboyboy.top/182.html
網上的各種教程只教如何簡單的使用n2n,卻沒教怎么防止自己的n2n服務器被白嫖(bushi)和一些更進階的使用
此教程就結合我的經驗和n2n作者寫的文檔來教大家如何進階的使用n2n以及避免踩雷
這里演示的均以Windows系統為基礎,Linux大同小異
這里采用v3版的N2N,v1和v2參數可以會有所不同
N2N項目地址?GitHub - ntop/n2n: Peer-to-peer VPN
準備
? 一個有公網的vps
??EasyN2N
? 一個聰明的腦子
開始
給supernode(服務端)設置密碼
網上很多教程都沒說明怎么給supernode設置密碼來限制連接,不然白白給其他人白嫖了去(bushi)
給supernode設置密碼也同樣可以增加一定的網絡安全性
但是n2n作者貌似設計傳統的密碼設置方案,而是給出了另一種有同樣效果的方案,那就是限制小組名稱的方式
將小組名稱當做密碼來限制supernode的連接。我也是在網上找了好久,也看了help,最后在這個項目的GitHub的FAQ頁面作找到的
下面是作者的原文
翻譯過來就是
“我想設置一個只有我才能使用的超級節點。甚至可能受密碼保護?
請將社區名稱視為密碼,并使用參數啟動超級節點,其中是簡單文本文件的路徑,其中包含一行帶有您的秘密社區名稱的行。這將是唯一允許的社區。只有來自該社區的邊緣節點才能加入(在邊緣)。-c <community file><community file>-c <community name>”
那么這就很簡單了,我們只需要在supernode的啟動參數上加上-c 包含組名稱的文件路徑?或者直接是組名稱也行(不推薦,之后會說到)
在組名稱文件里(一個普通的文本文件),輸入組名稱,一行一個即可。
然后這個組名稱就變成了連接supernode的密碼了(感覺很奇葩)
數據壓縮
這里N2N內置提供了2種壓縮算法
-Z1?| 使用?LZO(1x)?壓縮算法壓縮傳輸的數據
-Z2?| 使用?ZSTD?壓縮算法壓縮傳輸的數據
這個根據自己的需求選擇,只需要在客戶端附加啟動參數就行了
數據加密
這里N2N提供了4種內置的加密算法
-A1?| 關閉局域網內傳輸的數據加密
-A2?| 使用?twofish?加密算法加密傳輸的數據
-A3?| 使用?AES?加密算法加密傳輸的數據
-A4?| 使用?chacha20?加密算法加密傳輸的數據
-A5?| 使用?Speck-CTR?加密算法加密傳輸的數據
如果要使用加密的話,需要和-k 密碼?一起使用,并且通信時要求對方也需要相同的密碼
下面是作者對這幾種加密算法的比較
還有一個可選參數
-H?| 數據包報頭完整加密
下面是作者對此的介紹
翻譯過來就是
“默認情況下,社區名稱以普通女巫每個數據包的形式傳輸。因此,固定名稱的社區可能會將您的弟弟妹妹排除在您的社區之外(只要他們不知道社區名稱),但是嗅探攻擊者會發現社區名稱。使用這個名字,他們只需連接到超級節點就可以訪問它。”
雖然這個翻譯很牽強,但大致意思就是又可以增加安全性
但是這里就有個坑!!!!!!
如果要使用這個數據包報頭完整加密的話,必須要配合服務端的 -c 參數使用,并且在組名稱列表下添加.*?不然無法連接!!!!
作者也給出了示例
然后就可以正常連接了
tips
避雷小tips
斷開n2n后立即連接會發現連接失敗并在服務端拋出“Authentication fail”
這是由于客戶端未向服務端發送下線命令而直接斷開連接導致觸發服務端的防欺騙保護,一般在開啟防欺騙保護的服務端會出現這種情況,
解決方法
1、等一會重試
2.、重啟服務端
3、關閉防欺騙保護,在服務端啟動參數后加上-M即可關閉(不推薦)
下面是作者給出的原文解答
The edge repeatedly throws an "Authentication error. MAC or IP address already in use or not released yet by supernode" message. What is wrong?
The edge encountered n2n's protection against spoofing. It prevents that one edge's identity, MAC and IP address, can be impersonated by some other while the original one is still online, see some?details. Mostly, there are two situations which can trigger this:
If you use a MAC or IP address that already is in use, just change those parameters.
If the edge prematurely has ended in a non-regular way, i.e. by killing it using?or?, it did not have a chance to un-register with the supernode which still counts the edge for online. A re-registration with the same MAC or IP address will be unsuccessful then. After two minutes or so the supernode will have forgotten. A new registration with the same parameters will be possible then. So, either wait two minutes or chose different parameters to restart with.kill -9 ...kill -SIGKILL ...
And, as a matter of principal, always end an edge by either pressing?+?or by sending SIGTERM or SIGINT by using?or?! A plain?without?will do, too. And finally, a?command to the management port peacefully ends the edge as well.CTRLCkill -SIGTERM ...kill -SIGINT ...kill ...-9stop
參考文檔
n2n/Crypto.md at dev · ntop/n2n · GitHub
n2n/Faq.md at dev ·ntop/n2n ·GitHub
n2n/ConfigurationFiles.md at dev · ntop/n2n · GitHub
n2n/Advanced.md at dev · ntop/n2n · GitHub
n2n/Communities.md at dev · ntop/n2n · GitHub
n2n/doc at dev · ntop/n2n · GitHub
N2N啟動器附加參數 | Bug俠 (bugxia.com)
EasyN2N 服務端(Supernode)附加參數 | Bug俠 (bugxia.com)
總結
- 上一篇: Windows下利用N2N访问内网资源,
- 下一篇: 「笔耕不辍」MQ的原理以及持久化