1. 检查网络

不管这台服务器最终用来做什么,能联网(不一定非要互联网,有的服务器为内网服务,需要连接内网)都是第一件事儿。

ping命令:

熟悉windows的人肯定都知道ping命令啦,windows中确定是否能上网最常见的方法也是开始->运行->输入cmd->回车,在弹出窗口输入ping www.baidu.com。

其实Linux中也如是,ping www.baidu.com 也是最常用来检测是否网络通常的命令。当然你也可以ping其他网站,只是习惯百度而已。

当然区别在于,windows默认ping只发4个包,而Linux不停的发包,直至用户退出。

小贴士:一般情况下,用户都可以使用Ctrl + C来取消当前执行的Linux命令。

网络通畅返回结果:

[root@master ~]# ping www.baidu.com
PING www.a.shifen.com (220.181.112.244) 56(84) bytes of data.
64 bytes from 220.181.112.244 (220.181.112.244): icmp_seq=1 ttl=128 time=4.05 ms
64 bytes from 220.181.112.244 (220.181.112.244): icmp_seq=2 ttl=128 time=4.59 ms
64 bytes from 220.181.112.244 (220.181.112.244): icmp_seq=3 ttl=128 time=5.87 ms
64 bytes from 220.181.112.244 (220.181.112.244): icmp_seq=4 ttl=128 time=4.43 ms
64 bytes from 220.181.112.244 (220.181.112.244): icmp_seq=5 ttl=128 time=5.81 ms
^C
--- www.a.shifen.com ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4022ms
rtt min/avg/max/mdev = 4.056/4.956/5.877/0.751 ms

网络不通时返回结果

[root@master ~]# ping www.baidu.com
ping: www.baidu.com: Name or service not known

PS: 并不是说所有错误都会返回这个,只是这个错误最好虚拟出来,而且这个错误出现几率更高,其他错误碰到了再补充吧。

2. 查看IP

不管能不能上网,查看IP应该是必须步骤,因为在虚拟机中操作很不方便,没办法复制粘贴等等,所以基本上Linux都是需要SSH软件进行连接的。

这里我推荐使用SecureCRT,相关文章请参考:https://www.gaoqichen.com/tools/securecrt.html

SSH连接那必须要知道IP咯,不然怎么连(黑人问好脸)...

ip命令:

ip - show / manipulate routing, devices, policy routing and tunnels

从CentOS 7开始,已经默认不安装ifconfig命令了,取而代之的是ip命令。

ifconfig命令是之前用来查看IP地址信息、启动关闭网卡、添加网卡别名等等的。目前ip命令现在已经完全包含了ifconfig,arp,route等的功能,所以本文只介绍ip命令。

PS: 其实ifconfig,arp,route,netstat等命令都属于的整个net-tools工具包已经被CentOS所抛弃,ip命令替代了前三个命令,同理ss命令替代了netstat。如果习惯使用之前命令方式的,可以通过yum -y install net-tools来安装之前的命令。

用法:ip [ OPTIONS ] OBJECT { COMMAND | help }

ip的选项其实有不少,但是说实话很少用到,有兴趣请自行man查看。

对象:

  • link 管理网络设备,如启用、禁用等
  • address 管理IP地址,如添加辅助IP,设置mac地址等
  • route 路由管理

PS: 还有很多,用得最多的还是这三个。

每一个对象都可以使用ip OBJECT help查看更详细的使用方法。

演示:(路由功能暂不演示)

禁用网卡eth0:

[root@master ~]# ip link set dev eth0 down

启用网卡eth0:

[root@master ~]# ip link set dev eth0 up

PS: 有意思的是,ifconfig没有默认安装,但是ifup(启用网卡)和ifdown(禁用网卡)命令是默认可以使用的,不知道为什么。习惯使用之前命令的,可以使用ifdown eth0和ifup eth0来替换上面两条命令。

查看所有设备IP:

[root@master ~]# ip a 
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:b7:14:2e brd ff:ff:ff:ff:ff:ff
    inet 192.168.18.128/24 brd 192.168.18.255 scope global noprefixroute dynamic eth0
       valid_lft 1513sec preferred_lft 1513sec
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:b7:14:38 brd ff:ff:ff:ff:ff:ff

[root@master ~]# ip address
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:b7:14:2e brd ff:ff:ff:ff:ff:ff
    inet 192.168.18.128/24 brd 192.168.18.255 scope global noprefixroute dynamic eth0
       valid_lft 1478sec preferred_lft 1478sec
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:b7:14:38 brd ff:ff:ff:ff:ff:ff

[root@master ~]# ip address show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:b7:14:2e brd ff:ff:ff:ff:ff:ff
    inet 192.168.18.128/24 brd 192.168.18.255 scope global noprefixroute dynamic eth0
       valid_lft 1475sec preferred_lft 1475sec
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:b7:14:38 brd ff:ff:ff:ff:ff:ff

可以看到,输入ip aip addressip address show的输出效果是一样的,这也就是又一个有意思的点,也就是说ip的对象是可以缩写的,如果缩写的字符与实际命令前面的内容唯一匹配,那么就可以替代完整的对象,如果缩写匹配不唯一,默认调用按字母排序的第一个匹配项,所以ip a就成为最简单的缩写了。实际使用中,为了更清晰明了,其实更多情况下缩写为ip addr

查看某一设备IP:

[root@master ~]# ip addr show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:b7:14:2e brd ff:ff:ff:ff:ff:ff
    inet 192.168.18.128/24 brd 192.168.18.255 scope global noprefixroute dynamic eth0
       valid_lft 1743sec preferred_lft 1743sec

给某一设备添加辅助IP:

[root@master ~]# ip addr add 192.168.18.228/24 dev eth0
[root@master ~]# ip addr show eth0   
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:b7:14:2e brd ff:ff:ff:ff:ff:ff
    inet 192.168.18.128/24 brd 192.168.18.255 scope global noprefixroute dynamic eth0
       valid_lft 1759sec preferred_lft 1759sec
    inet 192.168.18.228/24 scope global secondary eth0
       valid_lft forever preferred_lft forever

[root@master ~]# ip addr add 192.168.18.138 dev eth0 label eth0:1
[root@master ~]# ip addr show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:b7:14:2e brd ff:ff:ff:ff:ff:ff
    inet 192.168.18.128/24 brd 192.168.18.255 scope global noprefixroute dynamic eth0
       valid_lft 1604sec preferred_lft 1604sec
    inet 192.168.18.138/32 scope global eth0:1
       valid_lft forever preferred_lft forever

192.168.18.228/24中的192.168.18.228表示IP地址,24表示子网掩码为255.255.255.0,为什么写成24如果有机会再详细讲解。第二个例子中可以看到,如不加默认为32,即255.255.255.255。

label表示给辅助IP起个名字。辅助IP可以有多个,每个辅助IP在生效期间都可以有效连接该块网卡。区别于ifconfig,ip命令为增加辅助IP,ifconfig则给原IP增加别名,区别不言而喻。

辅助IP也好,IP别名也好,只是临时生效,重启网卡或重启计算机该设置失效。

小贴士:辅助IP功能最常用与负载均衡的反向代理中。

删除某一设备IP:

[root@master ~]# ip addr del 192.168.18.128 dev eth0
[root@master ~]# ip addr show eth0   
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:b7:14:2e brd ff:ff:ff:ff:ff:ff
    inet 192.168.18.228/24 scope global secondary eth0
       valid_lft forever preferred_lft forever

删除设备IP可以删除辅助IP,也可以删除网卡原本获取到的IP。同样也是临时生效,重启网卡或重启计算机后恢复。

3. 设置固定IP

当时安装CentOS时,设置的是eth0自动获取IP(DCHP)。

因为要使用SSH连接,如果一直使用DHCP很容易造成混乱,所以需要将该计算机设置为固定IP。

修改固定IP,需要修改网卡配置文件,网卡配置文件存放在/etc/sysconfig/network-scripts/文件夹中,文件名为ifcfg-网卡名称,如eth0的配置文件为ifcfg-eth0,eth1的配置文件为ifcfg-eth1。这也是为什么我们要将网卡名字恢复为CentOS 6及以前的命名规则,这样方便记忆。

修改eth0的配置文件我们使用如下命令编辑:

vi /etc/sysconfig/network-scripts/ifcfg-eth0

PS: 强烈建议修改文件前对文件进行备份,使用如下命令备份网卡配置文件:

[root@master ~]# cp /etc/sysconfig/network-scripts/ifcfg-eth0{,.bak.ks.20181102}
# 使用cp命令备份网卡配置文件
# .bak表示备份文件
# .ks表示备份操作人
# .20181102表示备份日期

cp /etc/sysconfig/network-scripts/ifcfg-eth0{,.bak.ks.20181102}

等价于

cp /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-eth0.bak.ks.20181102

{} 的用法后面会在符号的相关文章中讲解。

默认内容如下:

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=no
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=eth0
UUID=a65d9ff9-aee9-44c6-96e2-6bb1cbb886c0
DEVICE=eth0
ONBOOT=yes

简单说明一下:

  • DEVICE 物理设备名称,即网卡名称
  • TYPE 设备类型,Ethernet为网卡
  • ONBOOT 是否开机自启动
  • BOOTPROTO 采用何种方式来配置主机网络参数

    • none 不使用任何协议(静态网络参数)
    • static 使用静态网络参数
    • dhcp 使用DHCP协议动态配置网络参数
    • bootp 使用BOOTP协议动态配置网络参数
  • DEFROUTE 是否将本网络接口作为网络的默认路由
  • IPV4_FAILURE_FATAL 是否启用IPV4的错误检测
  • IPV6INIT 是否启用IPV6,如非必要请关闭,下面的IPV6开头的内容皆可删除
  • IPV6_AUTOCONF 是否自动配置IPV6地址
  • IPV6_DEFROUTE 是否将本网络借口作为网络的默认路由
  • IPV6_FAILURE_FATAL 是否启用IPV6的错误检测
  • NAME 名字,没什么太大用,后期如果需要复制虚拟机,建议删除该条内容
  • UUID 设为唯一ID,没什么太大用,后期如果需要复制虚拟机,建议删除该条内容

其中加粗的为比较重要的,非加粗的为比较好理解的但却不是很重要的参数

我们想将IP设置为静态,需要将BOOTPROTO设置为none或者static,再在下面添加IP相关设置参数:

  • IPADDR IP地址
  • NETMASK 子网掩码
  • GATEWAY 网关
  • DNS DNS服务器

固定IP地址来源于实际使用环境,如我当前环境为192.168.18.xxx,我将母版机IP地址设置为100,其他机器需要时再规划。网关为192.168.18.2,DNS为网关地址,并添加阿里云dns进去。

eth0最终配置文件如下:

DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=static
DEFROUTE=yes
PROXY_METHOD=none
BROWSER_ONLY=no
IPV4_FAILURE_FATAL=no
IPV6INIT=no
IPADDR=192.168.18.100
NETMASK=255.255.255.0
GATEWAY=192.168.18.2
DNS1=192.168.18.2
DNS2=223.5.5.5

顺便修改网卡eth1,当时设计思路就是eth1负责组建内网使用,也就是说当有多台虚拟机时,eth1负责虚拟机之间互通,但eth1并不负责与宿主机以及外网互通。所以eth1并不需要GATEWAY及DNS。其他配置参数我也将他们删掉了,最终只保留了精简后部分。

修改eth1的配置文件我们使用如下命令编辑:

vi /etc/sysconfig/network-scripts/ifcfg-eth1

eth1最终配置文件如下:

DEVICE=eth1
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=static
IPADDR=172.16.1.100
NETMASK=255.255.255.0

网卡IP都设置完成后,需要重启网卡。使用如下命令重启所有网卡。

[root@master ~]# systemctl restart network

生产环境中一般相同用途的网卡都有多块,比如外网网卡,为了保证高可用,就需要最少有2块可以独立被访问的网卡。尽量不要使用如上命令同时重启所有网卡,应使用重启单块网卡命令,至少保持一块网卡在联通中。当然咱们是测试机无所谓啦。

记得如果修改了IP,重启网卡后生效后,SSH的连接地址也需要修改哦。

重启单块网卡:

[root@master ~]# ifdown eth1 && ifup eth1
Device 'eth1' successfully disconnected.
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/40)

&& 表示前一条命令执行成功时,才执行后一条命令。

虽然上面介绍过了ifupip link set dev eth0 up的作用是一样的,都是重启网卡,但有一个小问题,就是ifup是更新路由表的,ip link set dev eth0 up只是启用网卡,而不更新路由表,所以如果想要重启所有外网网卡(如果只有一块外网网卡、或有多块但需要先后重启)的话,使用ip link set dev eth0 up命令则需要再使用ip route add添加GATEWAY,否则不能上网。

所以目前CentOS 7最小化安装都默认安装ifup和ifdown命令的情况下,还是暂时先使用ifup和ifdown来重启单块网卡吧。

设置完成并重启网卡后,可以使用ip addr查看IP地址信息,并使用ping www.baidu.com查看连接情况。

恩,今天就先到这里吧……

Last modification:July 7th, 2020 at 12:34 pm
If you think my article is useful to you, please feel free to appreciate