通过双网卡形式解决VBox无法访问外网

背景

需要宿主机连接虚拟机,且虚拟机可以访问外网。

本人电脑(没有无线网卡)在连接网线的情况下,直接通过桥接网卡就可以访问外网。但是由于一些原因,只能使用外接无线USB适配器方式连接 wifi,导致 vbox 通过桥接网卡无法使用外网(我的猜测),但是可以通过宿主机访问虚拟机,为了使虚拟机也可以访问外网,因此增加一个 NAT网卡。

操作步骤

通过虚拟机网络配置,开通两个网卡,分别为 NAT 网卡(enp0s3)、桥接网卡(enp0s8)

  • 启动虚拟机
    记住下面的配置,稍后会把这些设置到配置文件中
    eagle@local:~$ ifconfig 
    enp0s3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 10.0.2.15  netmask 255.255.255.0  broadcast 10.0.2.255
            inet6 fe80::4911:7451:32fc:475f  prefixlen 64  scopeid 0x20<link>
            ether 08:00:27:71:95:ac  txqueuelen 1000  (Ethernet)
            RX packets 121  bytes 15114 (15.1 KB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 180  bytes 17718 (17.7 KB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    enp0s8: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 192.168.5.88  netmask 255.255.255.0  broadcast 192.168.5.255
            inet6 fe80::a00:27ff:fe39:b2d8  prefixlen 64  scopeid 0x20<link>
            ether 08:00:27:39:b2:d8  txqueuelen 1000  (Ethernet)
            RX packets 203  bytes 28141 (28.1 KB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 300  bytes 30387 (30.3 KB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
  • 设置网卡的静态IP,直接贴出配置文件的内容如下:
    # => 方法一:传统方式
    # 首先修改 IP 设置如下,这里使用 ifconfig 内容,当然 address 也可以改成自己想要的
    eagle@local:~$ cat /etc/network/interfaces
    auto lo
    iface lo inet loopback
    auto enp0s3
    iface enp0s3 inet static
    address 10.0.2.15
    netmask 255.255.255.0
    gateway 10.0.2.2
    
    auto enp0s8
    iface enp0s8 inet static
    address 192.168.5.88
    netmask 255.255.255.0
    gateway 192.168.5.1
    
    # 更新 DNS 解析
    eagle@local:~$ cat /etc/systemd/resolved.conf
    [Resolve]
    DNS=8.8.8.8
    
    # 重启生效
    eagle@local:~$ reboot 
    
    # => 方法二:使用 netplan (本人选择的方案)
    eagle@local:~$ sudo cp /etc/netplan/01-network-manager-all.yaml /etc/netplan/02-network-manager-custom.yaml
    eagle@local:~$ cat /etc/netplan/02-network-manager-custom.yaml 
    network:
      version: 2
      renderer: NetworkManager
      ethernets:
        enp0s3:
          dhcp4: no
          addresses: [10.0.2.15/24]
          gateway4:  10.0.2.2
          nameservers:
            addresses: [8.8.8.8, 114.114.114.114]
        enp0s8:
          dhcp4: no
          addresses: [192.168.5.88/24]
          gateway4:  192.168.5.1
          nameservers:
            addresses: [8.8.8.8, 114.114.114.114]
    
    sudo netplan apply  # 立即生效
    
  • 重启,然后确认IP是否设置成功
    eagle@local:~$ ifconfig enp0s3
    enp0s3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 10.0.2.15  netmask 255.255.255.0  broadcast 10.0.2.255
            inet6 fe80::a00:27ff:fe71:95ac  prefixlen 64  scopeid 0x20<link>
            ether 08:00:27:71:95:ac  txqueuelen 1000  (Ethernet)
            RX packets 135  bytes 18331 (18.3 KB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 343  bytes 37889 (37.8 KB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    eagle@local:~$ ifconfig enp0s8
    enp0s8: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 192.168.5.88  netmask 255.255.255.0  broadcast 192.168.5.255
            inet6 fe80::a00:27ff:fe39:b2d8  prefixlen 64  scopeid 0x20<link>
            ether 08:00:27:39:b2:d8  txqueuelen 1000  (Ethernet)
            RX packets 1042  bytes 120516 (120.5 KB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 611  bytes 53698 (53.6 KB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
            
    eagle@local:~$ ping baidu.com
    PING baidu.com (123.125.114.144) 56(84) bytes of data.
    64 bytes from 123.125.114.144 (123.125.114.144): icmp_seq=1 ttl=51 time=40.6 ms
    64 bytes from 123.125.114.144 (123.125.114.144): icmp_seq=2 ttl=51 time=40.9 ms
    64 bytes from 123.125.114.144 (123.125.114.144): icmp_seq=3 ttl=51 time=41.7 ms
    64 bytes from 123.125.114.144 (123.125.114.144): icmp_seq=4 ttl=51 time=41.0 ms
    ^C
    --- baidu.com ping statistics ---
    4 packets transmitted, 4 received, 0% packet loss, time 3005ms
    rtt min/avg/max/mdev = 40.646/41.096/41.702/0.432 ms
    

    此时可以看到 两个网卡都是 是我设置的IP,一般你现在都可以访问网络了。如果还不能访问网络,则继续进行下面的步骤。

  • 修改路由
    # 查看当前的路由信息
    eagle@local:~$ route -n
    Kernel IP routing table
    Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
    0.0.0.0         10.0.2.2        0.0.0.0         UG    100    0        0 enp0s3
    0.0.0.0         192.168.5.1     0.0.0.0         UG    20101  0        0 enp0s8
    10.0.2.0        0.0.0.0         255.255.255.0   U     100    0        0 enp0s3
    169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 enp0s3
    172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 docker0
    172.18.0.0      0.0.0.0         255.255.0.0     U     0      0        0 br-d17b92044bd2
    172.20.0.0      0.0.0.0         255.255.0.0     U     0      0        0 br-c5056e3550a9
    192.168.5.0     0.0.0.0         255.255.255.0   U     101    0        0 enp0s8
    
    # 因为当前只有 NAT 网卡可以连外网,所以这里只需要保留 NAT 网卡的路由即可(删除前记得把上面的输出保存好,后面方便增加回来)。
    eagle@local:~$ sudo route del -net 0.0.0.0 gw 192.168.5.1 
    [sudo] password for eagle: 
    eagle@local:~$ route -n
    Kernel IP routing table
    Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
    0.0.0.0         10.0.2.2        0.0.0.0         UG    100    0        0 enp0s3
    10.0.2.0        0.0.0.0         255.255.255.0   U     100    0        0 enp0s3
    169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 enp0s3
    172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 docker0
    172.18.0.0      0.0.0.0         255.255.0.0     U     0      0        0 br-d17b92044bd2
    172.20.0.0      0.0.0.0         255.255.0.0     U     0      0        0 br-c5056e3550a9
    192.168.5.0     0.0.0.0         255.255.255.0   U     101    0        0 enp0s8
    
    # 现在再尝试一下是否可以联网
    eagle@local:~$ ping baidu.com
    PING baidu.com (220.181.57.216) 56(84) bytes of data.
    64 bytes from 220.181.57.216 (220.181.57.216): icmp_seq=1 ttl=53 time=38.7 ms
    64 bytes from 220.181.57.216 (220.181.57.216): icmp_seq=2 ttl=53 time=38.7 ms
    64 bytes from 220.181.57.216 (220.181.57.216): icmp_seq=3 ttl=53 time=38.5 ms
    ^C
    --- baidu.com ping statistics ---
    3 packets transmitted, 3 received, 0% packet loss, time 2004ms
    rtt min/avg/max/mdev = 38.515/38.695/38.789/0.205 ms
    
总结

通过上面的方式设置并生效之后,存在一个问题就是虚拟机不能访问宿主机(我猜应该也是路由的问题,但由于自己不需要,所以就不折腾了),由于本人在网上搜了很多资料,都没有解决桥接网卡下无法连外网的问题,同时也看到很多人遇到这个问题,所以就把自己这个解决方案记录下来,分享给大家。、

参考文章

https://blog.csdn.net/u010039418/article/details/80934346
https://blog.csdn.net/qq_42975842/article/details/81705244

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值