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,如下所示:

# 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.129NETMASK=255.255.255.0
其实就是改一下NAME、DEVICE、IPADDR,另外DNS1和GATEWAY可以删除,设置完毕重启网卡,如下所示:
# 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 0ens33:1:flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.72.129  netmask 255.255.255.0  broadcast 192.168.72.255 ether00:0c:29:15:7f:b9  txqueuelen 1000  (Ethernet)

从上面可以看到,多了一个ens33:1。

14.3.3 查看网卡连接状态

示例命令如下:

# mii-tool ens33ens33: negotiated 1000baseT-FD flow-control, link ok
这里显示link ok,就说明网卡为连接状态。如果显示no link,说明网卡坏了或者没有连接网线。还有一个命令也可以查看网卡的状态,如下:
# ethtool ens33Settings forens33: Supported ports: [ TP ] Supported link modes:   10baseT/Half 10baseT/Full                         100baseT/Half100baseT/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/Half100baseT/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的主机名,如下所示:
# hostnamelocalhost.localdomain

使用hostname命令也可以更改主机名,如下所示:

# hostname Aming# hostnameAming
下次登录时,命令提示符[root@localhost ~]中的localhost就会更改成Aming。不过这样修改只是保存在内存中,如果重启,主机名还会变成改动之前的名称。所以更改主机名的同时还需要更改相关的配置文件/etc/hostname。下面阿铭再介绍一种更改主机名的方法,这种方法会自动更改文件内容,如下所示:
# hostnamectl set-hostname aminglinux-123# hostnameaminglinux-123# cat /etc/hostnameaminglinux-123

 

14.3.5 设置DNS

DNS是用来解析域名的。平时我们访问网站都是直接输入一个网址,而DNS把这个网址解析到一个IP。关于DNS的概念,阿铭不再详细介绍,如果你感兴趣就去网上查一下。在Linux下设置DNS非常简单,只要把DNS地址写到配置文件/etc/resolv.conf中即可。如下所示:
# cat /etc/resolv.conf# Generated byNetworkManagernameserver 119.29.29.29
第一行以#开头的行没有实际意义,仅仅是一个注释,它的意思是,这个配置文件中的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/hosts127.0.0.1 localhost localhost.localdomain localhost4localhost4.localdomain4::1 localhost localhost.localdomainlocalhost6 localhost6.localdomain6
请用Vim编辑该文件,增加一行192.168.72.1 www.baidu.com,保存文件后再ping一下www.baidu.com就会连接到192.168.72.1了。如下所示:
# ping -c 2 www.baidu.comPING www.baidu.com (192.168.72.1) 56(84) bytes of data.64 bytes from www.baidu.com (192.168.72.1): icmp_seq=1 ttl=64 time=0.531 ms64 bytes from www.baidu.com (192.168.72.1): icmp_seq=2 ttl=64 time=0.392 ms--- www.baidu.com ping statistics ---2 packets transmitted, 2 received, 0% packet loss, time 54msrtt min/avg/max/mdev = 0.392/0.461/0.531/0.072 ms
/etc/hosts的格式很简单,每一行为一条记录,分成两部分,第一部分是IP,第二部分是域名。关于hosts文件,有以下几点需要你注意:
  • 一个IP后面可以跟多个域名,可以是几十个甚至上百个;

  • 每一行只能有一个IP,也就是说一个域名不能对应多个IP;

  • 如果有多行中出现相同的域名(对应的IP不一样),会按最前面出现的记录来解析。

posted @ 2023-04-17 10:15  Linux运维阿铭  阅读(65)  评论(0编辑  收藏  举报