[〜#〜]編集[〜#〜]: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ルールをクライアントに動的にプッシュしますか?
言い換えると、user1
が10.0.0.2
と10.0.2.10
にアクセスでき、user2
が10.0.2.10
と10.0.3.4
にアクセスできる場合、OpenVPNはどのようにして同じ一般的なclient.ovpn
構成を使用しながら、各ユーザーに適切なルートをプッシュしますか?
Client-config-dir内のクライアント固有の構成ファイルを使用して、個々のopenvpnディレクティブをクライアントにプッシュできます。
サーバー構成ファイルにディレクティブを含めます。
client-config-dir ccd
このディレクトリがopenvpnパスにまだ存在しない場合は、次のように作成します。
/etc/openvpn/ccd
次に、クライアントのX509共通名と同じ名前のccd
ディレクトリにクライアントごとに構成ファイルを作成します。次のオプションは、クライアント固有のコンテキストで有効です:Push
、Push-reset
、iroute
、ifconfig-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 ページを参照してください。
別の答えを知りたい人にとっては、以下も役立つはずです。 client-connect
スクリプトを使用する場合、OpenVPNはスクリプトに1つの引数を渡します。それは、Push "route 192.168.10.0 255.255.255.0"
のようなステートメントを追加できる一時ファイルへのパスです。これは、静的CCDファイルを生成する必要なしに動的CCDのようなファイルとして機能します。