Debian ボックスで OpenVPN サーバーを実行しています。その OpenVPN サーバーに接続されているクライアント間のすべてのトラフィックをブロックしたいと考えています。
サーバーのローカル IP は 10.10.10.1 で、クライアントは 10.10.10.2 ~ 10.10.10.8 の IP を取得します。
iptables を使用しようとしましたが、クライアント間のトラフィックは tun0 から出ることはないため、ブロックできないようです。
どうすればいいでしょうか? インターフェース内のトラフィックをブロックできる iptables ルールはありますか? (tun0)
クライアント対クライアントはないserver.conf で有効になっていますが、何らかの理由でユーザーは引き続き相互に ping を実行し、通信することができます。
答え1
サーバーの OpenVPN 構成で「クライアント間」オプションがオンになっているようです。OpenVPN はデフォルトではクライアント間トラフィックをルーティングしないため、このオプションを削除する必要があります。
以下は openvpn のマニュアルページからのテキストです:
クライアント対クライアント
OpenVPN サーバー モードは、単一の tun または tap インターフェイスを介して複数のクライアントを処理するため、実質的にルーターになります。--client-to-client フラグは、クライアントからのすべてのトラフィックを TUN/TAP インターフェイスにプッシュするのではなく、クライアント間のトラフィックを内部的にルーティングするように OpenVPN に指示します。
このオプションを使用すると、各クライアントは現在接続している他のクライアントを「認識」します。それ以外の場合、各クライアントはサーバーのみを認識します。クライアントごとのカスタム ルールを使用してトラフィックをファイアウォール トンネルする場合は、このオプションを使用しないでください。
答え2
クライアント間のすべてのトラフィックをブロックするルールをサーバーに追加します。例:
sudo iptables -I FORWARD --src 10.8.0.0/24 --dst 10.8.0.0/24 -j DROP