终于到正题了,哈哈,开始的动机就是把如何配置网络记下来,省得下次或者日后又要到处搜。

========================================================

网络类型

虚拟机中(或者物理机也应该有相同的概念吧,毕竟虚拟机虚拟机,就是为了虚拟物理机的吗,不过太确定,网络这块一直是半懂不懂的)中的网络类型主要的有3种,NAT, Host-Only,Bridged。

  • Bridged 桥接,可以理解为在vm中使用宿主机(以下叫host吧,省事)的网块来进行网络通信,相当于在vm与host的网卡搭了一个桥,所以效果就是vm与host本身处理同等地位,此时可以把vm看成是host机所在网络的另一个台“物理”机,最简单或者说这才是vm的真正目的,虚拟出来一个物理机嘛,不过缺点就是费网址,因为我们用的一般是C类网络,前3段是网络地址,留给主机地址的只有第4段,8位,最多也就255台机(还不算首尾地址需要用来做网络地址和广播地址)。但在实际自己使用的过程中也没有这么多台机吧,所以我感觉这个应该才是主流,不过网上的大部分介绍都是配置的另外两种。不知道是不是有什么其他我还没搞清楚的地方,等有空了在来试着配这种网络吧。
  • Host-Only 仅主机,这个很好理解,就是主机网络,把主机当成一个网关(其实是在主机中新建一个虚拟网卡,virtualbox安装的时候默认建了一个叫“以太网适配器 VirtualBox Host-Only Network”的虚拟网卡),然后其下的所有vm都加入这个网络,就是一个小的局域网,和以前大学宿舍间连网打游戏一样,哈哈。所以这个局域网内的所有vm可以相互通信,但不能访问外网(也就是不能通过host连到Internet)。这个是这次需要配置的主要工作,因为cluster中的vm之间要能彼此相互通信,其实我感觉用桥接更方便啊,看来有时间真要去看看桥接配置。一句话,host-only是下面所有的vm组一个局域网,bridged就是vm加入host所在的局域网。
  • NAT 网络地址转换,Network Address Translation,这个是最简单的通信方式,基本不需要配置,纯基于软件(Oracle VM VirtualBox's NAT engine),由其负责刚通信包的地址转换成host所在的地址在转发出去,回来的reply数据包也一样由engine负责转给vm。由于简单不需要配置,所以这也是virtual box给每一个vm默认的网络配置。可以虚拟多个网卡都用NAT,每一个都会分配独立的IP, 从10.0.2.0开始,10.0.3.0 ...以此类推,每一个NAT网卡都相当于一个私有的网络,所以各个vm之间不能相互通信。

附上官方文档对这3种网络模式的原文以方便更准确的理解,来源于Chapter 6. Virtual Networking (virtualbox.org)。

Bridged:

With bridged networking, Oracle VM VirtualBox uses a device driver on your host system that filters data from your physical network adapter. This driver is therefore called a net filter driver. This enables Oracle VM VirtualBox to intercept data from the physical network and inject data into it, effectively creating a new network interface in software. When a guest is using such a new software interface, it looks to the host system as though the guest were physically connected to the interface using a network cable. The host can send data to the guest through that interface and receive data from it. This means that you can set up routing or bridging between the guest and the rest of your network.

Host-Only:

Host-only networking can be thought of as a hybrid between the bridged and internal networking modes. As with bridged networking, the virtual machines can talk to each other and the host as if they were connected through a physical Ethernet switch. As with internal networking, a physical networking interface need not be present, and the virtual machines cannot talk to the world outside the host since they are not connected to a physical networking interface.

NAT:

Network Address Translation (NAT) is the simplest way of accessing an external network from a virtual machine. Usually, it does not require any configuration on the host network and guest system. For this reason, it is the default networking mode in Oracle VM VirtualBox.

以上就是理论部分,由于NAT默认就配置好了,所以只需要在配一个host-only网络即可,也就是配个局域网。其实也很简单,就像大学时一样,配个ip地址,子网掩码,网关,DNS这些即可。Linux现在还有UI了,在UI上配置和在windows里感觉一样,不过一般还都是通过修改配置文件来实现,linux中一切皆文件,不管啥操作,最终落地都是改文件。

配置Host-Only网络

virtualbox安装的时候就已经默认创建了一个Host-Only Adapter,所以只需要知道apdater的网络配置即可,可以通过“管理-主机网络管理器”来进行查看。如果需要多个(比如搭多个不同的局域网或者默认创建的不知道为啥没了),也可以通过这个界面来新增。从主机网络管理器中可以看到,默认创建的这个是Adapter的网络是192.168.56.1/24,DHCP服务器地址是192.168.56.100/24, 自动分配的ip地址段为192.168.56.101 - 192.168.56.254。不过一般都不会使用DHCP,而是配置静态或者说固定的ip地址,这样方便ssh连接。

配置文件

对于ubuntu操作系统来说,从18.04开始使用新的更清晰的yaml配置文件/etc/netplan/*来进行配置,而不再使用之前版本的/etc/network/interfaces文件来配置。这也是我一开始为啥会奇怪我装的ubuntu居然没有这个文件,还在好奇他的网络是怎么通的呢,坑死我了。。。。

附上两个不同配置文件的样例, 来自Configuring Network between Host and Guest VM in VirtualBox | Yury Zhauniarovich.

/etc/network/interfaces

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).source /etc/network/interfaces.d/*# The loopback network interface
auto lo
iface lo inet loopback# The primary network interface (it receives address automatically - dhcp)
auto enp0s3
iface enp0s3 inet dhcp# Secondary interface with static ip (we need to configure this section)
auto enp0s8               # put the name of the new interface
iface enp0s8 inet static  # we choose IP address manually (static)
address 192.168.56.5      # ip address that we have chosen (each VM should have different IP in the 192.168.56.0/24 network)
netmask 255.255.255.0     # /24 network
# gateway 192.168.56.1      # if you don't have access to the Internet try to comment this option

/etc/netplan/01-netconfig.yaml

network:version: 2ethernets:enp0s3:dhcp4: yesenp0s8:dhcp4: noaddresses: [192.168.56.10/24]# gateway4: 192.168.56.1

相比来说,很明显新版本的配置文件更简单清晰明了易懂方便快捷(此处省略一万字的表扬),旧版的那个难记又难懂(此处同样省略大概5千字的吐槽吧,不过好在我不用管他,哈哈)

对于配置文件来说,我安装的ubuntu 22来说,自动生成的配置文件名是/etc/netplan/00-installer-config.yaml,其默认内容是:

# This is the network config written by 'subiquity'
network:ethernets:enp0s3:dhcp4: trueversion: 2

其实我已经添加了Host-Only Adapter了,不过并没有加到这个配置文件中,所以看来virtualbox并不会自动来修改配置文件,不知道以后的版本会不会加强这个功能,这样我只要在virtualbox界面去配置管理网络就好了。

添加Host-Only网卡

默认virtualbox vm已经有了一个网卡1(NAT模式的),只需要新加一个host-only的网卡,相当方便,关机状态右键选设置,然后找到"网络"配置项,在virtualbox UI上支持添加4块网卡,再多就要自己去改了(官网上也有说明,一般没这必要,我也没去仔细看了,以后有需要再说吧,目测不会有这个需要.lol)。网卡1默认是启用的,连接方式是NAT,不用管他,网卡2先勾选“启用网络连接”,连接方式选“仅主机(Host-Only)网络”,由于我只有virtualbox帮忙创建的一个Adpater,所以默认界面名称就会选择"VirtualBox Host-Only Ethernet Adapter",如果有多个,需要连哪个就选哪个,选了哪个就给vm配对应网段下的ip地址即可。

配置vm静态ip地址

最后这一步也就是根据所选的host-only adapter所在的网络来修改配置文件,同一个网段下的vm也使用不同的ip地址,不然会有ip地址冲突(想想好多年都没有遇到这种情况了,记得以前大学上电脑课经常会遇到,哈哈,有点怀念)。我的配置文件如下:

/etc/netplan/00-installer-config.yaml

# This is the network config written by 'jtian'
network:ethernets:enp0s3:dhcp4: trueenp0s8:dhcp4: falseaddresses: [192.168.56.12/24]version: 2

几点注意事项:

  • 新的配置文件是yaml格式,这种文件以缩进来表示结构,所以尽量不要用tab键,每级同样空格数即可(一般是2个空格)
  • 网卡设备名可以通过ip addr show (子命令可简写,所以也可以写成ip a s)来查看,也就是enp0s3, enp0s8那些,s3那个的地址是10.0.2.15/24,可以看出是NAT的网卡,另一个s8就是新加的host-only网卡,现在还没有地址(写文章的时候还没有配置好,哈哈,这次是写整理,完了我在自己去配,因为理解后感觉没啥难度了,应该不会出错,真出错我在过来改吧)
  • 配置完成后要重启服务,推荐使用sudo netplan try,这个命令会校验配置文件模式,正确后在应用,当然有自信的话(往往大部分情况下都会被打脸)也可以直接使用sudo netplan apply来不校验直接上。
jtian@k8s-master:~$ ip a s
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope host valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000link/ether 08:00:27:c3:8a:92 brd ff:ff:ff:ff:ff:ffinet 10.0.2.15/24 metric 100 brd 10.0.2.255 scope global dynamic enp0s3valid_lft 86353sec preferred_lft 86353secinet6 fe80::a00:27ff:fec3:8a92/64 scope link valid_lft forever preferred_lft forever
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000link/ether 08:00:27:99:c8:14 brd ff:ff:ff:ff:ff:ffinet 192.168.56.10/24 brd 192.168.56.255 scope global enp0s8valid_lft forever preferred_lft foreverinet6 fe80::a00:27ff:fe99:c814/64 scope link valid_lft forever preferred_lft forever

我给3台vm分别设置的ip如下:

k8s-master:  192.168.56.10

k8s-worker1: 192.168.56.11

k8s-worker2: 192.168.56.12

吼吼,try完就生效,直接ssh可以连啦,哈哈,搞定。

=====================================================================

上面的通是通了,可惜在搭k8s集群的时候不好用(其实还是我没有完全理解清楚,不管怎么样,再更新一下我现在的配置,说明一些之前可能理解错误的地方)

NAT和NAT Service

virtualbox又将他的NAT分成了两种,一种是默认配置好的NAT,也就是上文提到的,在创建vm时自动配置好,但是ip地址固定为10.0.2.x(忘了具体的值了),而且不支持改动(忘了在哪看到说改了也不生效还是怎么。。。),反正这种只用于创建vm来进行上网,如果搭建集群,则需要使用net service(也就是特殊的nat,这个应该就是vmware中的nat).

virtualbox默认没有创建这种网络,需要在“管理-全局设定-网络”中新建,并且可以指定网络(指定自己的网段,集群中的节点需要在同一个网段内,我用的是192.168.147.0/24),并配置端口转发(主要是为了对外暴露vm或者从主机ssh到vm)。

创建完NAT service后,就可以在vm的网络设置中将网卡的链接方式从默认的"网络地址转化(NAT)"改成"NAT网络“。此时一张网卡就实现了对外通信和集群内部通信。

ubuntu的网络配置和上文host-only中的配置一样,修改/etc/netplan/xxx下的yaml配置文件。

另外还要配置/etc/hosts文件,这是一个主机名-ip地址映射文件,用来解析主机名的。具体配置如下:

root@k8s-master:~# cat /etc/netplan/00-installer-config.yaml
network:ethernets:enp0s3:dhcp4: falseaddresses: [192.168.147.10/24]routes:- to: defaultvia: 192.168.147.1nameservers:addresses: [8.8.8.8]version: 2
root@k8s-master:~# cat /etc/hosts
127.0.0.1 localhost
192.168.147.10 k8s-master
192.168.147.11 k8s-worker1
192.168.147.12 k8s-worker2

默认网关

旧版本的ubuntu配置网关更简单,直接有netplan中使用"gateway4: 192.168.147.1”即可,但是更新后会提示这种方式废弃了,建议使用新的routes来配,也就是上文中的配置。

主机ssh设置

使用NAT后默认主机是不能访问vm的,所以需要通过端口映射来进行访问,在上面的NAT网络配置里可以设置端口映射,“TCP 127.0.0.1 62210 192.168.147.11 22”,这样就可以在主机中使用ssh 127.0.0.1:62210来实现对vm的ssh连接了。(不知道有没有更方便的方式,因为这种需要为每台机创建个端口映射,以后理解加深了在来更新吧)

====================================================================

参考文章列表:

Configuring Network between Host and Guest VM in VirtualBox | Yury Zhauniarovich

Chapter 6. Virtual Networking (virtualbox.org)

VirtualBox Network Settings: All You Need to Know (nakivo.com)

How to set a default gateway with Netplan, now that gateway4 has been deprecated | TechRepublic

virtualbox使用3-配置网络相关推荐

  1. VirtualBox虚拟机Ubuntu配置网络及SSH登陆

    一.虚拟机网卡设置 虚拟机设置->网络.配置网卡1 NAT模式用来上网: 网卡2 Host-Only模式用来主机SSH连接登录 以上混杂模式均设置成全部允许 二.虚拟里配置两个网卡DHCP自动分 ...

  2. VirtualBox虚拟机安装centos网络配置

    VirtualBox虚拟机安装centos网络配置 我的问题是:我通过虚拟机安装的centos系统,想要ping www.baidu.com,一直ping不通,然后在本地电脑用ifconfig查看我的 ...

  3. VirtualBox的四种网络连接方式

    VirtualBox中有4中网络连接方式: NAT Bridged Adapter Internal Host-only Adapter VMWare中有三种,其实他跟VMWare 的网络连接方式都是 ...

  4. 快速理解VirtualBox的四种网络连接方式

    转自:http://www.cnblogs.com/york-hust/archive/2012/03/29/2422911.html VirtualBox中有4中网络连接方式: NAT Bridge ...

  5. linux中nmcli命令配置网卡ip,Linux 使用nmcli配置网络

    Linux 使用nmcli配置网络 前提: 在虚拟机中添加一张桥接模式的网卡,如果是VirtualBox虚拟机中要shutdown才能添加. 1.启动NetworkManager工具,安装nmcli命 ...

  6. Linux 使用nmcli配置网络

    Linux 使用nmcli配置网络 前提: 在虚拟机中添加一张桥接模式的网卡,如果是VirtualBox虚拟机中要shutdown才能添加. 1.启动NetworkManager工具,安装nmcli命 ...

  7. Contos7 克隆实例 以及 配置网络-服务-等相关信息

    以下为我自己整理的克隆虚拟机和设置固定IP的方法,记录一下,以防忘记: 桥接模式网络配置 1.配置ip地址等信息在文件里做如下配置: /etc/sysconfig/network-scripts/if ...

  8. 海思涵科技WIFI认证服务器不在线,在海思平台外加一个usb wifi模块,mt7601 加载ok,配置网络ok,但不能ping通?...

    请教下:我用mt7601 usb wifi模块 加载驱动 配置网络后经常打印 PeerBeaconAtJoinAction(): Set CentralChannel=1 PeerBeaconAtJo ...

  9. 配置网络(静态ip)

    看自己window本地子网掩码和网关信息: ipconfig /all 配置网络 vi /etc/sysconfig/network-scripts/ifcfg-enp0s3 先让它动态分配一个ip地 ...

最新文章

  1. 过关斩将打进Kaggle竞赛Top 0.3%,我是这样做的
  2. .net项目的二次开发解决方案
  3. Qt中的模型视图设计模式
  4. RedHat Satellite 弃 MongoDB ,全面改用 PostgreSQL
  5. Forever.Sun 从URL地址获取参数
  6. 牛顿迭代法c 语言程序,牛顿迭代法 c语言实现
  7. 【Flink】FlinkPer-partition watermark 问题 某个 分区延迟 导致数据丢失
  8. 实战申请Let's Encrypt永久免费SSL证书过程教程及常见问题
  9. jQuery 图片放大预览插件
  10. html中表格table的内容居中显示
  11. 【JZOJ4910】【NOIP2017模拟12.3】子串
  12. 行业寒冬大浪淘沙,互联网电视如何逆流而上
  13. HTML+CSS案例京东静态界面
  14. 那周余嘉熊掌将得队对男上加男,强人所男、修!咻咻! 团队的Beta产品测试报告...
  15. 抖音直播流量怎么来?四大渠道告诉你
  16. cf 723 C2. Potions (Hard Version)(反悔,priority)
  17. 高德地图不开位置无法定位服务器,使用高德地图导航时光标不动(定位不动、无法定位)的用户 请进...
  18. 经济危机下的国际名牌
  19. NLP领域论文笔记【研一下研二上】01
  20. java技术:输入拼音自动提示汉字的方法

热门文章

  1. linux安装系统修改u盘盘符,U盘安装Centos系统时,如何快速确认U盘盘符
  2. Keil C51快速建立项目小技巧。
  3. 文件的绝对路径和相对路径
  4. 时尚高颜值真无线蓝牙耳机排行榜,送女友蓝牙耳机最强清单
  5. DataWei免费的报表工具,大数据可视化平台
  6. 荔枝派进入fel模式
  7. 快手宣布取消“大小周”,互联网公司“996风气”松动?
  8. 苹果手机真不行了!iPhone11系列刚上市就问题不断
  9. 元宵节礼包来了,程序员的福利来了!!!
  10. 安卓市场和安智市场_安卓市场数据出炉,5G手机深似海