web-dev-qa-db-ja.com

Open vSwitchスイッチを実際のネットワークに接続します:iptables masquerade

OpenBoxSwitchを使用してvirtualBoxゲストマシン間のスイッチドネットワークを作成し、ホストOS(Ubuntu 12.04)をこのネットワークに参加させ、この仮想ネットワークのゲートウェイとして構成します。

最初に、vswitchを作成し、デバイスをタップするためにポートを追加しました(その仮想マシンはそれらをブリッジインターフェイスとして使用します)。

ovs-vsctl add-br sw0
ovs-vsctl add-port sw0 tap0

その後、私はLubuntu 12.04仮想マシンのIPを静的に設定しました:

ifconfig eth0 192.168.1.3/24 up
route add -net 0.0.0.0/0 gw 192.168.1.1

ホストOS側では、IPアドレスも設定します。

ifconfig sw0 192.168.1.1/24 up

現在、LubunutからUbunutuにpingを送信できます。ここで、ホストマシンでIPマスカレードを使用して、ネットワーク192.168.1.0/24から物理的なインターフェイス(インターネットに接続されている)にトラフィックを転送します。

sysctl -w net.ipv4.ip_forward=1
iptables -t nat -A POSTROUTING -o eth1 -s 192.168.1.0/24 -j MASQUERADE

したがって、Lubuntu(仮想マシン)から、Ubuntu eth1インターフェイスにpingを実行できますが、実際のネットワーク(たとえば、実際のLAN上のゲートウェイ)に到達できません。

nslookup google.com
Dig @8.8.8.8 yahoo.com
Dig @192.168.30.1 google.com

ネットワークトポロジー

   Internet (real gw) ------ Host OS -------- vswitch -------- VBox Guest 1
           192.168.30.1   ip masquerade    192.168.1.0/24
                                                |
                                                 ------------ VBox Guest 2
9
LokmanDz

答えは本当に私のものではありませんが、次のことを試してください VirtualBoxでvSwitchを開く

Fedoraの一部の人々からの同様の主題に関する簡単なテキストファイルもありました:libvirtとOpenVSwitchがテキストファイルの形式で...それを見つけることができませんでした。

コメントに従って、ここに短い要約があります:

(1)vnet0インターフェイスとbr0ブリッジを作成します。

ovs-vsctl add-br br0
ip tuntap add mode tap vnet0
ip link set vnet0 up
ovs-vsctl add-port br0 vnet0
ip link # (View the created interface)

(2)スピンアップVMこれはvnet0インターフェースを(ブリッジアダプタとして)使用します)

(3)ブリッジbr0を実際のネットワークに接続します。

ovs-vsctl add-br br0 
ovs-vsctl add-port br0 eth0 
ovs-vsctl add-port br0 vnet0 
ifconfig eth0  0 && ifconfig br0 192.168.1.(X) netmask 255.255.255.0
route add default gw 192.168.1.1 br0
route del default gw 192.168.1.1 eth0
1
Droopy4096

/ etc/sysctl.confのこれらの行のコメントを外して、再起動時に転送を有効にします。

net.ipv4.ip_forward=1
net.ipv6.conf.all.forwarding=1
0
Octavian