VirtualBox VM(ホストとゲストの両方にUbuntu Maverick)を持っています。私のVPNプロバイダーはOpenVPNを使用してTUNを設定しています。 VMからのトラフィックがVPNのみを経由し、VPNがダウンした場合(発生した場合)にドロップされるように設定します。提案?私のiptables-fuは少し弱い
私が試したこと:VirtualBoxの「Host-only networking」を使用して、Hostでvboxnet0ループバックインターフェイスをゲストに提供しましたが、iptables/routesを正しく取得できませんでした。 VMでのNATは避けたいと思います。すでに二重NAT(ISPとホームルーター)を行っているので、もう1つレベルを上げると頭が飛び出します。
その他の可能性:TAPへの切り替え(方法?)およびVMへのブリッジ。 VM内にVPNを作成し、VPN以外のすべてのeth0トラフィックをフィルタリングするiptablesで接続します(ただし、以下を参照)
ボーナスポイント:ホストのVPNを介してゲストからのトラフィックを二重にトンネリングせずに、ホストとゲストで異なるVPN出口ポイントを使用する方法を教えてください。
他の解決策がありますが、これは私が考えていることです:
echo 1 > /proc/sys/net/ipv4/ip_forward
この時点で、ホストにはVPN接続があり、VMはすべてのトラフィックをホストにルーティングします。あとは、ゲストを許可しないようにホストを制限するだけです。 tun0デバイスを経由しないトラフィックをルーティングします。次のようなiptablesルールのセットを使用してこれを行うことができます。
iptables -P FORWARD DROP
iptables -A FORWARD -o tun0 -j ACCEPT
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
すべきうまくいきます。最初のルールは、FORWARDチェーンでパケットをドロップするようにデフォルトポリシーを設定します。これは、ホストがルーティングするパケットにのみ影響し、ホストへのパケット(INPUT)またはホストからのパケット(OUTPUT)には影響しません。 2番目のルールは、tun0をルーティングしているすべてのトラフィックを許可します。必要に応じて、-sourceを使用してそれを強化できます。そして最後のルールでは、tun0から戻ってきた返信がVMにルーティングされるようにします。
VPNは、tunインターフェース上のすべてのパケットが単一のIPからのものであることを期待していますか?その場合は、NATルールも追加する必要があります。おそらく次のようになります。
iptables -t nat -A POSTROUTING -o tun0 -j SNAT --to-source {your Host tun0 ip}