Hide.me CLIは、Eventure Ltd.で使用するVPNクライアントです。WireGuardプロトコルに基づくHide.me VPNサービス。クライアントの機能には次のものがあります。
TODO:
このリポジトリをクローンして実行できます。
go build -o hide.me
または、リリースセクションから最新のビルドをダウンロードしてください。
ソースツリーとバイナリリリースには、簡単なインストールとアンインストールスクリプトが含まれています。 Hide.me CLIは/opt/hide.meディレクトリにインストールされます。 hide.meファイルを /opt/hide.meにコピーすることとは別に、システムの変更は行われていません。
SystemDベースの分布が検出されると、インストーラーは接続をインスタンス化するために使用できるテンプレートユニットファイルをリンクします。
パッケージング/Archlinux/( git clone --recurse-submodulesが必要)で提供されるpkgbuildを使用して、またはhttps://aur.archlinux.org/packages/hide-client/からパッケージを構築できます。
構築するには:
makepkg && sudo pacman -U hide-client-0.9.1-1-any.pkg.tar.zst
Archlinuxパッケージは、インストールされているファイルのデフォルトの場所を、AccessToken、/usr/share/hide.me /usr/share/hide.me/CA.pem caのバイナリ、 /etc/hide.me/accessToken.txt hide.me/accesstoken.txtの/usr/bin/hide.meに変更することに注意してください。証明書の/usr/share/hide.me/CA.pemおよび/usr/lib/systemd/system/hide.me@service for the systemdユニット。
WireGuardは、業界で最も安全でシンプルなVPNトンネルソリューションの1つです。不安定な媒体(インターネットなど)を介したワイヤーガードの公開キー交換が必要な限り、セットアップと使用は簡単です。あらゆる種類のワイヤーガード公開キー交換は、ワイヤガード仕様の範囲外です。
不安定な媒体をめぐる公開鍵交換と秘密のキー交渉の複雑なタスクは、通常、次のように処理されます。
hide.me WireGuardの実装レバレッジHTTPS(TLS)の交換:
すべての操作の認証には、アクセストークンを使用する必要があります。アクセストークンは、Hide.meアカウントに暗号化されたバイナリブロブです。
Hide.me VPNサーバーへの接続は、これらの手順で確立されます。
他の多くのソリューションとは対照的に、Hide.Me CLIは、いかなる種類のLinuxファイアウォールテクノロジー(IPTABLES、NFTABLES、またはEBPF)を使用していません。 Linux'es IPフィルタリングフレームワークに依存する代わりに、Hide.me CLIは、特別なルーティングテーブルとルーティングポリシーデータベースルールのセットをセットアップすることにより、トラフィックを選択的にルーティングします。前述のルーティングテーブルのブラックホールルートは、次の条件のいずれかを満たしていない限り、すべてのトラフィックをドロップします。
この操作モードにより、ユーザーはhide.me CLIが干渉しない独自のファイアウォールポリシーを確立することができます。
使用手順は、パラメーターなしでhid.me CLIを実行することで印刷できます。
Usage:
./hide.me [options...] <command> [host]
...
hide.me CLIユーザーインターフェイスは非常に簡単です。利用可能なコマンドは3つだけです。
command:
token - request an Access-Token (required for connect)
connect - connect to a vpn server
conf - generate a configuration file to be used with the -c option
categories - fetch and dump filtering category list
service - run in remotely controlled service mode
VPNサーバーに接続するには、VPNサーバーからアクセストークンを要求する必要があります。アクセストークンリクエストは、Tokenコマンドによって発行されます。任意のサーバーが発行するアクセストークンは、認証のために、他のHide.me VPNサーバーとともに使用できます。サーバーがアクセストークンを発行した場合、トークンはファイルに保存する必要があります。アクセストークンのデフォルトのファイル名は「AccessToken.txt」です。
アクセストークンが設置されると、接続リクエストに使用できます。古いアクセストークンは自動的に更新されます。
hide.me CLIは、必ずしもコマンドラインパラメーターの束で呼び出す必要はありません。代わりに、すべてのオプションを指定するためにYAMLフォーマットされた構成ファイルを使用できます。このような構成ファイルを生成するには、 confコマンドを使用できます。
DNSフィルタリング(SmartGuard)の目的のために、フィルタリングカテゴリのリストをカテゴリコマンドで取得できます
Hide.me CLIはサービスモードで実行できます。サービスモードで開始すると、Hide.me CLIは、コントロールのためにRESTインターフェイスを公開するだけです。コントローラーは、接続、キルスイッチのアクティブ化、またはその他の操作の構成を担当します。 RESTインターフェイスリスニングアドレスは、-CADDRオプションを介して構成できます。
構成ファイルを介してのみ構成可能なオプションがいくつかあることに注意してください。そのようなオプションは次のとおりです。
host:
fqdn, short name or an IP address of a hide.me server
Required when the configuration file does not contain it
Hide.me RESTエンドポイントのホスト名は、完全に適格なドメイン名(nl.hide.me)、短い名前(NL)、またはIPアドレスとして指定できます。 RESTエンドポイントがワイヤガードエンドポイントと一致するという保証はありません。
-4 Use IPv4 tunneling only
すべてのIPプロトコル操作をIPv4に制限します。サーバーがIPv4アドレスのみをアドレス指定するIPv4およびIPv6を提供する場合でも、IPv4ルールとIPv4ルートがインストールされます。 Leak Protection/Kill-Switchは、IPv4トラフィックのみで機能します。 IPv6トラフィックフローは無担保のままです。
警告:このオプションはセキュリティを劣化させ、クライアントマシンにIPv6スタックが無効になっている場合、安全である場合にのみ使用する必要があります。 IPv6リークが発生する可能性があるため、それを使用しないでください。
-6 Use IPv6 tunneling only
すべてのIPプロトコル操作をIPv6に制限します。サーバーはIPv4およびIPv6アドレスのみをアドレス指定するIPv4およびIPv6を提供しますが、IPv6ルールとIPv6ルートがインストールされます。 Leak Protection/Kill-Switchは、IPv6トラフィックのみで機能します。 IPv4トラフィックフローは無担保のままです。
警告:このオプションはセキュリティを劣化させ、クライアントがIPv6トラフィックのみをトンネルしたい場合を除き、使用すべきではありません。
-b filename
resolv.conf backup filename (default "")
hide.me cliは、 /etc/resolv.confのバックアップをメモリに保持します。そのバックアップに加えてHide.me CLIは、このオプションで指定されたファイルに /etc/resolv.confをバックアップすることができます。
-c filename
Configuration filename
「filename」という名前の構成ファイルを使用します。
-ca string
CA certificate bundle (default "CA.pem")
TLS交渉中に、VPNサーバーの証明書を検証する必要があります。このオプションにより、代替CA証明書バンドルファイルを指定できます。
-caddr address
Control interface listen address (default "@hide.me")
サービスモードコントロールインターフェイスを設定するアドレスを聞きます。 Hide.me CLIは、デフォルトでは、抽象unixソケットHide.meを聴きます
-ccert certificate
Control interface certificate file
サービスモード制御インターフェイスX509証明書をPEM形式で設定する
-ckey key
Control interface key file
サービスモード制御インターフェイス秘密キーをPEM形式で設定する
-d DNS servers
comma separated list of DNS servers used for client requests (default "209.250.251.37:53,217.182.206.81:53")
デフォルトでは、Hide.me CliはHide.meを使用してDNSサーバーを操作して、トークンの要求または接続リクエスト中にVPNサーバー名を解決します。これらの目的に使用されるDNSサーバーのセットは、このオプションでカスタマイズされる場合があります。
-dpd duration
DPD timeout (default 1m0s)
接続が停止したかどうかを検出するために、通常はネットワーキングの問題により、Hide.me CLIは定期的に接続状態をチェックします。このオプションではチェック期間を変更できますが、1分より高くすることはできません。
-i interface
network interface name (default "vpn")
このオプションを使用して、ネットワークインターフェイスの名前を指定して作成または使用します。
-l port
listen port
暗号化されたワイヤーガードトラフィックのリスニングポートを指定します。
-m mark
firewall mark for wireguard traffic (default 0 - no packet marks)
ファイアウォールを設定して、ワイヤガードカーネルモジュールがパケットをマークします。
-p port
remote port (default 432)
このオプションでは、リモートレストエンドポイントポートが変更される場合があります。
-pf
enable dynamic port-forwarding technologies (uPnP and NAT-PMP)
ダイナミックポートフォードは、デフォルトでは無効です。このオプションを使用して、特定の接続試行のためにオンにします。あるいは、トークンを要求するときに@PFサフィックスをユーザー名に追加することにより、ポートフォードを有効にすることができます。このようなトークンは、各接続の試行でポートフォードをアクティブにします。また、それらを使用するときはこのオプションを使用しないでください。
-r table
routing table to use (default 55555)
一般的な交通と漏れ保護メカニズムに使用するルーティングテーブルを設定します。
-R priority
RPDB rule priority (default 10)
インストールされているRPDBルールの優先順位を設定します。 Hide.me CLIは、選択したルーティングテーブルにトラフィックを駆動し、IPリーク保護を確保するために、RPDBルール(IPプロトコルごとに1つ)をインストールすることにより、ポリシールーティングを利用します。
-s networks
comma separated list of networks (CIDRs) for which to bypass the VPN
スプリットツンネルネットワークのリスト、つまり、トラフィックをVPN上にトンネルしてはならないネットワーク。
-t string
access token filename (default "accessToken.txt")
アクセストークンを含むファイルの名前。
-u username
hide.me username
Hide.meユーザー名を設定します。
Hide.Me CLIは、DNSベースのフィルタリング(SmartGuard)をサポートしています。次のオプションはDNSフィルタリングを制御します。
-forceDns
force tunneled DNS handling on hide.me servers
Hide.me VPNサーバーでDNSリダイレクトをアクティブにして、各UDPまたはTCP DNSリクエストがそのdid.me VPNサーバーによって処理されるようになります
-whitelist dns names
comma separated list of allowed dns names
フィルタリングエンジンをバイパスするDNSサフィックス(WildCardsが受け入れた)
-blacklist dns names
comma separated list of filtered dns names
フィルタリングされるDNS名
-noAds
filter ads
SmartGuardベースの広告フィルタリングをアクティブにします
-noCategories categories
comma separated list of filtered content categories
細粒のSmartGuardフィルタリングをアクティブにします。カテゴリを備えたカテゴリリストを取得します
-noIllegal kind
filter illegal kind (content, warez, spyware, copyright)
違法なコンテンツ、ウェレス、スパイウェア、著作権で保護された素材の粗いレベルフィルタリングを有効にします
-noMalicious
filter malicious destinations
悪意のあるホスト、ウェブサイト、またはドメインのフィルタリングをアクティブにします
-noMalware
filter malware
マルウェアフィルターをアクティブにします。マルウェアのホスティングまたは配布のサイトは除外する必要があります
-noRisk level
filter content according to risk level (possible, medium, high)
リスクフィルターをアクティブにします
-noTrackers
filter trackers
追跡フィルターをアクティブにします
-pg age
apply a parental guidance style age filter (12, 18)
与えられた年齢制限に応じて、親のガイダンススタイルフィルターをアクティブにします。不適切なコンテンツが除外されます
-safeSearch
force safe search with search engines
サポートされている検索エンジン(Google、Bing)を使用してSafeSearchモードを実施する
Hide.me CLIは、スタンドアロンまたはSystemDサービスとして使用できます。 Hide.me CLIをSystemDサービスとして使用すると、SystemDの依存関係、監視、さまざまな硬化機能を活用できます。
インストーラースクリプトは、テンプレートユニットファイル[email protected]をリンクします。または、実行してテンプレートユニットファイルを手動でリンクできます。
SystemCtl Link Hide.me@service
接続を管理するには、次のコマンドを使用できます。
| 手術 | 指示 |
|---|---|
| 接続を作成します | systemctl hid.me@serverを有効にします |
| 接続を開始します | Systemctlはhid.me@serverを開始します |
| 接続を停止します | Systemctl stop Hide.me@serverを停止します |
| 接続を削除します | Systemctlはhid.me@serverを無効にします |
サーバーは、サーバー名、グループ名、またはIPアドレスです。
hide.me connectコマンドの追加のコマンドラインオプションは、systemdサービスによって実行されます。 OPTIONS= configuration variable in /opt/hide.me/configに配置できます。
Service Startupは、Hide.meサーバーへの接続が完全に確立されると成功したと見なされます。
Hide.me CLIはデスクトップPCに最適ですが、ルーターや埋め込みデバイスには不適切な場合があります。これらの小さなデバイスについては、ASHスクリプトのセット(スクリプト/ディレクトリ内)を開発しました。
各スクリプトのヘッダーには、使用例が見つかります。
これらのスクリプトの機能は基本的です。つまり、接続/切断されますが、接続を監視しません。このような限られた機能セットは、hide.meを使用して、独自のモニタリングとフェイルオーバーテクニックを備えたルーターを使用するのに十分な場合があります。
各スクリプトは、最新の安定したファームウェア(19.07.7)とワイヤガードサポートを備えたOpenWRTベースのルーターで検証されています。前提条件は、opkgインストールされる必要がありますが、次のとおりです。
このプロジェクトに貢献したい場合は、寄付ガイドをお読みください。