実行中のOpenVPNクライアントがコマンドラインを介してトンネリングするリモートVPNゲートウェイのIPアドレスを取得する方法はありますか?
--remote
詳細:OpenVPNがリモートサーバーに接続されており、「remote」を提供する.opvnファイルを指定するか、Ubuntuのネットワーク管理者がオプションのコマンドラインから起動するとします。コマンドラインからリモートVPNサーバーのIPアドレスを取得するには?
場合によっては、動作できるハッキングはコマンドライン引数ps aux | grep openvpn
と一致する正規表現を実行することですが、--remote
私はより安定したいと思います。
(重複日数もあります。OpenVPNトンネルサーバーIPを確実に確保しかし、この問題にはまだ何の活動も受け付けられておらず、意図が同じだと100%確信できません。 )
背景:私はこの問題自体に興味がありますが、この問題を解決するための他の方法に関する提案も歓迎します。iptables
VPNトンネルを通過しないすべてのトラフィックをブロックしたいです。この目的のために、私は他の規則の一部として以下を使用します。
iptables -I OUTPUT 1 -d $serverip -j ACCEPT
これは、サーバーのローカルIP(10.xx1など)ではなく、サーバーの外部IPである必要があるようです。
答え1
.ovpnファイルの内部を見るだけでは不十分な場合は、.ovpnファイルを解析し、dnsを確認し、そのアドレスで実行するために必要なすべてのiptablesコマンドを実行する小さなluaスクリプトを作成できます。 Luaではこれを行う必要はなく、必要なスクリプト言語を使用できます。
デフォルトで提供されているコマンドラインツールについては予期しませんでした。あなたは自分の質問に答えましたが、これはすべてのVPNクライアントのopenvpn xxxx.ovpnであるコマンドラインパラメータのみを提供するので、私のシステムでも機能しません。
注:この機能がすべてのopenvpnクライアントで確実に機能するようにするには、.ovpnファイル内にプロキシサーバーを指定し、Nodejsなどを使用して直接高速プロキシサーバーを実装することもできます(OpenvpnはHTTP / 1.0のTCP SOCKS5をサポート)。 CONNECTプロキシとUDP) SOCKS5は特にUDP部分で迅速に実装することが困難です。 openvpn が接続されると、確実に IP アドレスを取得でき、リモートホストでソケットを開く前に iptables コマンドを実行できます。
ところで、私は非常に似た問題があり、最終的にルーターとして機能するIoTデバイスを購入しました。購入したデバイス(Banana Pi BPI R1)をお勧めすることはできませんが、今は機能し、私の役割を果たしています。痛いです。このデバイスにはより良い選択肢があるかもしれません。
私が使用する「トリック」は、IoTルーターでVPN Tun Tapデバイスを入力または出力として使用しない限り、すべての転送をブロックすることです。これは、VPNクライアント自体が出力/入力チェーンの影響のみを受け、問題を完全に回避できるために機能します。
これのもう1つの利点は、有料VPNプロバイダが特定の時間に私が使用しているデバイスの数を知ることができないことです(デバイスは3つに制限されています)。 VPNプロバイダが見るのは、私のIoTルーターにトラフィックが多く、年中無休で接続されているということだけです。