将Open vSwitch交换机连接到真实网络:iptables假面舞会


10

我正在使用Open vSwitch在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

在主机操作系统方面,我还设置了IP地址:

ifconfig sw0 192.168.1.1/24 up

目前,我可以从Lubunut ping到Ubunutu。我现在要在主机中使用IP伪装,将网络192.168.1.0/24的流量转发到我的物理接口(连接到Internet):

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

因此,从Lubuntu(虚拟机),我可以ping Ubuntu eth1接口,但是我无法访问真实网络(例如:真实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

如果有,请添加任何进度。我也有同样的问题。
Masood_mj 2014年

Answers:


1

答案不是我真正的答案,而是... 在VirtualBox上尝试遵循Open 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)启动使用vnet0接口(作为桥接适配器)的VM

(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

由于您链接到的外部文章可能会更改,因此建议您在答案中总结解决方案,然后参考该文章。
Esa Jokinen 2015年

0

通过取消注释/etc/sysctl.conf中的以下行来启用重新引导时的转发:

net.ipv4.ip_forward=1
net.ipv6.conf.all.forwarding=1
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.