分享个人 Full-Stack JavaScript 项目开发经验
本文将介绍如何使用 VirtualBox 桥接 CentOS7 虚拟机网络,使主机可以通过静态 IP 访问虚拟机部署的 Web 服务。
首先,在虚拟机的设置中选择网络,连接方式选择桥接网卡,界面名称选择正用于上网的设备。如果是通过 Wi-Fi 上网的笔记本或者主机,则需要选择相关的 Wireless 设备。其它高级设置保留默认值。保存设置后启动虚拟机。
查看当前网络接口设备名称,可以通过显示全部接口 IP 地址命令:
# ip a
也可以通过 NetworkManager 的显示网络接口设备状态的命令查看:
# nmcli -p d
类似地,我们可以找到通过一致的网络设备命名的设备名称,如 enp0s3。其中,en 代表以太网设备(EtherNet),p 表示 PCI 总线或 USB 接口上的设备(PCI device),0s3 表示 PCI 总线地址 0,插槽编号为 3。
编辑对应的网络接口配置文件(输入 i 进入编辑模式):
# vi /etc/sysconfig/network-scripts/ifcfg-enp0s3
以下几项参数需要我们手动设置(其它设置保留默认值,按下 Esc 加 :x 保存并关闭文件。):
BOOTPROTO=static
IPADDR=198.168.0.103
NETMASK=255.255.255.0
ONBOOT=yes
BOOTPROTO
指定获取网络参数的方式,static 表示使用手动的静态配置。
IPADDR
指定静态 IP 地址,需要跟主机位于同一网段。
NETMASK
子网掩码,跟主机一样即可。
ONBOOT
是否在系统启动时启用设备。
如何要桥接的网络是通过 DHCP 动态分配 IP 的,则可以先通过在网主机使用 ping 命令检测要设置的静态 IP 是否已经被占用。
# vi /etc/sysconfig/network
默认网关地址设置跟主机一样即可。
NETWORKING=yes
HOSTNAME=centos7
GATEWAY=192.168.0.1
为了使配置立即生效,还需要执行下面操作。
让 NetworkManager 重新缓存网络配置文件:
# nmcli c reload
断开重连网络接口设备上的连接:
# nmcli dev disconnect enp0s3
# nmcli con up ifname enp0s3
# vi /etc/resolv.conf
使用同主机一样的 DNS 服务器。
nameserver 202.96.134.33
nameserver 202.96.128.86
查看主机 IP 地址、子网掩码和 DNS 服务器:Windows 下可以通过 win + r 后输入 ipconfig /all 查看,MacOS 下可以在系统偏好设置->网络->高级中查看。
默认情况下,用于 Web 服务的 80 和 443 端口并没有开放,需要手动添加开放端口,并重启防火墙。
持久开放 tcp 协议的 80 端口:
# firewall-cmd --add-port=80/tcp --permanent
添加成功后系统会显示 success,然后重启防火墙:
# firewall-cmd --reload
最后可查看防火墙端口开放列表中已成功添加 80/tcp 端口:
# firewall-cmd --list-port
完成以上操作,在虚拟机中启用相应的 web 服务,在主机浏览器中就可以通过刚配置的静态 IP 访问站点了。并且现在虚拟机也跟主机一样,可以访问外部网络,测试如:
ping www.baidu.com