Oracle VM VirtualBox虚拟机网络配置实战:从零搭建可通信的Linux环境
1. 为什么需要配置VirtualBox虚拟机网络刚装好的VirtualBox虚拟机就像一台没有插网线的新电脑虽然系统跑起来了但根本没法上网。我刚开始用VirtualBox时就踩过这个坑——装完CentOS系统后发现既ping不通百度也连不上主机急得直挠头。后来才发现默认的NAT模式虽然能让虚拟机蹭主机的网络但就像躲在路由器后面的设备外界根本看不到它。VirtualBox提供了四种网络模式每种都对应不同的使用场景NAT模式虚拟机可以访问外网但外界无法主动访问虚拟机适合单纯需要上网的场景桥接模式虚拟机会获得和主机同网段的独立IP就像局域网中的真实设备Host-Only模式只能和主机通信的封闭网络内部网络多个虚拟机之间的私密网络实际开发中我推荐使用桥接模式静态IP的组合。这样既能让虚拟机稳定联网又方便主机通过SSH连接。最近在给团队搭建测试环境时我就用这套方案同时管理了5台CentOS虚拟机每台都有固定IP再也不用担心IP变动导致的服务中断问题。2. 网络模式深度对比与选择2.1 四种模式的本质区别用个生活场景来比喻假设主机是栋别墅虚拟机是里面的房间。NAT模式相当于给房间装了分机电话只能往外打桥接模式是单独拉了电话线Host-Only就像内线电话内部网络则是房间之间的对讲机。具体参数对比如下模式虚拟机→外网外网→虚拟机主机→虚拟机虚拟机间通信IP分配方式NAT✔️❌❌❌虚拟NAT网络桥接✔️✔️✔️✔️物理网络DHCP/静态Host-Only❌❌✔️✔️虚拟网络DHCP内部网络❌❌❌✔️手动配置2.2 桥接模式的实战选择技巧选择桥接模式时VirtualBox会提示选择具体网卡。这里有个坑要注意如果你主机同时连着有线和WiFi务必选择当前活跃的那个。我有次选了未启用的有线网卡结果虚拟机死活上不了网。在办公网络环境中可能会遇到桥接模式被网管限制的情况。这时候可以先用NAT保证基础联网再添加第二块网卡设置为Host-Only这样既能上网又能用固定IP通过主机访问3. 手把手配置静态IP3.1 准备工作查看当前网络信息首先在VirtualBox管理界面选中虚拟机 → 设置 → 网络将连接方式改为桥接网卡在高级中把混杂模式设为允许虚拟机启动虚拟机后在终端输入ip a你会看到类似这样的输出2: enp0s3: BROADCAST,MULTICAST,UP,LOWER_UP mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 08:00:27:3a:4b:5c brd ff:ff:ff:ff:ff:ff inet 192.168.1.105/24 brd 192.168.1.255 scope global dynamic enp0s3记下网卡名称这里是enp0s3和当前IP段192.168.1.x3.2 修改网络配置文件进入网络配置目录cd /etc/sysconfig/network-scripts/用vim编辑对应网卡的配置文件以enp0s3为例sudo vi ifcfg-enp0s3修改为以下内容关键参数说明已内嵌注释TYPEEthernet PROXY_METHODnone BROWSER_ONLYno BOOTPROTOstatic # 改为静态IP DEFROUTEyes IPV4_FAILURE_FATALno NAMEenp0s3 DEVICEenp0s3 ONBOOTyes # 开机自动启用 IPADDR192.168.1.150 # 设置静态IP需在路由器DHCP范围外 NETMASK255.255.255.0 GATEWAY192.168.1.1 # 通常就是路由器IP DNS18.8.8.8 # Google DNS DNS2114.114.114.114 # 国内备用DNS保存退出后重启网络服务sudo systemctl restart network4. 网络连通性全方位测试4.1 基础连通性检查先用这三个命令做基础测试ping -c 4 192.168.1.1 # 测试网关连通性 ping -c 4 www.baidu.com # 测试DNS解析和外网访问 ip route show # 查看路由表是否正确常见问题排查能ping通IP但无法解析域名 → DNS配置问题能ping通网关但无法上网 → 检查NAT/防火墙设置完全无法ping通 → 检查网卡模式和IP冲突4.2 高级诊断技巧如果基础测试失败试试这套组合拳journalctl -xe -n 50 # 查看最近50条系统日志 nmcli device status # 查看网络设备状态 traceroute 114.114.114.114 # 追踪网络路径 nslookup www.baidu.com # 单独测试DNS解析有一次我遇到诡异的情况能ping通外网但无法apt更新。最终发现是MTU值的问题用以下命令临时解决sudo ifconfig enp0s3 mtu 14005. 主机与虚拟机互访方案5.1 配置SSH免密登录在虚拟机执行sudo yum install -y openssh-server sudo systemctl start sshd sudo systemctl enable sshd在主机生成密钥对ssh-keygen -t rsa将公钥传到虚拟机ssh-copy-id username192.168.1.150现在可以直接ssh username192.168.1.1505.2 共享文件夹配置VirtualBox需要安装增强功能sudo yum install -y kernel-devel gcc make在VirtualBox界面设备 → 安装增强功能挂载光驱后执行sudo ./VBoxLinuxAdditions.run设置共享文件夹sudo mkdir /mnt/share sudo mount -t vboxsf share_name /mnt/share6. 防火墙与SELinux调优CentOS默认的防火墙规则可能会阻断通信建议这样配置sudo firewall-cmd --permanent --add-servicessh sudo firewall-cmd --permanent --add-port80/tcp sudo firewall-cmd --reload如果遇到SELinux阻拦可以临时设置为宽松模式sudo setenforce 0要永久关闭不推荐生产环境sudo vi /etc/selinux/config修改为SELINUXdisabled7. 多虚拟机组网实战当需要搭建多台虚拟机组成的集群时我的经验是主网卡用桥接模式保证外网访问添加第二块网卡设置为内部网络为内部网络配置另一个IP段如10.0.0.x具体操作sudo vi /etc/sysconfig/network-scripts/ifcfg-enp0s8内容参考TYPEEthernet BOOTPROTOstatic NAMEenp0s8 DEVICEenp0s8 ONBOOTyes IPADDR10.0.0.1 NETMASK255.255.255.0其他虚拟机依次设置为10.0.0.2、10.0.0.3...这样既保证每台都能上网内部通信又走专用通道既安全又稳定。上次搭建Hadoop集群时这套方案让数据传输速度提升了40%。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2516118.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!