分页: 1 / 1

这网络怎么配置 [半完美解决]

发表于 : 2010-09-14 3:11
自由建客
-net tap 只能一台虚拟机接一个虚拟网卡,而且各虚拟机不能在同一网段,否则除第一台,其它虚拟机无法连接任何网络,虚拟机直接也不能互通。
我想要的是下面的效果,n 台虚拟机在一个网段下,用虚拟交换机连接,主机用一虚拟网卡与该虚拟网络连接。如同 VMware 的 NAT (Windows 主机,Linux 不清楚)。诸位大侠!怎么搞阿?
------------------------------------------------
由于网上流传文章的局限性以及 debian 文档本身的落后性,害实验了很多次 :em20
还好终于找到可行方法了 :em05
--------------------------------------------------
深夜再次修改,倾情奉献,附最终脚本。
tap0vde.sh.gz
(367 Bytes) 已下载 40 次

代码: 全选

aptitude install -R vde2

vi /etc/network/tap0vde.sh {
#!/bin/sh

TAPNAME=tap0
TAPMAC=52:53:00:00:00:01
VDEDIR="/var/run/${TAPNAME}vde"
VDEGROUP=vde2-net
NETWORK=192.168.10.0

case "$1" in
  up)
    vde_tunctl -t $TAPNAME
    ip link set dev $TAPNAME address $TAPMAC
    mkdir -p "$VDEDIR"
    vde_switch -s "$VDEDIR" -t $TAPNAME -g $VDEGROUP -m 660 \
      --mgmt "${VDEDIR}/mgmt" --mgmtgroup $VDEGROUP --mgmtmode 660 --daemon
    slirpvde -s "$VDEDIR" -n $NETWORK --dhcp -g $VDEGROUP -m 660 \
      -p "${VDEDIR}/slirpvde.pid" --daemon
    ;;
  down)
    kill `cat "${VDEDIR}/slirpvde.pid"`
    vdecmd -s "${VDEDIR}/mgmt" shutdown
    rm -r "$VDEDIR"
    vde_tunctl -d $TAPNAME
    ;;
esac

exit 0
}
chmod +x /etc/network/tap0vde.sh

vi /etc/network/interfaces {
auto tap0
iface tap0 inet static
	address 192.168.10.1
	netmask 255.255.255.0
	pre-up /etc/network/tap0vde.sh up
	post-down /etc/network/tap0vde.sh down
}
gpasswd -a $USERNAME vde2-net

# qemu 启动参数
-net nic,macaddr=XX:XX:XX:XX:XX:XX -net vde,sock=/var/run/tap0vde/
# 要创建 n 台虚拟机的,必须指定 MAC 
一些问题:
interfaces 文件中,pre-up 之类语句,多条时,执行顺序不确定,所以我不得不将其写如单独文件中,之用一条语句调用。
对于虚拟交换机命令名也是五花八门,vde-switch、vde2-switch、vde2_switch 等,我的机器是 vde_switch ,请注意检查。
/etc/network/if-*.d/ 下面的脚本会被多次执行,没操作一个设备就要执行一次,过去只有 lo 和 eth0 时是两次,现在是三次。所以没事最好不要往里面挤。
vde_switch 默认目录,根账户是 /var/run/vde.ctl 而非文档所说 /var/run/vde2 ,且不可运行多次,否则必须手动指定路径。非根账户为 /tmp/vde.ctl 运行多次亦需手动指定。另外,不知 /var/run/vde2 是否有其它用途,所以我干脆不用,而是用了自定义目录。
tap0 的 MAC 随机,tunctl 中也没发现能指定的选项。
vde_tunctl 执行会自动载入 tun 模块,故无须特别在 /etc/modules 中指定。
非根账户可启动 vde_switch 创建虚拟交换机,也可用 slirpvde 创建虚拟路由等,n 台虚拟机可连内网,可出外网,ping 不同外网,但 ftp/http 等无误。唯独不能和主机联网,要和主机连接只能虚拟网卡,偏偏虚拟网卡要根账户,连接虚拟网卡的虚拟交换机也必须要根账户。好在连接根账户创建的虚拟交换机的虚拟机不用根账户,--group vde2-net --mode 660 指定就行了。
----------------------------------------------------
上述方案已过期,最新方案已合并到 squeeze 安装日志。

Re: 这网络怎么配置

发表于 : 2010-09-14 19:53
wzssyqa
Virtualbox 吗?

Re: 这网络怎么配置

发表于 : 2010-09-14 20:24
TeliuTe
虚拟机用桥接上网方式,不用 nat,然后设置固定IP

Re: 这网络怎么配置

发表于 : 2010-09-14 21:30
wzssyqa
如果是要作虚拟网络实验

就选择上图 的 internal

然后,不同的网络输入不一样的名称

Re: 这网络怎么配置

发表于 : 2010-09-17 13:15
自由建客
解决问题,顶一下!