軽量のP2PメッシュVPNをTincで作成する方法

Tincは、Linux、Windows、およびmacOSでプライベートピアツーピア(P2P)メッシュネットワークを簡単に作成できるオープンソースの仮想プライベートネットワーク(VPN)アダプターです。OpenVPNやWireguardと同様に、異なるネットワークトポロジーにまたがる複数のコンピュータを単一の仮想LANにリンクさせることができます。ここでは、Tincを使用する利点と、Tincベースのシンプルなメッシュネットワークをインストールして作成する方法を示します。
WireguardやOpenVPNよりTincを使う理由は?
Tincのユニークなセールスポイントの1つは、他のVPNデーモンとは異なり、メッシュネットワークを設計していることです。これは、Wireguardとは異なり、ネットワーク条件の変化に簡単に適応できることを意味します。これにより、特にネットワーク接続が不安定なコンピュータにとって、より耐障害性が高くなります。

それに加えて、TincはOpenVPNのような従来のVPNで期待されるほとんどの機能も享受しています。これには、NAT環境を通過する能力、暗号化トンネルの作成、およびLAN専用アプリケーションのリンクが含まれます。

最後に、Tincは、ネットワーク内で行うすべての接続をP2Pにすることを目指しています。これは、自動ピア発見または公開アクセス可能なTincサーバーとの調整を通じて行うことができます。その結果、Tinc VPN内の接続は堅牢であるだけでなく、迅速で応答性があります。
知っておくべきこと: どのVPNを選ぶかまだ決めかねてる?私たちの記事をチェックして、WireguardとOpenVPNが互いにどう比較されるか見てみましょう。
LinuxにTincをインストールする
Tincをインストールする最初のステップは、システムが最新であることを確認することです。Ubuntuでは、次のコマンドを実行します:
sudo apt update && sudo apt upgrade -yTincをUbuntuのパッケージリポジトリから直接ダウンロードしてインストールします:
sudo apt install tinc
他のLinuxディストリビューションにTincをインストールするには、そのシステムに適切なパッケージマネージャーを使用します。例えば、Fedoraではsudo dnf install tincを実行してプログラムを取得する必要があります。

tincd --versionを実行して、Tincが適切にインストールされていることを確認します。

Tincを使用して基本的なメッシュネットワークを作成する
マシンにTincがインストールされたので、最初のTincベースのネットワークを構成できます。「/etc/tinc」内に新しいフォルダーを作成します。これには、Tincノードに関連するすべてのファイルが含まれます:
sudo mkdir -p /etc/tinc/mynetwork/hostsお気に入りのテキストエディタを使用して新しい設定ファイルを作成します:
sudo nano /etc/tinc/mynetwork/tinc.conf新しい設定ファイルに次のコードブロックを貼り付けます:
Name = mynode
Device = /dev/net/tun注意: 一部のLinuxディストリビューションでは、/dev内のtunアダプタの場所が変更されることがあります。システムの正確なパスを見つけるには、次のコマンドを実行します:
find /dev -name *tun* -type cTincノードの名前のテキストファイルを「hosts」フォルダー内に作成し、その中に次の情報を貼り付けます:
Subnet = 192.168.11.1/32
Address = YOUR-MACHINE-IP-ADDRESS-HERE
Port = 655「Address」変数の値を、マシンのIPアドレスに置き換えます。ip addrを実行してこれを見つけることができます。

注意: 公開アクセス可能なVPNを作成する場合は、マシンのパブリックIPアドレスを提供する必要があります。
マシンのホストファイルを保存したら、次に「/etc/tinc/mynetwork」内に2つのファイルを作成します:
sudo touch /etc/tinc/mynetwork/tinc-{up,down}
sudo chmod +x /etc/tinc/mynetwork/tinc-{up,down}「tinc-up」ファイルを開き、次のBashコードをその中に貼り付けます。これにより、Tinc用の仮想ネットワークインターフェースが作成され、そのインターフェースにIPアドレスが割り当てられます:
#!/bin/sh
ip link set $INTERFACE up
ip addr add 192.168.11.1/32 dev $INTERFACE
ip route add 192.168.11.0/24 dev $INTERFACEファイルを保存したら、「tinc-down」ファイルを開き、次の内容も貼り付けます。このコードは「tinc-up」の逆の処理を行い、TincインターフェースからIPアドレスを解除し、そのインターフェースをマシンから取り除きます:
#!/bin/sh
ip route del 192.168.11.0/24 dev $INTERFACE
ip addr del 192.168.11.1/32 dev $INTERFACE
ip link set $INTERFACE down
Tincノードのキー対を生成するには、tincdを実行します:
sudo tincd -n mynetwork --generate-keys=4096Enterを2回押して、Tincノードにおけるプライベートおよびパブリックキーのデフォルト保存場所を受け入れます。

最初のTincクライアントの追加
新しいTincクライアントを追加するには、まず2台目のマシンにTincを正しくインストールしたことを確認します。

mkdir -pを使用して、Tincの設定用のディレクトリ構造を作成します。
お気に入りのテキストエディタを使用して、Tincクライアントの設定ファイルを作成します:
sudo nano /etc/tinc/mynetwork/tinc.conf2台目のマシンの設定ファイルに次のコード行を貼り付けます:
Name = myclient
Device = /dev/net/tun
ConnectTo = mynode自分のTincマシンの名前で「/etc/tinc/mynetwork/hosts」内にファイルを作成します。この場合、2台目のマシンを「myclient」と名付けたので、「myclient」という名前のファイルを作成します:
sudo nano /etc/tinc/mynetwork/hosts/myclient新しいホストファイルに次のブロックのコードを貼り付けます。最初のノードと同様に、これはTincデーモンのネットワーク構成を示します:
Subnet = 192.168.11.2/32
Port = 655新しいホストファイルを保存し、次に2台目のマシンで「tinc-up」および「tinc-down」スクリプトを作成します:
sudo touch /etc/tinc/mynetwork/tinc-{up,down}
sudo chmod +x /etc/tinc/mynetwork/tinc-{up,down}お気に入りのテキストエディタを使ってtinc-upファイルを開き、次のブロックのコードを貼り付けます:
#!/bin/sh
ip link set $INTERFACE up
ip addr add 192.168.11.2/32 dev $INTERFACE
ip route add 192.168.11.0/24 dev $INTERFACEtinc-upファイルを保存したら、tinc-downを開き、次のコード行を貼り付けます:
#!/bin/sh
ip route del 192.168.11.0/24 dev $INTERFACE
ip addr del 192.168.11.2/32 dev $INTERFACE
ip link set $INTERFACE downTincクライアントの設定を完了させるために、キー対を生成します:
sudo tincd -n mynetwork --generate-keys=4096
Tincメッシュネットワークを実行する
この時点で、正しく構成された2つのTincデーモンがあります。しかし、これら2つのTincデーモンをリンクさせて、LinuxでP2P VPNを作成する必要があります。そのためには、Tincノードのホスト設定ファイルをクライアントにコピーし、逆にクライアントのホスト設定ファイルをTincノードにコピーする必要があります。
まず、ノードのターミナルセッションを開き、「/etc/tinc/mynetwork/hosts」ディレクトリに移動します:
cd /etc/tinc/mynetwork/hostsこのディレクトリ内の設定ファイルをコピーし、クライアントに転送します。私のケースでは、scpを使ってこのファイルをsshで送信します:
scp ./mynode YOUR-CLIENT-IP-ADDRESS:~
注意: この例ではscpを使用しましたが、USBフラッシュドライブを使用して手動で転送することもできます。
クライアントマシンに移動し、先ほど転送したホストファイルをクライアントの「/etc/tinc/mynetwork/hosts」フォルダにコピーします:
sudo cp -v ~/mynode /etc/tinc/mynetwork/hosts/その後、クライアントマシン側でscpを実行して、クライアントのホストファイルをノードに転送します:
scp /etc/tinc/mynetwork/hosts/myclient YOUR-NODE-IP-ADDRESS:~クライアントのホストファイルをノードのホストディレクトリにコピーします:
sudo cp ~/myclient /etc/tinc/mynetwork/hosts/余談: インターネット上の個人のプライバシーが気になりますか?Linux PCのプライバシーとセキュリティを向上させる方法について学びましょう。
Tincメッシュネットワークの起動
完全に構成されたTincネットワークを起動するには、各ホストで次のコマンドを実行します:
sudo tincd -n mynetworkTincインターフェースを介してノード間の通信ができることを確認するために、シンプルなpingを実行します:
ping -c 5 192.168.11.2
最後に、Tincサービスを有効にして、VPNがシステム起動時に機能するようにします:
sudo systemctl enable --now [email protected]LinuxでTincを使用して独自のP2PメッシュVPNを作成する方法を学ぶことは、コンピュータネットワーキングのこの素晴らしい世界を探検する第一歩に過ぎません。この技術の詳細については、私たちの包括的なVPNの概要をチェックしてみてください。
画像クレジット: Growtika via Unsplash. すべての変更およびスクリーンショットはRamces Redによるものです。