web-dev-qa-db-ja.com

ルートVM VPN経由のトラフィック、ただしホストトラフィックではない

有料のVPNサービスがあり、(仮想ボックス)仮想マシンのトラフィックをルーティングしたいのですが、(Linux)ホストからのトラフィックはルーティングしません。

VPNサービスはopenvpnを使用します。さまざまなサーバーに接続するための構成ファイルがたくさんあります。インターフェイスのタイプ(tun/tap)を変更できます。

私が読んだことから、tap0とvboxnet0(ホストのみのvirtualboxインターフェース)の間にブリッジを作成する必要があるようです。私はこれに対していくつかの解決策を試しましたが、何もうまくいかなかったようです。いくつかのiptablesfooが必要になるのではないかと心配していますが、どこから始めればよいのかさえわかりません。

どんな助けでも、あるいは正しい方向への製品でさえ、非常に高く評価されます。

4
ben_re

ルーティング 構成でOpenVPNを使用していると仮定します(tunデバイスはブリッジモードでは使用できません)。 OpenVPNがブリッジモードの場合、クライアント側のブリッジにタップデバイスを接続するだけで十分です。

ルーティングモードでは、ルーティングの設定方法を決定する必要があります。仮想マシンにNATを使用してから、VPN経由でトラフィックをルーティングできます。すべてのインターフェイスの転送を有効にするには:

sysctl net.ipv4.conf.all.forwarding=1

そして、転送されたトラフィックを許可し、MASQUERADEtargetを使用してNAT)を有効にするように、関連するiptableルールを構成します。

iptables -A FORWARD -i vboxnet0 -o tun0 -j ACCEPT
iptables -A FORWARD -i tun0 -o vboxnet0 -j ACCEPT

iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE

最後に、 ポリシールーティング を使用して、すべてのゲストトラフィックをVPN経由でルーティングできます。

# name routing table as vguest
echo 100 vguest >> /etc/iproute2/rt_tables

# use vguest routing table for traffic from 10.0.0.0/24 (guest network) 
ip rule add from 10.0.0.0/24 table vguest

# default route via openvpn gateway
ip route add default via 10.8.0.1 dev tun0 table vguest

# flush route cache
ip route flush cache

または、別のLinuxでopenvpnを実行するかopenvpnを実行するために別のゲストを設定することもできます ネットワーク名前空間 。 NATおよび転送は、上記と同様の手順を使用して実行できます。

1
sebasth

OpenVPNクライアントを仮想マシンにインストールします。

1
Appleoddity