オープンソースプロジェクト
snltty/linker avatar
snltty/linker

snltty/linkerは、P2P接続と中継を一つの遠隔ネットワークに組み込む

プロジェクト概要:P2P (UDP+TCP IPV4+IPV6) + .非常に特徴的な、P2P ホール パンチング (UDP+TCP、IPV4+IPV6) + サーバー転送により、リモート ネットワーキングとイントラネットの侵入を実現します。世界中に散らばっている接続デバイスに、あたかも隣の部屋にあるかのように簡単にアクセスできるようにします。

スター 1,504フォーク 263C#GPL-3.0

ひと目でわかる

これは何?
snltty/linkerのIPv4とIPv6、UDPとTCPの打ち抜き、サーバー中継、仮想ネットワーク、ポート転送、Socks5、家庭内機器の機能をREADMEから読む。
誰に向いている?
Linkerは、世界各地の機器を仮想ネットワークやポート転送で接続し、家庭や拠点のサービスへ遠隔アクセスしたい人に向きます。導入前に中継サーバーの管理者、公開するポート、仮想ネットワークの向き、アプリケーション層ファイアウォール、ログと鍵の扱いを決めてください。
商用利用できる?
条件付きでできます。GPL-3.0 はコピーレフトのライセンスで、これを含むソフトウェアを配布する場合、そのソフトウェアのソースコードを同じライセンスで公開する必要があります。配布せず社内で使うだけなら、この義務は生じません。
今もメンテナンスされている?
されています。最後のコミットは 20 日前です。
何の言語で書かれている?
主に C# です(GitHub の言語統計による)。

回答はプロジェクトの GitHub データ(最終同期:2026年9月15日)と当サイトの分析に基づくもので、法的助言ではありません。

オープンソース詳細解説

Linkerが解決しようとする接続問題

snltty/linkerは、UDPとTCP、IPv4とIPv6を使ったP2Pの打ち抜きとサーバー転送により、遠隔ネットワークと内側ネットワーク接続を作るC#プロジェクトです。READMEの機能説明は、別の場所にある機器を隣の部屋にあるように扱うという表現で始まります。ここで中心になるのは、アプリケーションのクラウド管理ではなく、端末同士が通信できる経路を作ることです。

接続方法は、IPv6の直接接続、UPnPによる直接接続、TCPとUDPの打ち抜き、Meshによる中継、サーバー中継の順に並べられています。実際にどの経路が選ばれるかは、両端のネットワーク、ルーター、公開アドレス、設定によって変わります。READMEの順番は一般的な効果の目安であり、利用環境での成功率を保証する測定表ではありません。

P2P、Mesh、サーバー中継を使い分ける

IPv6の直接接続は双方にIPv6がある場合、UPnP直接接続は公開IPv4とUPnP、NAT-PMP、または手動ポート設定がある場合に使えます。TCPとUDPの打ち抜きには複数の方法があり、READMEは成功率が高いと説明していますが、具体的な数値を示していません。

ネットワーク条件が合わない場合、接続品質のよいクライアントがほかのクライアントへ中継するMeshや、複数中継ノードを使うサーバー経路があります。私設配置を勧める一方、READMEは公開サーバーと無料中継ノードも説明し、無料経路には制限があるとしています。中継を使う場合は、通信がどの管理者のサーバーを通るのか、帯域とログの扱いを確認してください。

仮想網、ポート転送、Socks5の違い

トンネルができた後の通信方法は三つに分かれます。仮想NICによる異地組網は、点対点、点対網、網対網を作り、仮想IPを自動割り当てします。ポート転送は一対一で指定したポートをつなぎ、仮想NICを使えない場合や使いたくない場合の経路です。Socks5は一対一のポート指定ではなく、すべてのポートを代理して点対網に近い使い方をします。

この違いは、アクセス範囲を決める時に効きます。仮想網は端末やサブネットをまとめやすい反面、参加端末の範囲を慎重に設定する必要があります。ポート転送は公開点を絞りやすく、Socks5は柔軟な分だけ代理先の管理が重要です。サービスごとの必要なポートと利用者を先に書き出して、広い経路を惰性で選ばないことが大切です。

家庭内機器へ届くための補助機能

特色機能には、TCP over TCPを高速化するtun324、重複する家庭内アドレスを扱うネットワークセグメントのマッピング、iptablesやNetNatを使うアプリケーション層NATがあります。OSのNATが使えない場合に内蔵NATを使う説明もあります。FECは冗長データを加えてパケット損失に対応し、最適化されたKCPはACK Range、選択確認、早い再送、まとめたflushを挙げています。

発見プロトコルの代理は、mDNS、SSDP、LLMNR、NBNS、WS-Discovery、海康SADPを内蔵し、同じLAN上のカメラやプリンターなどを見つける機能です。WindowsのWSASendTo USOとLinuxのsendmmsgによるUDPパケットの一括送信も記載されています。これらは便利な補助機能ですが、ネットワークを広げるほど発見範囲と転送先を監視する必要があります。

アプリケーション層ファイアウォールと遠隔起動

Linkerには、仮想NIC、ポート転送、Socks5の通信に適用するファイアウォール機能があります。例として、AからBの3389だけを許可し、ほかのクライアントを拒否する細かな制御が示されています。サブネット分割では、親ネットワークと子ネットワークの通信を分離し、一方向または双方向を選べるとREADMEは説明しています。

遠隔起動にはWOLのマジックパケット、USB COMリレー、USB HIDリレーを使えます。内側ネットワークへの接続は、サーバーを介したポートまたはドメインによるアクセスと、計画タスクによる自動開閉にも対応するとされています。操作対象、起動時間、停止条件、管理用ポートを明示しないまま機能を有効にすると、便利さがそのまま公開範囲になります。まず一つの機器と一つのサービスで検証してください。

対応環境と私設配置の判断

READMEの対象環境はWindows、Linux、Android、Docker、OpenWrt、NAS、PVE、LXC、macOSです。iOSは開発者アカウントと端末がないため、現時点では未対応と作者が説明しています。公開サーバーは1000Mbps以上とされますが、利用制限のある無料中継ノードもあり、READMEは自分のサーバーへの私設配置を勧めています。

READMEには直接コピーできる標準インストールコマンドがありません。導入の入口は公式サイト、使用文書、GitHub Releasesです。リリースの最新メタデータはv2.0.20、リポジトリはC#で、1,490スター、265フォーク、2件のオープンIssueを示します。これらの数字は活動の参考であり、ネットワーク環境や各OSの互換性を証明するものではありません。

ライセンス表示の不一致を解決する

リポジトリメタデータのライセンス識別子はGPL-3.0です。ところがREADME上のバッジはmit-license.orgへのリンクを指しています。この二つは同じ条件ではありません。再配布、改変版の公開、組み込み製品への利用を考えるなら、READMEの表示やメタデータだけで決めず、現在のLICENSE本文と各依存ライブラリの条件を確認する必要があります。

セキュリティ面では、READMEが用意する仮想ネットワーク、NAT、ファイアウォールを安全性の保証として読むことはできません。中継サーバーの所有者、秘密情報の保存、端末発見の範囲、ログ、公開ポートを運用側で定義してください。Linkerを選ぶ理由は、必要な経路と制御を自分のネットワークで再現できることに置き、私設配置と限定的な権限から始めるのが適切です。

編集部の結論

Linkerは、世界各地の機器を仮想ネットワークやポート転送で接続し、家庭や拠点のサービスへ遠隔アクセスしたい人に向きます。導入前に中継サーバーの管理者、公開するポート、仮想ネットワークの向き、アプリケーション層ファイアウォール、ログと鍵の扱いを決めてください。メタデータはGPL-3.0ですが、READMEのバッジには別の表示があるため、実際のLICENSE本文を必ず確認してください。

公式情報源

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
コミュニティノート

コミュニティノート