Linux系统几个跟网络相关的文件和命令
其实,Linux的网络知识挺多的,阿铭在本节只把常用的一些技能教给大家。比如,如何设置IP、如何设置主机名、如何设置DNS等。
14.3.1 用ifconfig命令查看网卡IP
前面阿铭曾用过ip addr这个命令来查看系统的IP地址。其实在CentOS 7之前,我们使用最多的命令是ifconfig,它类似于Windows的ipconfig命令,后面不加任何选项和参数时,只打印当前网卡IP的相关信息(如子网掩码、网关等)。在Windows下设置IP非常简单,然而在命令窗口下如何设置呢?这就需要修改配置文件/etc/sysconfig/network-scripts/ifcfg-xxx了,这里的xxx指的是网卡的名字,可以使用ip addr命令查看所有网卡。如果你的系统里没有ifconfig命令,可以使用yum install -y net-tools安装。如果Linux上有多个网卡,而你只想重启某一个网卡的话,可以使用如下命令:# ifdown ens33; ifup ens33
ifdown即停用网卡,ifup即启动网卡。需要大家注意的是,如果我们远程登录服务器,当使用命令ifdown ens33时,很有可能后面的命令ifup ens33不会运行。这样会导致我们断网而无法连接服务器,所以请尽量使用命令systemctl restart network来重启网卡。或者使用nmcli也可以实现同样的效果:
# nmcli c down ens33; nmcli c up ens33
14.3.2 给一个网卡设定多个IP
在Linux系统中,网卡是可以设定多重IP的,阿铭就曾经为一台服务器的网卡设定了5个IP。多重IP的设置过程如下:# cd /etc/sysconfig/network-scripts/
# cp ifcfg-ens33 ifcfg-ens33:1
然后编辑ifcfg-ens33:1这个配置文件。一定要注意DEVICE要写成 ens33:1,如下所示:
其实就是改一下NAME、DEVICE、IPADDR,另外DNS1和GATEWAY可以删除,设置完毕重启网卡,如下所示:# vi ifcfg-ens33:1
//编辑为类似如下内容
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33:1"
UUID="0f632d9e-f3a1-40f9-8116-3340e2db6074"
DEVICE="ens33:1"
ONBOOT="yes"
IPADDR=192.168.72.129
NETMASK=255.255.255.0
# ifdown ens33 && ifup ens33
之后再查看网卡IP,如下所示:
# ifconfig
ens33:
flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.72.128 netmask 255.255.255.0 broadcast 192.168.72.255
inet6 fe80::454b:a2e5:64e5:67a3 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:15:7f:b9 txqueuelen 1000 (Ethernet)
RX packets 66415 bytes 76169910 (72.6 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 15584 bytes 2655575 (2.5 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
ens33:1:
flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.72.129 netmask 255.255.255.0 broadcast 192.168.72.255
ether
00:0c:29:15:7f:b9 txqueuelen 1000 (Ethernet)
从上面可以看到,多了一个ens33:1。
14.3.3 查看网卡连接状态
示例命令如下:
这里显示link ok,就说明网卡为连接状态。如果显示no link,说明网卡坏了或者没有连接网线。还有一个命令也可以查看网卡的状态,如下:# mii-tool ens33
ens33: negotiated 1000baseT-FD flow-control, link ok
# ethtool ens33
Settings for
ens33:
Supported ports: [ TP ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half
100baseT/Full
1000baseT/Full
Supported pause frame use: No
Supports auto-negotiation: Yes
Supported FEC modes: Not reported
Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half
100baseT/Full
1000baseT/Full
Advertised pause frame use: No
Advertised auto-negotiation: Yes
Advertised FEC modes: Not reported
Speed: 1000Mb/s
Duplex: Full
Port: Twisted Pair
PHYAD: 0
Transceiver: internal
Auto-negotiation: on
MDI-X: off (auto)
Supports Wake-on: d
Wake-on: d
Current message level: 0x00000007 (7)
drv probe link
Link detected: yes
如果网卡没有连接,最后面一行Link detected显示为no。
14.3.4 更改主机名在第3章的时候,阿铭已经介绍过如何更改主机名。安装完系统后,主机名默认为localhost. localdomain,使用hostname命令就可以查看Linux的主机名,如下所示:# hostname
localhost.localdomain
使用hostname命令也可以更改主机名,如下所示:
下次登录时,命令提示符[root@localhost ~]中的localhost就会更改成Aming。不过这样修改只是保存在内存中,如果重启,主机名还会变成改动之前的名称。所以更改主机名的同时还需要更改相关的配置文件/etc/hostname。下面阿铭再介绍一种更改主机名的方法,这种方法会自动更改文件内容,如下所示:# hostname Aming
# hostname
Aming
# hostnamectl set-hostname aminglinux-123
# hostname
aminglinux-123
# cat /etc/hostname
aminglinux-123
14.3.5 设置DNS
DNS是用来解析域名的。平时我们访问网站都是直接输入一个网址,而DNS把这个网址解析到一个IP。关于DNS的概念,阿铭不再详细介绍,如果你感兴趣就去网上查一下。在Linux下设置DNS非常简单,只要把DNS地址写到配置文件/etc/resolv.conf中即可。如下所示:第一行以#开头的行没有实际意义,仅仅是一个注释,它的意思是,这个配置文件中的DNS IP地址是由NetworkManager服务生成的。那么为什么这个DNS由它生成呢?你是否还有印象,我们在定义网卡配置文件的时候,就有一行DNS1=119.29.29.29,其实就是因为这行配置,该配置文件里才有了nameserver的IP地址。resolv.conf有它固有的格式,一定要写成 nameserver IP的格式。阿铭建议你写两个或多个namserver,系统默认会用第一个namserver去解析域名,当第一个解析不成功时会使用第二个。说到这,你是否有疑惑:既然两个地方都可以定义DNS的IP地址,那么到底在哪里定义呢?阿铭给出的答案是:如果只是临时修改DNS IP地址,就直接修改/etc/resolv.conf;如果是永久生效的话,还是要修改网卡的配置文件。在Linux下还有一个特殊文件/etc/hosts也能解析域名,不过需要我们在里面手动添加IP和域名这些内容。它的作用是临时解析某个域名,非常有用。该文件的内容如下:# cat /etc/resolv.conf
# Generated by
NetworkManager
nameserver 119.29.29.29
请用Vim编辑该文件,增加一行192.168.72.1 www.baidu.com,保存文件后再ping一下www.baidu.com就会连接到192.168.72.1了。如下所示:# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4
localhost4.localdomain4
::1 localhost localhost.localdomain
localhost6 localhost6.localdomain6
/etc/hosts的格式很简单,每一行为一条记录,分成两部分,第一部分是IP,第二部分是域名。关于hosts文件,有以下几点需要你注意:# ping -c 2 www.baidu.com
PING www.baidu.com (192.168.72.1) 56(84) bytes of data.
--- www.baidu.com ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 54ms
-
一个IP后面可以跟多个域名,可以是几十个甚至上百个;
-
每一行只能有一个IP,也就是说一个域名不能对应多个IP;
-
如果有多行中出现相同的域名(对应的IP不一样),会按最前面出现的记录来解析。