virtualbox 虚拟机组网

最近打算搭一套虚拟机来学习一下 k8s,所以就需要搭建多个可以相互访问的虚拟机并组成一个局域网。搭建的时候走了不少弯路,这里记录一下组网过程。

基础

本文涉及到了如下部分:

  • 宿主机:macOS 10.14.5
  • virtualbox:6.0.8
  • 虚拟机1:ubuntu server 18.04 主机名: master1
  • 虚拟机2:ubuntu server 18.04 主机名: worker1

需求

目的是搭建一套网络,满足下列要求:

  1. 每个虚拟机都可以访问互联网
  2. 宿主机可以通过 ssh 访问每个虚拟机
  3. 虚拟机直接可以相互访问
  4. 虚拟机 ip 固定,且不会依赖宿主机所处网络

需求分析

从需求可以看出来,网络模式选 桥接网卡 模式肯定就不行了,因为桥接网卡会将虚拟机映射到宿主机所处的网络中,虽然可以将其设置为静态 ip,但是依旧会对宿主机网络产生一定影响,如果 宿主机移动到了另一个网络中,而那个网络中恰好又有另一个设备已经使用了虚拟机的 ip,那么势必会出现问题。所以,桥接模式 pass。

然后来看一下 仅主机host-only 模式,这个模式可以满足第 2、3 条需求。但是使用该模式后,虚拟机想要访问互联网的话会受到宿主机的host-only网卡的网络状态影响,如果该网卡不能上网的话那么虚拟机就都不能上网,虽然可以通过配置完成,但是会修改宿主机的网络配置,个人不太满意,继续思考。

一提到简单的网络配置那就想到了 NAT网络地址转换 模式了。这个模式是 VirtualBox 默认的网络配置,可以让虚拟机无需配置就直接连接互联网。刚好可以满足第 1 条需求。

那么情况就已经清晰了,给每台虚拟机都配置双网卡:

  • 网卡1采用 VirtualBox 默认的 NAT网络地址转换 模式,来为虚拟机提供互联网访问。
  • 网卡2采用 仅主机host-only 模式,来提供宿主机到虚拟机的连接以及虚拟机直接的访问。

注意!该套双网卡配置的默认网卡是网卡1,且网卡1的NAT地址转换模式是无法访问其他虚拟机的,而 k8s 有很多网络配置将默认使用网卡1。就会导致很多问题,详情如下:

动手

目的明确了接下来就是动手了,首先因为 VirtualBox 默认的就是 NAT网络地址转换 模式。且绑定在 网卡1 上。所以这个就不用我们操作了,可以通过下面步骤确认一下:

虚拟机网卡1配置

因为宿主机访问虚拟机可以用 网卡2 的host-only模式完成,所以这里的端口转发就不用配置了。

配置网卡2

然后我们给虚拟机配置第二个网卡,使用host-only模式。首先需先新建一个host-only网络,点击菜单栏中 管理 > 主机网络管理器,再点击新建创建,就可以创建一个可用的网络。

新建 host-only 网络

这个网卡就是虚拟机局域网的网关。可以看到默认生生成的网卡地址为192.168.56.1,也就是说我们将要把虚拟机加入到192.168.56.XXX网段上。因为我们要把虚拟机地址设为静态地址,所以后面的DHCP服务器不用去关心。

然后就可以给每个虚拟机设置网卡了。如下,点击 虚拟机设置 > 网络 > 网卡2 > 连接方式选择仅主机 > 界面名称选择上一步新建的网络。设置完成后点击确认就可以完成绑定了。

添加网卡2

配置 ubuntu

网卡挂载完成后,就可以启动虚拟机进行配置了,登录上虚拟机之后ifconfig看一下:

配置之前的 ifconfig

从图里可以看到,enp0s3网卡的 ip 为10.0.2.15,这是网络地址转换模式配置的1号网卡。诶惊了,我第二个网卡呢?其实这里已经挂载上了,只不过还没用启用,用ifconfig -a就可以看到第二个网卡了。

未启用的网卡2

图里可以看到网卡2的名字叫enp0s8,你的有可能不一样,这个记住,一会要用的。

启用网卡2

接下来就启用网卡2,首先编辑网卡配置文件。

sudo vi /etc/network/interfaces

然后新增如下内容,记得把里边的enp0s8改成自己的网卡名,我把这台虚拟机的 ip 设置成了192.168.56.21,这个可以自己随便改,只要是192.168.56.XXX网段就行:

auto enp0s8
# 使用静态 ip
iface enp0s8 inet static
# 设置 ip 地址
address 192.168.56.21
# 设置子网掩码
netmask 255.255.255.0
# 设置广播地址
broadcast 192.168.56.255

编辑完成后:wq保存,然后启用该网卡 下面这个网卡名也要改成自己的

sudo ifup enp0s8

什么你说报错了,找不到ifup?那安上就行了呗:

sudo apt install ifupdown2

启用完了之后再ifconfig就可以看到新的网卡了,如果没看到的话就reboot重启一下。

配置后的网卡2

然后照葫芦画瓢配置好另一台虚拟机就可以测试啦,我配置的信息如下:

主机名 主机地址
master1 192.168.56.11
woker1 192.168.56.21

测试

测试的话相互ping就好了,互联网访问直接ping www.baidu.com就行,这里就不展示了。

master1 连接 worker1
worker1 连接 master1

到此虚拟机就算组网成功了,添加新的虚拟机也只需要将其 ip 添加到192.168..56.XXX网段上即可。

使用别名访问

如果我们想要在一台虚拟机上访问另一台虚拟机,就要用ssh xxx.xxx.xxx.xxx来连接,那么怎么通过别名而不是直接输入 ip 地址进行连接呢,很简单,使用下述命令编辑文件~/.ssh/config,没有直接新建即可:

sudo vi ~/.ssh/config

然后追加下述内容:

# 指定别名为 master1
Host master1
# 指定目标 ip
hostname 192.168.56.11
# 指定登录用户名
user root

完成后:wq保存后测试一下,发现可以直接用master1进行访问了:

root@master1:~/.ssh# ssh master1
root@192.168.56.21's password: 
Welcome to Ubuntu 18.04.2 LTS (GNU/Linux 4.15.0-52-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

  System information as of Tue Jun 25 10:53:16 UTC 2019

  System load:  0.0               Processes:             98
  Usage of /:   40.5% of 9.78GB   Users logged in:       1
  Memory usage: 16%               IP address for enp0s3: 10.0.2.15
  Swap usage:   0%                IP address for enp0s8: 192.168.56.21

133 packages can be updated.
59 updates are security updates.

Last login: Tue Jun 25 10:33:16 2019 from 10.0.2.15
root@master1:~# 

如果在登录输入密码后提示Permission denied, please try again,那就修改ssh的配置文件,启用root登录。使用sudo vi /etc/ssh/sshd_config来打开配合文件,并将PermitRootLoginPasswordAuthentication字段的值设置为yes。然后使用service sshd restart重启服务即可。

免密钥登录

上一步中使用ssh master1访问其他虚拟机时,仍然需要输入密码,所以最后再来配置一下免秘钥登录,配置过程很简单,想让机器 A 访问机器 B,就把机器 A 的公钥放到机器 B 的~/.ssh/authorized_keys 文件里就行了。

首先我们在worker1上生成一个密钥,输入下述命令后一路回车即可:

ssh-keygen

然后登录master1,并依次输入下述两条命令将其复制并写入到master1authorized_keys中,注意我下面的scp命令中使用了worker1别名,要提前进行配置:

# 复制到 master1 主机
scp root@worker1:~/.ssh/id_rsa.pub /home
# 写入到 authorized_keys 中
cat /home/id_rsa.pub >> ~/.ssh/authorized_keys

然后再次使用ssh master1登录就可以发现直接连接上而不需要密码了。

参考

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,236评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,867评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,715评论 0 340
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,899评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,895评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,733评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,085评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,722评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,025评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,696评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,816评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,447评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,057评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,009评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,254评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,204评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,561评论 2 343