日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

n2n内网穿透打洞部署全过程 + nginx公网端口映射

發布時間:2023/11/30 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 n2n内网穿透打洞部署全过程 + nginx公网端口映射 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

內網穿透、打洞工具有很多,此前在windows上使用的是vidcc這個玩意,也正因為linux不支持。自此在linux嘗試過一些打洞工具,ssh 反向代理這些,因為安全性不便捷等多種原因,最終選擇了n2n。

?

由于初次接觸n2n,對其不是很了解,就此對n2n實現內網穿透打洞過程進行基本表述。

?

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

?

?

?

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

?

至此,我們已經了解,部署n2n至少需要兩臺以上的機器。

?

我們此文采用兩臺centos。

?

centos7(super node) - 150.0.0.1 (公網IP)

?

centos 7(edge node)- 192.168.1.121 (虛擬機內網IP)

?

使用n2n產生的虛擬網段,將為 10.0.0.1 ~ 10.0.0.255

?

安裝n2n

?

無論是edgenode還是supernode 都需要安裝n2n,所以下面安裝方法通用,提供兩種n2n資源,均可。

?

git clone https://github.com/meyerd/n2n.git

?

or

?

svn co https://svn.ntop.org/svn/ntop/trunk/n2n

?

n2n分為v1和v2版本,兩種協議互不兼容。我們選擇v2版本。

?

cd n2n/n2n_v2

?

安裝openssl、cmake、git、gcc、net-

?

yum install -y openssl-devel yum install -y cmake yum install -y net-tools yum install -y git yum install -y gcc gcc-c++

?

編譯安裝n2n

?

mkdir build cd build cmake .. make && make install

?

n2n編譯安裝完,會產生兩個程序指令,edge 和 supernode,欠著是邊緣節點使用(客戶端),后者則是超級節點使用(服務端)。

?

supernode(服務端運行)

?

supernode -l 5000

?

超級節點開啟5000端口進行監聽,以此來提供建交服務。

?

服務端也可以同時當做客戶端使用,將服務端加入到虛擬網絡中。

?

edge -a 10.0.0.10 -c edge0 -k wss -l 150.0.0.1:5000

?

edgenode(客戶端運行)

?

edge -a 10.0.0.11 -c edge0 -k wss -l 150.0.0.1:5000

?

10.0.0.11 這個IP是虛擬網段,其他加入虛擬網絡中的IP地址需要在同一網段,統一key,即wss(可設置為其他)。

?

?

?

此節點已有10.0.0.11這個IP,所在的是n2n創建的虛擬網卡,kill 掉edge 進程則此網卡銷毀。

?

查看edge或者supernode 進程

?

ps -ef|grep supernodeps -ef|grep edge

?

--help

?

?

?

本文提到的重要參數

?

-k wss 通訊私匙,一般不用放在supernode節點,可自行約定edge節點的私匙統一設置。

?

-M 1200 設置mtu

?

-v -f 開啟調試輸出

?

調試

?

使用過程中不免遇到一些奇葩的事,調試是個關鍵,一些大的坑已經為你們踩過了,剩下的基本沒啥問題。

?

1.開啟調試模式

?

記住先kill掉之前的edge 或 supernode進程再進行調試以免沖突。

?

附加參數即可: -v -f

?

edge

?

edge -a 10.0.0.11 -c edge0 -k wss -l 150.0.0.1:5000 -v -f

?

supernode

?

supernode -l 5000 -v -f

?

2.正常使用,節點互相連接不通。

?

如果ping都不通,懷疑是防火墻的問題?測試請先直接關閉防火墻。完畢后,將其恢復,慢慢測試。

?

防火墻放行端口示例:

?

iptables -I INPUT -p tcp --dport 5000 -j ACCEPT iptables -I INPUT -p udp --dport 5000 -j ACCEPT iptables save service iptables restart

?

?

?

2.創建了客戶端,虛擬網卡沒有ip

?

?

?

如果你開啟調試模式了,可能就會看到原來是ifconfig 命令不存在,這個命令在net-tools包里(centos),那么就需要安裝,重新開啟edge即可解決。

?

安裝net-tools

?

yum install -y net-tools

?

手動設置網卡IP(可省略,測試可以使用)

?

ifconfig edge0 10.0.0.11 netmask 255.255.255.0

?

那么,如果這步不成功的話,自然網絡沒有配置建立好,也就無法正常穿透內網。此時如果不開啟調試模式,你也看不到任何錯誤,也就是很多人往往出現的配置好了,卻無法正常訪問,ping都不通,何以解憂。

?

3.ping能通,http和ssh卻不通。

?

設置mtu值即可

?

edge -a 10.0.0.11 -c edge0 -k wss -l 150.0.0.1:5000 -M 1200

?

一般低于1400即可,當前設置1200。(不要忘了kill之前的進程哦)

?

至此,問題基本得以解決。

?

測試

?

10.0.0.10 (supernode、edge) 10不僅是超級節點也是邊緣節點。

?

10.0.0.11(edge)無數邊緣節點中其中一個

?

10 ping 11

?

?

?

11 ping 10

?

?

?

自此,網絡可以互相訪問,暢通無阻。如果你用你自己的電腦,需要將其加入到虛擬網絡中,即可像局域網一樣訪問。

?

windows edge客戶端軟件

?

http://www.V**hosting.cz/n2nguien.exe

?

http://sourceforge.net/projects/n2nedgegui/

?

還要其他版本以及安卓版本,自行搜捕。

?

nginx轉發端口代理映射

?

最后,我們將用nginx轉發下公網IP端口到內網指定ip指定端口,這樣可以讓外界不加入虛擬網絡即可訪問其中的節點機器。

?

用戶客戶端 =》 公網IP(150.0.0.1:6011)=》虛擬內網(10.0.0.11:22)

?

從流程來看,我們的用戶將訪問公網IP的6011端口,可以連接到內網機器10.0.0.11的22端口(ssh)。

?

首先關閉防火墻或放行公網6011端口連接

?

vi /etc/sysconfig/iptables

?

增加

?

-A INPUT -p tcp -m state --state NEW -m tcp --dport 6011 -j ACCEPT

?

?

?

安裝nginx(supernode)

?

詳細請參照此文

?

注意需要轉發tcp數據,編譯時附加參數:--with-stream

?

#安裝編譯支持庫 mkdir /mnt/tools -p cd /mnt/tools yum -y install gcc automake autoconf libtool make yum install gcc gcc-c++#安裝PCRE wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.40.tar.gz tar -xzf pcre-8.40.tar.gz -C ./ cd pcre-8.40 ./configure --prefix=/usr/local/pcre make && make install cd ..#安裝zlib wget http://zlib.net/zlib-1.2.11.tar.gz tar -xzf zlib-1.2.11.tar.gz -C ./ cd zlib-1.2.11 ./configure --prefix=/usr/local/zlib make && make install cd ..#安裝openss wget https://www.openssl.org/source/openssl-1.0.2k.tar.gz tar -xzf openssl-1.0.2k.tar.gz -C ./ #注意,這里不需要進行安裝,后面步驟省略。#編譯安裝nginx wget http://nginx.org/download/nginx-1.12.0.tar.gz tar -xzf nginx-1.12.0.tar.gz -C ./ cd nginx-1.12.0./configure \ --prefix=/usr/local/nginx \ --sbin-path=/usr/local/nginx/nginx \ --conf-path=/usr/local/nginx/nginx.conf \ --pid-path=/usr/local/nginx/nginx.pid \ --with-http_ssl_module \ --with-pcre=/mnt/tools/pcre-8.40/ \ --with-zlib=/mnt/tools/zlib-1.2.11/ \ --with-openssl=/mnt/tools/openssl-1.0.2k/ \ --with-stream#注:cpre、zlib、openssl等依賴包的路徑是解壓的源碼路徑不是安裝后的路徑。make make install

?

編譯安裝完畢后,到nginx目錄。

?

cd /usr/local/nginx/

?

編輯配置nginx.conf

?

stream {log_format proxy '$remote_addr [$time_local] ''$protocol $status $bytes_sent $bytes_received ''$session_time "$upstream_addr" ''"$upstream_bytes_sent" "$upstream_bytes_received" "$upstream_connect_time"';access_log /var/log/nginx/tcp-access.log proxy ;open_log_file_cache off;include /usr/local/nginx/conf.d/*.stream; }

?

創建日志目錄

?

mkdir /var/log/nginx/

?

創建模塊配置目錄并進入

?

mkdir /usr/local/nginx/conf.d/ cd /usr/local/nginx/conf.d/

?

新建tcp.stream文件(vi tcp.stream)

?

upstream TCP6011 {hash $remote_addr consistent;server 10.0.0.11:22;}server {listen 6011;proxy_connect_timeout 5s;proxy_timeout 300s;proxy_pass TCP6011;}

?

重載nginx

?

cd ..

?

./nginx -s reload

?

使用putty連接 150.0.0.1:6011 成功連接10.0.0.11

?

?

?

因為是nginx代理請求,所以來源是10.0.0.10而不是直接客戶端。所以流量也會全部走supernode服務器而不直接交互。如果本地也配置到虛擬網絡,即建立連接通過supernode,之后則直接互通。

?

詳細請了解n2n官方,這個項目已經不在維護,但依然在廣泛使用。

?

http://www.ntop.org/n2n/

?

https://sourceforge.net/projects/ntop/files/n2n/

?

https://www.buckhill.co.uk/blog/how-to-enable-broadcast-and-multicast-support-on-amazon-aws-ec2/2

總結

以上是生活随笔為你收集整理的n2n内网穿透打洞部署全过程 + nginx公网端口映射的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。