web-dev-qa-db-ja.com

インターネットトラフィックをルーティングしない場合のユーザーごとのOpenVPNルール

[〜#〜]編集[〜#〜]:I learn-addressは、ファイアウォールルールを設定するために(openvpn-netfilterプロジェクトで指定されているように)スクリプトを呼び出すために使用する必要があるものであることを知っています。私の質問はconfig.ovpnスクリプトに関連していると思います。 client.ovpnファイルを構成して、ユーザーのISPへのインターネットトラフィックを維持しながら、ユーザーが必要とするルートを同時に学習するにはどうすればよいですか?

OpenVPNサーバーを介してインターネットトラフィックをルーティングするnotしながら、ユーザーごとのファイアウォールルールを実行する方法について質問があります。私は友人のグループのためにVPNサーバーをセットアップしようとしていますが、プロジェクトに取り組んでいます。このGithubプロジェクトのようなものを実装します: https://github.com/gdestuynder/openvpn-netfilter 。これにより、VPNサーバーがユーザーのACLを検索し、サーバー側でiptablesを使用してそれらを実装できるようになります。他のすべてのトラフィックはドロップされます。

私自身の個人用ホームVPNの場合、client.ovpn構成で次を使用して、VPNを介してインターネットトラフィックをnotルーティングできないことを知っています。

route-nopull
route 192.168.1.0 255.255.255.0

ここで、192.168.1.0/24は私のホームサブネットであり、10.8.0.0/24(図には示されていません)はtunアダプターのDHCPIP範囲です。クライアントの構成に配置すると、サーバー設定Push "redirect-gateway def1 bypass-dhcp"が上書きされることを私は知っています。

ここで私は混乱します。ホームサブネットが192.168.1.0/24であることはすでにわかっているので、それをclient.ovpnファイルに簡単に配置できます。しかし、アクセスできるサブネット/ IPについての知識がない場合(ほとんどのユーザーはそうではありません)、OpenVPNはどのようにしてユーザーごとのVPNルールをクライアントに動的にプッシュしますか?

言い換えると、user110.0.0.210.0.2.10にアクセスでき、user210.0.2.1010.0.3.4にアクセスできる場合、OpenVPNはどのようにして同じ一般的なclient.ovpn構成を使用しながら、各ユーザーに適切なルートをプッシュしますか?

2
Scott Crooks

Client-config-dir内のクライアント固有の構成ファイルを使用して、個々のopenvpnディレクティブをクライアントにプッシュできます。

サーバー構成ファイルにディレクティブを含めます。

client-config-dir ccd

このディレクトリがopenvpnパスにまだ存在しない場合は、次のように作成します。

/etc/openvpn/ccd

次に、クライアントのX509共通名と同じ名前のccdディレクトリにクライアントごとに構成ファイルを作成します。次のオプションは、クライアント固有のコンテキストで有効です:PushPush-resetirouteifconfig-Push、およびconfig

たとえば、証明書にCN user1が含まれているクライアントにルートをプッシュするには:

echo 'Push "route 10.0.0.2 255.255.255.255 10.8.0.1"' >> /etc/openvpn/ccd/user1
echo 'Push "route 10.0.2.10 255.255.255.255 10.8.0.1"' >> /etc/openvpn/ccd/user1

これを機能させるには、pullディレクティブを使用してサーバーからクライアントの構成ディレクティブをプルする必要があります。

Client-configにディレクティブclientがある場合があります。これはヘルパーディレクティブであり、次のように展開されます。

pull
tls-client

route-nopullを組み合わせて使用​​しないでください。クライアントがルートをプルするのを停止するため、 VPNサブネットを介してすべてのトラフィックをルーティングするために特定のクライアントでredirect-gatewayが必要な場合は、すべてのクライアントのサーバー構成ファイルではなく、それらのクライアント構成ファイルにのみこのディレクティブを配置できます。 redirect-gatewayディレクティブは、ルーティングコマンドを自動的に実行して、すべての発信IPトラフィックをVPN経由でリダイレクトさせます。 man ページを参照してください。

3
rda

別の答えを知りたい人にとっては、以下も役立つはずです。 client-connectスクリプトを使用する場合、OpenVPNはスクリプトに1つの引数を渡します。それは、Push "route 192.168.10.0 255.255.255.0"のようなステートメントを追加できる一時ファイルへのパスです。これは、静的CCDファイルを生成する必要なしに動的CCDのようなファイルとして機能します。

1
Scott Crooks