Tuntox は、Tox プロトコルを介して TCP 接続を転送するプログラムです。これにより、制御できない NAT の背後にある、または動的 IP アドレスを使用して、遠く離れたマシンに低遅延でアクセスできるようになります。
Tuntox は、クライアント モードまたはサーバー モードで実行できる単一のバイナリです。経験則として、アクセスするリモート マシン上でサーバーを実行し、サーバーにアクセスするローカル コンピュータ上でクライアントを実行します。
Tuntox は初期の開発段階にあります。ヤギを殺すことはありませんが、セグメンテーション違反が発生したり、メモリリークが発生したり、セキュリティ上の問題が発生したりする可能性があります (ただし、私はかなり安全にしようとしましたが)。
Tox が何なのかご存じない方のために説明します。Tox は完全に P2P であり、オーディオ/ビデオ通話とファイル転送をサポートするインスタント メッセンジャー プロトコルです。 Skype とは異なり、完全にオープンであり、たとえば XMPP とは異なり、通話とファイル転送は実際には P2P で機能します。 https://tox.chat/ をチェックして、機会があればクライアントをダウンロードしてください。
Github の [リリース] タブからバイナリを取得します。アーキテクチャに適したファイルをダウンロードし、chmod +x を実行するだけで完了です。バイナリは、私の PGP キー、11C1 B15A 5D5D D662 E469 928A EBDA 6B97 4ED3 D2B7 で署名されています。
男性が独自のデバイス ドライバーを作成した時代を懐かしむ場合は、BUILD.md を参照してください。
3G 経由で接続するラップトップ、6 つの NAT の背後にある自宅のコンピューター、または Raspberry Pi で Tuntox サーバーを実行します。ポートをパブリック IP に転送する必要はありません。マシンは Tox オーバーレイ ネットワーク経由でアクセスできます。
./tuntox
サーバーをフォアグラウンドで実行します。サーバーが起動すると、その Tox ID が出力に出力されます。これは後で外部からマシンにアクセスするときに必要になることに注意してください。
サーバーを終了 (Ctrl-C) して再起動すると、新しい Tox ID が生成されるため、それを再度書き留める必要があります。これでは目的が果たせないので、サーバーが Tox ID をどこかに保存できるようにする必要があります。デフォルトでは、ファイルは /etc/tuntox/ に保存されるため、このディレクトリを作成して chown して tuntox からアクセスできるようにすると、固定の Tox ID が割り当てられます。
代わりに -C スイッチを使用することもできます。
./tuntox -C /path/to/the/config/directory/
起動時にデーモン化するには、-z を追加します。
/path/to/tuntox -z
あるいは、supervisord や systemd などを実行している場合は、選択したシステムの構成ファイルを提供してください (#3、#4、#6 を参照)。サーバーを root として実行する必要はまったくありません。
したがって、ラップトップには Tuntox サーバーがインストールされています。どのように接続しますか?
./tuntox -i -L 2222:127.0.0.1:22
は、サーバーのセットアップ時に書き留めた ID です。書き留めるのを忘れていませんよね?
このコマンドを実行した後、2 番目のターミナル ウィンドウを開いて次を実行します。
ssh -p 2222 myuser@localhost
Magic では、ローカルホストのポート 2222 が、Tuntox サーバーを実行するマシン上の SSH サーバーになりました。
-L スイッチは、SSH での場合と (ほぼ) 同じように機能します。初心者のために説明すると、-LA:B:C は「IP B のポート C をローカルホストのポート A に転送する」ことを意味します。 SSH とは異なり、B にホスト名を使用することはできません (バイナリを動的にリンクしない限り)。
あるいは、SSH ProxyCommand モードも機能します。
ssh -o ProxyCommand='./tuntox -i -W localhost:22' gdr@localhost
楽しいこと: Tox 上の VPN
A < 1024 (「A」はローカル ポート) でない限り、クライアントは通常の非 root ユーザーとして実行できます。回避策はあります。
-s スイッチを使用しないと、TUNTOX は安全ではありません。サーバーとクライアントの両方で-s パスワードを指定すれば問題ありません。このスイッチは 0.0.4、コードネーム「Mr. Lahey's Got My Porno Tape!」で導入されました。さらに良いのは、両側でTUNTOX_SHARED_SECRET=yourpassword tuntox ...
実行することです。
Tuntox サーバーは起動するたびに新しい Tox ID を生成するか、その秘密キーをファイルに保存します。このサーバーに接続したい人は誰でも、公に知られている公開鍵と秘密の 32 ビット「スパム対策」値で構成される Tox ID が必要です。次に、クライアントは共有シークレットを送信し、サーバーのコマンド ラインで指定されたシークレットと比較されます。一致しない場合、友達リクエストは回答されないままになります。
したがって、サーバーの Tox ID とシークレットの所有は、SSH アクセスを備えた Unix アカウントの所有と同等であると考える必要があります。 Tuntox はリモート シェル機能を実装していませんが、悪用される可能性があります。
PSK 認証はオプションですが推奨されます。サーバー側に -s スイッチが存在するか、TUNTOX_SHARED_SECRET 環境変数が設定されている場合にのみ有効になります。 PSK は Tox フレンド要求メッセージとして送信されます。作成者が libtoxcore コードを理解している限り、PSK はサーバーの EC 公開キーを使用して暗号化されています。
Tuntox サーバーは、オプションでホワイトリストに登録された ToxID のみを許可できます。 ToxID をホワイトリストに追加するには、 -i yourallowedtoxy を1 回以上指定します。注: デフォルトのクライアント動作では、実行ごとに新しい ToxID が生成されます (作成者は、これが優れたプライバシー機能だと考えているため)。クライアントで -C スイッチを使用して、保存された ID を tox_save から強制的に読み取ることができます。
Tuntox は Tox プロトコルに便乗していますが、Tox プロトコル自体はセキュリティ研究者による監査を受けていません。 Tox 暗号は libsodium (バーンスタインの NaCl に基づく) で実装されているため、鍵交換には黄道曲線 25519 を、ストリーム暗号化には salsa20 を使用します。著者の最善の知識によると、libsodium は暗号通貨の間違いを可能な限り困難にしますが、Tox が監査されるまではわかりません。
はい、1つあります
GPLv3 については申し訳ありませんが、toxcore と utox (コードを借用した) は両方とも GPLv3 です。
toxcore と utox の開発者に感謝します。彼らなしではこのプログラムは存在しなかったでしょう。
Mr_4551 さん、ご協力とモチベーションをありがとうございました。