ルート権限なしでホストにVPNサーバーを設定するには?
次の制限があります。
- サーバーAにはroot権限がありません。私のホームディレクトリでのみ作業できます。特にデバイスを作成することはできません
tun
。 - クライアントBにはすべての権限があり、必要なものをインストールできます。
- SSHポート転送(-L / -R)とSOCKSプロキシ(-D)は機能しますが、私の場合は機能しません。私のクライアントのソフトウェアは多種多様なポートを使用しているため、SOCKSを使用する側に傾いていますが、カーネルレベルでも動作するため、
tsocks
プロキシを使用するように説得することはできません。 1つの効果的な方法は、BのVMで私のクライアントソフトウェアを実行し、VM全体を接続することです。しかし、私は実際にそのようなパスに従いたくありません。 - 特権ポートは必要ないので、Aのルートではない人でも大丈夫です。
- 「実際の」VPNである必要はありませんが、性質上同様のVPNであれば十分です。 Bのプロセスは、A(および接続されているデバイス)のプロセスを書き換えることなく、まるで1台のコンピュータにあるかのように通信できる必要があります。
私はこれを行うエレガントな方法があると信じていません。正しいアプローチは、Aの管理者に問い合わせるか、Bを同じネットワークに接続することです。しかし、今はこれを概念証明で行うことができるかどうか疑問に思います。
答え1
さて、サーバーAへの「ルートなし」アクセスは、次の理由で良いVPNソリューションを作成するのに問題がある可能性があります。
- IP-IPトンネルインターフェイス操作が必要です。
- PPTPインターフェイスを作成するには、root 権限も必要です。
- オープンVPN許可されていないユーザーとして実行することもできますが、インターフェイスの作成を許可するには
ip
sudoコマンドを許可するなど、いくつかのトリックが必要です。tun
- 強い白鳥
CAP_NET_ADMIN
機能するには制限された権限が必要です。rootCAP_NET_RAW
以外のユーザーとしてIKEデーモンを実行すると、iptables updownスクリプトのサポートが中断されます。
友達、あなたに残ったものは何ですか:依存関係SSHソックスプロキシ。ローカルコンピュータでrootとして実行します。
ssh -C2qTnN -D 8080 username@serverA
方法:圧縮、SSH2のみ、自動、pseudo-tty割り当てを強制し、/dev/nullから標準入力リダイレクト、接続共有のためにsshクライアントを「マスター」モードに設定します。
これでアプリケーションを実行するだけです。 Firefoxなどの基本的なSOCKSv5サポートがある場合は、「localhost:8080」をプロキシサーバーとして設定できます。
アプリケーションがデフォルトでこのプロキシをサポートしていない場合は、次のコマンドを使用して実行してください。プロキシチェーン。クライアントにインストールするだけです。
残念ながら、あなたがしたくない唯一の解決策は唯一の解決策のようです。
リンク: