环境
-
ubuntu 20.04 64bit
-
netplan
-
Xshell 6
背景
在使用ubuntu开发过程中,ssh登录虚拟机就需要开发虚拟机的IP一直不变。用NAT的方式,同时设置NAT方式为静态IP方案方便家用和办公。这里只说明在设置NAT方式,及这过程中遇到的问题及解决方式。
1. 配置虚拟机网络,添加端口转发规则
NAT模式即虚拟机的网络是完全依赖于物理主机的网络。此时两个系统并不是处于同一局域网,不能简单的ping通;
但是可以设置Virtualbox在NAT模式(网络地址转换NAT)下的端口转发规则,通过设置规则可使主机连接虚拟机。
添加规则
:
- 名称可随便填写,如ssh
- 主机IP可以不填,或者填写127.0.0.1
- 主机端口随意填写一个不会产生冲突的端口,如2222
- 子系统端口可以不填,或者填写子系统当前IP地址
- 子系统端口如果是要进行ssh连接,则填写22 ; ftp就填写21
示例:
2、Windows10网络配置
3、ubuntu虚拟机配置
从Ubuntu 17.10开始,已放弃在 /etc/network/interfaces 里固定 IP 的配置,即使配置也不会生效。Ubuntu引入了一个名为Netplan的新工具,用于网络设置管理,Netplan将根据YAML描述文件,来配置网关参数信息。我们使用的是20.04的版本,我们需要修改/etc/netplan/目录下的.yaml文件,没有的话就新建一个,根据需要,配置如下:
network:
ethernets:
ens33: #配置的网卡的名称
addresses: [10.0.2.100/24] #配置的静态ip地址和掩码
dhcp4: no #关闭DHCP,如果需要打开DHCP则写yes
optional: true
gateway4: 10.0.2.2 #网关地址
nameservers:
addresses: [8.8.8.8, 114.114.114.114] #DNS服务器地址,多个DNS服务器地址需要用英文逗号分隔开
version: 2
renderer: networkd #指定后端采用systemd-networkd或者Network Manager,可不填写则默认使用systemd-workd
执行
sudo netplan apply
其中addresses
表示静态地址,gateway4
表示网关,nameservers
是DNS
服务器,如果有多个,可以在中括号内用逗号分隔开,如[8.8.8.8, 114.114.114.114]
另外,有的说需要修改/etc/NetworkManager/NetworkManager.conf文件,将managed=false 改为managed=true,但是我不修改也可以,供参考吧
4、使用SSH连接VirtualBox虚拟机
xshell输入ssh localhost 2222,就是访问本机的2222端口,会自动映射到虚拟机中去。同理,mysql的3306等端口也可以映射出去。
主机ip设置为空,这样即使主机ip变了也可以通过端口访问虚拟机
其他注意事项:
- 虚拟机注意配置防火墙,放行通过的数据包
- 主机访问虚拟机时尽量使用ip地址,不要使用127.0.0.1的方式去访问,这样会导致虚拟机那边以为是网关在访问,部分服务的连接无法建立
通过如上配置,基本上就可以很愉快的使用VBox和各个虚拟机。