VirtualBox NAT 端口映射实现宿主机与虚拟机相互通信

您所在的位置:网站首页 was虚拟主机端口 VirtualBox NAT 端口映射实现宿主机与虚拟机相互通信

VirtualBox NAT 端口映射实现宿主机与虚拟机相互通信

2023-08-11 13:25| 来源: 网络整理| 查看: 265

在进行分布式开发的过程中需要配置主机和服务器的ssh服务。在学习的过程中只能通过配置虚拟机来进行。我用的电脑是Mac,使用了VirtualBox来配置虚拟机服务。

VirtualBox的5种连接方式 NAT :虚拟机可以通过宿主机访问主机能够访问的一切网络,宿主机不能访问虚拟机,虚拟机之间不能访问 NAT网络 :在NAT的基础上,虚拟机之间搭建了局域网,可以实现虚拟机之间的相互访问 桥接 :相当于虚拟机与宿主机连接在同一局域网内,相对于宿主机可见,可以看成是一台连接的宿主机 内部 :虚拟机不能连外网 仅主机(host-only) :虚拟机不能连外网,并且不互通

在进行开发的最开始我选择了桥接模式,但桥接模式每一台虚拟机都会占用一个真实的ip地址,会造成ip地址极大的浪费。并且分布式一般需要设置固定ip,使用桥接模式经常会造成局域网内ip冲突。因此想到用NAT网络对建立的虚拟机网络进行隔离。

NAT面对的需求 虚拟机可以连外网 虚拟机与主机互通 虚拟机与虚拟机互通 虚拟机需要固定IP (防止意外) 主机所在局域网的其他机器访问虚拟机 VirtualBox NAT Network的配置方法

1. VirtualBox全局设置在VirtualBox中添加一块网卡来实现NAT Network。Preference=>Network=>右边的三个小图标中的Configure设置。如果Network中没有网卡的话添加一个。2. 虚拟机网络设置NAT Network注意首先关闭虚拟机,再进行虚拟机网络设置。Network=>attached to =>NAT Network3. 启动虚拟机,设置虚拟机网络配置

1234567891011121314$ vim /etc/sysconfig/network-scripts/ifcfg-enp0s3 注意这里的enp0s3是网卡的名字,每台机器可能不一样,换成你自己的 将这个文件中的如下配置修改或添加成如下:BOOTPROTO=staticONBOOT=yesIPADDR=10.0.2.14NETMASK=255.255.255.0GATEWAY=10.0.2.1DNS1=114.114.114.114DNS2=8.8.8.8 然后启动该网络设置$ systemctl restart network 或者$ service network restart

上述配置中,因为在步骤1中的全局设置中,NAT局域网段设置为了10.0.2.0/24(也就是GATEWAY=10.0.2.1,NETMASK=255.255.255.0 24位子网掩码),所以你设置的IPADDR必须是在这个网段内的地址。此时ping一下www.baidu.com 看是否实现了外网访问。使用ifconfig来查看当前本机ip地址是什么。这表示虚拟机可以访问外网。4. 主机访问虚拟机,采用NAT端口映射虚拟机采用NAT网络配置,虚拟机的ip相对于宿主机是隐藏的。想要使得宿主机对虚拟机进行访问,需要配置端口映射,即通过将宿主机的一个端口(localhost:port)与虚拟机的ssh端口进行连接,宿主机通过访问宿主机端口(localhost:port)实现对虚拟机ssh端口(ip:22)的访问。注意,这个端口是一一对应的。因为整个虚拟机子网10.0.2.0/24网段对主机是隐藏的,主机要想访问虚拟机子网中的任意一台虚拟机,就必须建立一个独立的宿主机端口与虚拟机的ssh端口进行连接。配置NAT端口映射,如下:在VirtualBox全局设置中,配置端口映射Port Forwarding (在步骤1中的NAT网卡设置)在宿主机中,ssh访问localhost:port (localhost地址为127.0.0.1)

12ssh [email protected] -p 23333 或者ssh hadoop@localhost -p 23333

这样就实现了宿主机与虚拟机之间的访问5. 虚拟机与虚拟机之间的访问

虚拟机之间使用ip地址就可以了,因为虚拟机之间由虚拟局域网连接。参考SSH 远程登录至此,我们就完成了NAT Network下虚拟机配置的全部操作。相比于桥接模式,极大的节省了ip资源,也减少了因为虚拟机存在导致对主机局域网的干扰。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3