V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
Baymaxbowen
V2EX  ›  Linux

请教关于虚拟机桥接模式下的网络连接问题

  •  
  •   Baymaxbowen · 2018-05-19 22:43:36 +08:00 · 5123 次点击
    这是一个创建于 2385 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近在学习 ARM,由于需要用到 nfs,所以需要开发板、主机、虚拟机互相 ping 通

    以下是三者的情形
    • 主机:win10,通过 WiFi 上网,没有条件使用网线上网
    • 虚拟机:Vmware、Ubuntu16.04 ,桥接以太网网卡
    • 开发板:通过交叉双绞线连接笔记本
    目前是只要虚拟机桥接以太网网卡,在三个设备在同一个 IP 段的条件,三者是可以互相 ping 通的。但是这样的话由于主机用无线上网,虚拟机使用以太网网卡,所以虚拟机不能联网。请问有什么办法可以实现三者能互相通信,同时虚拟机又能上网。不要再增加其他设备。
    第 1 条附言  ·  2018-05-20 00:22:19 +08:00

    目前最好的办法还是开发板通过网线连路由器,这样三个设备就都在同一个局域网内了,但是这样的话就很不方便了

    25 条回复    2018-05-21 21:02:37 +08:00
    Baymaxbowen
        1
    Baymaxbowen  
    OP
       2018-05-19 22:59:44 +08:00
    自顶一波,别沉啊
    DearTanker
        2
    DearTanker  
       2018-05-19 23:02:02 +08:00
    你意思是说,主机用 WIFI 上网,虚拟机桥接为网线上网,然后虚拟机上不了网?

    第一个反应是,不可能吧?????????
    crazycen
        3
    crazycen  
       2018-05-19 23:02:27 +08:00
    win10 装代理软件!虚拟机和开发板通过代理上网!
    Baymaxbowen
        4
    Baymaxbowen  
    OP
       2018-05-19 23:07:31 +08:00
    @DearTanker #2 emmm 目前的情形就是这样的,能详细说一下吗
    sfqtsh
        5
    sfqtsh  
       2018-05-19 23:24:30 +08:00 via Android   ❤️ 1
    VMware, 编辑 - 虚拟网络编辑器 - 选择 VMnet0 桥接模式, [桥接到] 不要选择自动,而是选择你那无线网卡。
    defunct9
        6
    defunct9  
       2018-05-20 00:16:56 +08:00 via iPhone
    桥接 wifi 就可以了
    defunct9
        7
    defunct9  
       2018-05-20 00:18:07 +08:00 via iPhone
    另外,为啥不把主机装成 ubuntu,然后 vmware 虚拟个 win10 出来呢
    Baymaxbowen
        8
    Baymaxbowen  
    OP
       2018-05-20 00:20:22 +08:00
    @sfqtsh #5 不不,这样的话开发板就 ping 不通虚拟机了,因为两个用不同的网卡工作
    zro
        9
    zro  
       2018-05-20 00:45:01 +08:00
    以太网网卡和无线网卡桥接?
    Shintaku
        10
    Shintaku  
       2018-05-20 01:08:46 +08:00 via Android
    @defunct9 #7 那 Win10 就没用了吧,还虚拟啥
    iwtbauh
        11
    iwtbauh  
       2018-05-20 02:25:49 +08:00 via Android   ❤️ 1
    我认为你应该桥接虚拟网卡与以太网卡,然后通过 NAT 使虚拟机连接网络

    宿主机建议使用 GNU/Linux

    宿主机中
    sudo tunctl -t tap0 -u 用户名
    sudo brctl addbr br0
    sudo brctl addif br0 eth0
    sudo brctl addif br0 tap0
    sudo ifconfig eth0 0.0.0.0 up
    sudo ifconfig tap0 0.0.0.0 up
    sudo ifconfig br0 192.168.1.100 up

    虚拟机
    启动时要这样设置网络:qemu-system-x86_64 .... -net tap,ifname=tap0,script=no,downscript=no ....

    然后虚拟机中
    sudo ifconfig eth0 192.168.1.101 up

    这样虚拟机和开发板和宿主机应该就能两两互通了

    要使虚拟机访问外网,则设置 NAT,把流量从 wlan0 转发出去应该就 OK 了
    sudo sysctl net.ipv4.ip_forward=1
    iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE

    如果你非要宿主机是 Windows,那么你需要找到上述过程的 windows 设置方法,其实我担心根本不存在有效方法(除非自己开发 Windows 驱动程序)
    iwtbauh
        12
    iwtbauh  
       2018-05-20 02:31:40 +08:00 via Android
    @iwtbauh #11

    iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
    改为
    sudo iptables -t nat -A POSTROUTING -s 192.168.1.0/24 ! -d 192.168.1.0/24 -o wlan0 -j MASQUERADE
    iwtbauh
        13
    iwtbauh  
       2018-05-20 02:34:37 +08:00 via Android
    另外不管你怎么配置,NAT 是必不可少的,因为通常情况下不能桥接 wlan0 和 eth0

    除非你启用 WDS 模式
    iw dev wlan0 set 4addr on

    但这样可能就不符合你的基本要求了
    XiaoxiaoPu
        14
    XiaoxiaoPu  
       2018-05-20 03:19:41 +08:00
    虚拟机可以给两个网卡啊,一个 NAT 走主机 wifi 上外网,一个桥接到主机以太网卡
    bin456789
        15
    bin456789  
       2018-05-20 03:32:58 +08:00 via Android   ❤️ 1
    印象中可以这样
    win10 右键无线网卡,属性,共享给有线网卡
    虚拟键 桥接到有线网卡上
    bin456789
        16
    bin456789  
       2018-05-20 03:33:55 +08:00 via Android
    打错字:虚拟键 -> 虚拟机
    bin456789
        17
    bin456789  
       2018-05-20 03:36:51 +08:00 via Android
    win10 有线网卡的 ip 自动变成 192.168.137.1
    虚拟机自动获得 ip 192.168.137.x
    Baymaxbowen
        18
    Baymaxbowen  
    OP
       2018-05-20 10:06:00 +08:00 via iPad
    @iwtbauh 经常要用到 windows 下的软件所以宿主机只能是 Windows 了,感谢您热情的回复🙉🙉🙉🙉🙉
    Baymaxbowen
        19
    Baymaxbowen  
    OP
       2018-05-20 10:06:49 +08:00 via iPad
    @bin456789 等会去试一下能不能实现🙉
    realpg
        20
    realpg  
       2018-05-20 10:14:18 +08:00
    windows 用 ctrl 同时选中两块网卡 右键,桥接
    然后把虚拟机的共享目标设定为网桥
    w2exzz
        21
    w2exzz  
       2018-05-20 11:32:16 +08:00 via Android
    虚拟机再加网卡啊。。。再加个网卡绑到 WiFi 上。这样虚拟机就能上网了。。。
    Baymaxbowen
        22
    Baymaxbowen  
    OP
       2018-05-20 13:17:29 +08:00
    @bin456789 #15
    @realpg #20 刚刚尝试了一波,但是还是不行,虚拟机无法上网
    realpg
        23
    realpg  
       2018-05-20 13:35:12 +08:00
    @Baymaxbowen #22
    没可能的。你做的哪里有问题。
    Baymaxbowen
        24
    Baymaxbowen  
    OP
       2018-05-20 15:21:55 +08:00 via Android
    @realpg 所以您之前成功了是吗??那我之后再找找原因,不知道您指的虚拟机的共享目标设定为网桥是不是指将虚拟机桥接到网桥这上面吗?我把无线网卡和有线网卡桥接后主机第一次网络显示的是 WiFi,但是重启之后就变成了有线了,不知道这个是否正常??
    skylancer
        25
    skylancer  
       2018-05-21 21:02:37 +08:00
    @Baymaxbowen VM 里除非你桥接了设备(一块 USB WiFi 网卡)才会显示出无线连接的图标,除此之外任何情况都是显示有线网络图标(VM 目前没有模拟无线连接)
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1022 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 21:33 · PVG 05:33 · LAX 13:33 · JFK 16:33
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.