引言
Linux在装机后,如果没有特殊配置,会使用动态获取 IP 地址的策略。本文描述了,虚拟机使用网络的拓扑图,以及如何通过配置,将 IP 地址固定下来,不会因为重启而失效。同时可以访问外网地址。
一、NAT模式
NAT - 网络地址转换,是目前 IPv4 的ip 地址分配策略,可以解决 ip 地址不足的问题,同时有效地防止来自网络外部的攻击,隐藏并保护网络内部的计算机。
具体细节请戳:nat(网络地址转换方法)
无论是寄宿于 Windows 上的虚拟 Linux 服务主机,还是局域网内部的实体主机,都是采用这种 NAT 的IP 地址分配策略。它的网络拓扑是这样的:
VMnet8 是一个NAT 组网方式的虚拟网卡(VMnet 1 是Host-only 网络模式的虚拟网卡),虚拟机以 NAT 组网模式连接的外部通信都是走这个 VMnet8 虚拟网卡。
二、CentOS设置固定IP
cd 到 /etc/sysconfig/network-scripts 目录下:
查找 ifcfg-eth0 配置文件,如果没有,就自行创建一个 ifcfg-eth0 文件,并添加以下内容:
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=static
IPV6INIT=no
NAME="System eth0"
IPADDR=192.168.1.140
GATEWAY=192.168.1.2
DNS1=192.168.1.2
NETMASK=255.255.255.0
HWADDR=00:0C:29:CB:E4:19
注意,如果 VMnet8 虚拟网卡的 ip 地址是 192.168.1.1,那么 ifcfg-eth0 文件中的 GATEWAY 一定不能选这个 ip 地址。如果不知道MAC 地址,可以 ifconfig 来查看 eth0 的MAC地址然后拷贝过来。
添加完上述信息后,重新启动网络服务,service network restart:
看到所有信息正常后,可以ping 测外网地址,如 www.baidu.com ,以及宿主机ip 地址。都是可以成功的:
综上就是关于 Linux 系统下设置网络的相关知识,欢迎文末留言。
补充:CentOS7 下的网络配置
首先要说明的是,CentOS7 已经默认不支持 ifconfig 指令了,因此,如果你在 CentOS 7 下使用 ifconfig 指令来查看ip 信息,那么就会报 command not found。
查看IP 的工作由 ip addr 指令代替, 刚安装好的 CentOS7 可能连外网都 ping 不通。原因是系统的网卡配置文件中的 ONBOOT 属性是 no ,就算是 DHCP ,也不会获取到 ip 地址。
所以,这一项一定要设置为yes :ONBOOT=yes。
另外,刚刚说的网卡配置文件实际就是 /etc/sysconfig/network-scripts 目录下和 ip 信息对应的文件名称:
那么 ens33 就是 CentOS 的网卡名,ifcfg-ens33 就是这个网卡的配置文件。打开文件,一开始 BOOTPROTO属性是 dhcp ,也就是动态获取 ip。在绝大多数情况都需要我们将它改为 static ,而且,文件中没有固定 ip 配置信息,需要我们手动补充。
红框内是手补属性,除此之外,可以把IPV6INIT 改为 no,另外必须令:
BOOTPROTO=static
ONBOOT=yes
其他的内容是在安装完 CentOS7 后默认的(也不像 CentOS6 那样连文件都没有)。改好配置后,保存退出。
最后一步就是重启网络服务,CentOS7 又要耍个性了:
systemctl restart network
执行完成后不会有任何提示信息,你需要主动去检查自己的网络配置,比如 ip addr 查看我们的ens33 是否已经分配了我们为它设置的 ip地址,同时去访问外网,看是否能ping 通。
这样,我们的网络就配置好了。
但是ip addr 命令的确难用,首先两个单词是分开的,中间多了一个空格,而且ip 和 addr 两个单词都属于单手拼写系,非常不便捷,另外,很多外部安装软件可能都需要依赖于旧的 ifconfig 指令,因此,不论如何也一定要在 CentOS7 上安装 ifconfig 指令。
系统既然已经可以联网,那么只需要通过 yum 来完成安装即可,但注意!yum install ifconfig 会提示“找不到 package”,因此,我们需要先执行:
yum search ifconfig
这样可以找到 net-tools.x86_64 ,这是一个 基础 网络工具,于是我们可以安装它来完成对 ifconfig 命令的安装:
yum install net-tools.x86_64
安装好之后,我们就可以像曾经那样愉快的使用 ifconfig 命令了 (* ̄︶ ̄)。