OpenGnbバージョン1.5.0の通信プロトコルはアップグレードされており、互換性がありません
中国英語
注:この記事のコンテンツのほとんどは、Google翻訳によって翻訳されており、「OpenGnbユーザーマニュアル」の中国語版から、この記事の内容は中国語版の対象となります。
OpenGNBは、オープンソースのP2P分散ソフトウェア定義された仮想ネットワークであり、極端なイントラネット浸透機能を備えた仮想ネットワークを使用すると、会社と家のネットワークを直接アクセスLANに組み合わせることができます。
GNBプロジェクトに関連するすべてのコードはオープンソースとしてリリースされ、現在リリースされているソースコードは次のプラットフォームをサポートしています。
フローチャートLR
サブグラフlan a
nodea [vpn clienta]
終わり
サブグラフwan
nodef [vpn server]
終わり
サブグラフlan b
nodeb [vpn clientb]
終わり
nodea < - ペイロード---> nodef < - ペイロード---> nodeb
NATトラバーサルポイントからポイント
フローチャートLR
サブグラフlan a
nodea [gnb nodea]
終わり
サブグラフwan
インデックス[GNBパブリックインデックスノード]
終わり
サブグラフlan b
nodeb [gnb nodeb]
終わり
Nodea-。 nodebアドレス.-インデックス - 。 nodeaアドレス。-nodeb
nodea < - ペイロード - > nodeb
フローチャートLR
サブグラフlan a
nodea [gnb nodea]
終わり
サブグラフwan
Nodec [nodec]
ノード[ノード]
nodee [nodee]
nodef [nodef]
nodej [nodej]
nodek [nodek]
nodeg [nodeg]
nodeh [nodeh]
nodei [nodei]
終わり
サブグラフlan b
nodeb [gnb nodea]
終わり
nodea [nodea] ---- Nodec [nodec] ----ノード[noded] ---- nodee [nodee] --- nodef [nodef] ---- nodeb [nodeb]
nodea [nodea] ---- nodeg [nodeg] ---- nodeh [nodeh] ---- nodei [nodei] ---- nodeb [nodeb]
nodea [nodea] ---- nodej [nodej] ---- nodek [nodek] ---- nodeb [nodeb]
フローチャートLR
サブグラフlan a
nodea [gnb nodea]
終わり
サブグラフlan c
Nodec [gnb nodec]
終わり
サブグラフlan d
ノードされた[GNBノード]
終わり
サブグラフlan e
nodee [gnb nodee]
終わり
サブグラフlan b
nodeb [gnb nodeb]
終わり
nodea ---- Nodec&noded&nodee ---- Nodeb
フローチャートLR
サブグラフlan a
nodea [gnb nodea]
upd_over_tcp_a [upd_over_tcp]
終わり
サブグラフwan
upd_over_tcp_b [upd_over_tcp]
nodeb [gnb nodeb]
終わり
nodea -udpペイロード--- upd_over_tcp_a - tcpペイロード--- upd_over_tcp_b -udpペイロード--- nodeb
git clone https://github.com/gnbdev/opengnb.git
cd opengnb
make -f Makefile.linux install
コンパイル後、 gnb gnb_crypto gnb_ctl gnb_esファイルをopengnb/bin/ディレクトリで入手できます。
gnb gnb_crypto gnb_ctl gnb_esをそれぞれホストとホストBにコピーします。
ホストAとホストBが2つの異なるLANでイントラネットの相互接続を一時的に侵入する必要があると仮定すると、最速の方法はLiteモードを介してGNBを実行することです。ライトモードでは、非対称暗号化が有効になり、 PassCodeとノードIDが暗号化キーを生成するため、セキュリティは非対称暗号化を使用するよりもはるかに少ないモジュラーになります。
PassCodeは、8文字の長さの32ビットの16進数文字列で、 0xffffffffまたはffffffffとして表すことができます。パブリックインデックスPassCodeの下では、同じGNBノードと同じ仮想ネットワーク上のノードと見なされます。できる限り他のユーザーと同じではないパスコードを選択してください。ここでは、デモンストレーションの便利さのために、パスコードは12345678として選択され、パラメーター** -p **はノードを開始するためにパスコードを指定するために使用されます。このような単純なパスコードを実際に使用しないでください。12345678 12345678パスコードとして使用し、通信障害を引き起こす他のユーザーと競合する場合があります。
ホストのrootを使用して実行します
gnb -n 1001 -I "120.76.206.113/9001" --multi-socket=on -p 12345678
スタートアップが成功した後、ホストAでIP addrを実行してGNBノードIPを確認します
3: gnb_do:mtu 1280 qdisc fq_codel state UNKNOWN group default qlen 500
link/none
inet 10.1.0.1/16 scope global gnb_tun
valid_lft forever preferred_lft forever
inet6 64:ff9b::a01:1/96 scope global
valid_lft forever preferred_lft forever
inet6 fe80::402:c027:2cf:41f9/64 scope link stable-privacy
valid_lft forever preferred_lft forever
ホストbでrootで実行するb
gnb -n 1002 -I "120.76.206.113/9001" --multi-socket=on -p 12345678
スタートアップが成功した後、ホストBでIP addrを実行してGNBノードIPを確認します
3: gnb_do:mtu 1280 qdisc fq_codel state UNKNOWN group default qlen 500
link/none
inet 10.1.0.2/16 scope global gnb_tun
valid_lft forever preferred_lft forever
inet6 64:ff9b::a01:2/96 scope global
valid_lft forever preferred_lft forever
inet6 fe80::a6cf:9f:e778:cf5d/64 scope link stable-privacy
valid_lft forever preferred_lft forever
この時点で、ホストAとホストB NATが正常に侵入し、ホストにファイアウォールの介入がないことを確認すると、お互いの仮想IPをpingすることができます。
ホストで実行a
root @ hostA: ~ # ping 10.1.0.2
PING 10.1.0.2 (10.1.0.2) 56(84) bytes of data.
64 bytes from 10.1.0.2: icmp_seq=1 ttl=64 time=2.13 ms
64 bytes from 10.1.0.2: icmp_seq=2 ttl=64 time=2.18 ms
64 bytes from 10.1.0.2: icmp_seq=3 ttl=64 time=2.38 ms
64 bytes from 10.1.0.2: icmp_seq=4 ttl=64 time=2.31 ms
64 bytes from 10.1.0.2: icmp_seq=5 ttl=64 time=2.33 ms
ホストで実行b
root @ hostA: ~ # ping 10.1.0.1
PING 10.1.0.1 (10.1.0.1) 56(84) bytes of data.
64 bytes from 10.1.0.1: icmp_seq=1 ttl=64 time=2.34 ms
64 bytes from 10.1.0.1: icmp_seq=2 ttl=64 time=1.88 ms
64 bytes from 10.1.0.1: icmp_seq=3 ttl=64 time=1.92 ms
64 bytes from 10.1.0.1: icmp_seq=4 ttl=64 time=2.61 ms
64 bytes from 10.1.0.1: icmp_seq=5 ttl=64 time=2.39 ms
上記のGNB Liteモードの最も単純な使用プロセスであるGNB Liteモードには、ネットワーキングに参加し、より安全な非対称暗号化方法を使用してGNBのデータ通信を保護するためにさらに多くのホストが必要な場合は、次のドキュメントを注意深くお読みください。
GNBのインデックスノードの役割は、一部のGNBネットワークボランティアによって提供されるBTプロトコルのトラッカーに似ています。ほとんどの場合、 indexノードはGNBネットワークのホストのアドレスインデックスのみを提供し、GNBノードのデータを転送しません。
一部のボランティアが提供するGNBのforwardノードは、極端な場合に一時的にポイントツーポイント通信を実行できないホストのデータ転送を実行でき、GNBホスト間の非対称データ暗号化により、 forwardノードが転送されたデータをスパイすることは不可能になります。
極端な場合、ピアツーピア通信を確立できない場合、パブリックネットワークforwardノードを介してデータを転送するかどうか、データを転送するために使用する信頼できるフォワードノードは、GNBノードのホスト所有者の設定に完全に依存します。実際、非常に複雑なネットワーク環境でさえ、GNBの優れたリンク機能は、いつでもどこでも仮想データリンクを確立できます。 GNBは、ネットワーク内のホストの複数の仮想リンクを作成し、データパケットを送信する最適な速度パスを選択します。
ボランティアが提供する利用可能なindexノードは次のとおりです
i|0|101.32.178.3|9001
host to netおよびnet to netモードのホストでは、GNBは特定のサブネットのデータを転送できますが、完全なトラフィック転送をサポートしていません。GNBはOpenWRTプラットフォームをサポートしており、ユーザーがコンパイルする必要があります。
SystemDスクリプトは、GNBプロジェクトのためにJin Buguoによって作成されました
Atzlinuxプロジェクトは、GNBプロジェクトのLinuxの下でDeb Format Softwareパッケージを作成し、公式のDebianソフトウェアパッケージになるように貢献しました。
Debian 12(BookWorm)にOpenGnBをインストールできます。
apt install opengnbArch LinuxのAURパッケージは、GNBプロジェクトのためにTaotierenによって作成されました。インストール方法は次のとおりです
# install distribution
yay -Sy opengnb
# Install the development version
yay -Sy opengnb-git詳細については、https://aur.archlinux.org/packages/opengnb/をご覧ください。
https://aur.archlinux.org/packages/opengnb-git/
各プラットフォームにGNBのコンパイルおよびリリースバージョンをダウンロードします
GNB_UDP_OVER_TCPは、TCPリンクを介してUDPパケットを転送するGNB向けに開発されたサービスであり、UDPプロトコルに基づいて他のサービスのデータを転送することもできます。
免責事項