《循序渐进Linux(第2版) 基础知识 服务器搭建 系统管理 性能调优 虚拟化与集群应用》——4.6 网络设置与维护

简介: interface:网络接口名,Linux下的网络接口名类似于eth0、eth1和lo等(在CentOS 7.x版本中,网络接口名变为类似enp0s1、enp0s2这样的标识),分别表示第1块网卡、第2块网卡和回环接口。

本节书摘来自异步社区《循序渐进Linux(第2版) 基础知识 服务器搭建 系统管理 性能调优 虚拟化与集群应用》一书中的第4章,第4.6节,作者:高俊峰著,更多章节内容可以访问云栖社区“异步社区”公众号查看

4.6 网络设置与维护

4.6.1 ifconfig命令
1.功能说明
ifconfig命令用来配置网络或显示当前网络接口状态。它类似于Windows下的ipconfig命令,同时ifconfig命令必须以root用户来执行。其格式如下。

ifconfig [选项] [interface] [inet|up|down|netmask|addr|broadcast]
ifconfig命令的选项及其说明如表4.39所示。
screenshot

  • interface:网络接口名,Linux下的网络接口名类似于eth0、eth1和lo等(在CentOS 7.x版本中,网络接口名变为类似enp0s1、enp0s2这样的标识),分别表示第1块网卡、第2块网卡和回环接口。这是个可选项,如果不添加此选项,则显示系统中所有的网卡信息;如果添加此选项,则显示指定网卡信息。
  • up:激活一个网络接口。
  • down:与up相反,使指定的网络接口无效。
  • netmask:为一个指定的网络接口指定子网掩码。
  • addr:这里的“addr”为网络接口指定的IP地址。
  • broadcast:为指定的接口设置广播地址。

2.举例
1)显示目前系统所有网络接口信息,使用以下命令。

[root@centos7 ~]# ifconfig
enp0s3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.81.232 netmask 255.255.255.0 broadcast 192.168.81.255
    inet6 fe80::a00:27ff:fe90:55 prefixlen 64 scopeid 0x20<link>
ether 08:00:27:90:00:55 txqueuelen 1000 (Ethernet)
    RX packets 20378 bytes 1845248 (1.7 MiB)
    RX errors 0 dropped 0 overruns 0 frame 0
    TX packets 958 bytes 147065 (143.6 KiB)
    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
 
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 0 (Local Loopback)
    RX packets 4 bytes 336 (336.0 B)
    RX errors 0 dropped 0 overruns 0 frame 0
    TX packets 4 bytes 336 (336.0 B)
    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

从上面可以看出以下几点。

第1行:“UP”代表网卡开启状态,“RUNNING”代表网卡上的网线处于连接状态,“MULTICAST”代表支持组播,“MTU:1500”表示最大传输单元为1500字节。

第2行:依次显示网卡的IP地址、子网掩码和广播地址。

第3行:IPv6地址的配置信息。

第4行:ether后面表示硬件网卡的MAC地址。Ethernet表示连接类型为以太网。

第5、6行:显示网卡接收数据包的统计信息和接收错误的统计信息。

第7、8行:显示网卡发送数据包的统计信息和发送错误的统计信息。

2)在网卡enp0s3上配置两个IP地址,分别为192.168.60.136、192.168.66.138,子网掩码为255.255.255.0,使用以下命令。

[root@centos7 ~]#ifconfig enp0s3 192.168.60.136 netmask 255.255.255.0
[root@centos7 ~]#ifconfig enp0s3:0 192.168.66.138 netmask 255.255.255.0

此时用ifconfig命令查看,就可以看到两个网卡的信息了,分别是“enp0s3”和“enp0s3:0”。如果此时还想在enp0s3上增加IP地址,那么网卡的命名依次是“enp0s3:1”、“enp0s3:2”等。

3)修改网卡的MAC地址为新的MAC地址,使用以下命令。

[root@centos7 ~]#ifconfig enp0s3hw ether xx:xx:xx:xx:xx:xx
其中,“xx:xx:xx:xx:xx:xx”为新的MAC地址,此时用ifconfig查看enp0s3的信息,MAC地址已经更改。

4)将网卡enp0s3禁用后再启用,使用以下命令。

[root@centos7 ~]#ifconfig enp0s3 down
[root@centos7 ~]#ifconfig enp0s3 up

注意
 用ifconfig命令配置的网卡信息,在网卡重启或者机器重启后,所有的配置都失效了,如果要让网卡配置永久生效,就需要修改网卡的配置文件了,这将在下面讲述。
4.6.2 scp命令
1.功能说明
scp就是secure copy,用于将文件或者目录从一个Linux系统复制到另一个Linux系统下。scp传输数据用的是SSH协议,保证了数据传输的安全。其格式如下。

scp 远程用户名@ip地址:文件的绝对路径本地Linux系统路径
scp 本地Linux系统文件路径远程用户名@ip地址:远程系统文件绝对路径名

scp使用第1种格式将远程Linux系统上的某个文件或者目录复制到本地Linux系统上,使用第2种格式是将本地的某个文件或者目录复制到远程Linux系统的某个路径下。

2.举例
1)目前我们处在IP为“192.168.60.133”的Linux系统下,计划将此系统下的/home/ixdba/etc.tar.gz文件复制到IP为“192.168.60.168”的远程Linux系统中root用户下的/tmp目录下,使用下面命令。

[root@centos7 ~]#scp /home/ixdba/etc.tar.gz root@192.168.60.168:/tmp
命令输入完毕,会要求输入“192.168.60.168”服务器root的密码,然后开始远程复制数据。如果目前我们处在“192.168.60.168”服务器上,也可以使用下面的命令传输数据。

[root@centos7 ~]#scp root@192.168.60.133:/home/ixdba/etc.tar.gz /tmp
命令输入完毕,此时会要求输入“192.168.60.133”服务器root的密码,然后开始远程复制数据。

2)将本地/etc目录中所有文件和子目录复制到IP为“192.168.60.135”的远程Linux系统的root用户下的/opt目录中,使用以下命令。

[root@centos7 ~]#scp –r /etc root@192.168.60.135:/opt
这里的选项“r”与cp命令中的“r”选项含义相同。

4.6.3 netstat命令
1.功能说明
netstat命令用来显示本机网络连接、运行端口和路由表等信息。其格式如下。

netstat [选项]

2.举例
1)显示当前系统的路由信息。

[root@centos7 ~]# netstat -rn
Kernel IP routing table
Destination   Gateway     Genmask     Flags  MSS Window irtt Iface
0.0.0.0     192.168.81.250 0.0.0.0     UG    0 0     0 enp0s3
169.254.0.0   0.0.0.0     255.255.0.0   U     0 0     0 enp0s3
192.168.81.0  0.0.0.0     255.255.255.0  U     0 0     0 enp0s3

从上面可以看出,当前系统的默认网关是“192.168.81.250”,而对应的网络接口为enp0s3。

2)显示当前系统中所有有效的TCP连接,使用以下命令。

[root@centos7 ~]#netstat -an
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address      Foreign Address     State   
tcp    0   0 0.0.0.0:22       0.0.0.0:*        LISTEN   
tcp    0   0 127.0.0.1:631      0.0.0.0:*        LISTEN   
tcp    0   0 127.0.0.1:25      0.0.0.0:*        LISTEN   
tcp    0   52 192.168.81.232:22    192.168.81.30:65409   ESTABLISHED
tcp    0   0 192.168.81.232:22    192.168.81.30:64394   ESTABLISHED
tcp6    0   0 :::80          :::*          LISTEN   
tcp6    0   0 :::22          :::*          LISTEN   
tcp6    0   0 ::1:631         :::*          LISTEN   
tcp6    0   0 ::1:25         :::*          LISTEN   
udp    0   0 0.0.0.0:123       0.0.0.0:*             
udp    0   0 127.0.0.1:323      0.0.0.0:*             
udp    0   0 0.0.0.0:46122      0.0.0.0:*             
udp    0   0 0.0.0.0:5353      0.0.0.0:*             
udp6    0   0 :::123         :::*                
udp6    0   0 ::1:323         :::*
……以下省略……

在上面的显示中,可以看出netstat的输出分为两部分,分别是TCP/IP网络部分和UNIX Socket部分,我们先来看看输出的组成部分。

  • Proto:连接协议的种类,主要是TCP/UDP协议。
  • Recv-Q:不是由程序连接而产生的字节数。
  • Send-Q:从远端主机传送而来的字节数。
  • Local Address:本地端的IP地址,可以是IP,也可以是主机名。
  • Foreign Address:远程主机的IP与端口。
  • state:显示状态列,主要有以下几个状态。

    • LISTEN:一般用在服务的监听端口。
    • SYN_SENT:在发送连接请求后等待匹配的连接请求。
    • SYN_RECEIVED:收到一个连接请求后,等待对方对连接请求的确认。
    • TIME_WAIT:表示该连接已经中断,但套接字还在等待网络结束。
    • FIN_WAIT1:表示该套接字已经中断,而连接正在中断之中。
    • FIN_WAIT2:表示该连接已经中断,正在等待对方主机响应中断确认请求。

3)显示目前系统中已经启动的网络连接和对应的端口信息,使用如图4.9所示命令。

screenshot

从图4.9的输出可以看出,系统中对外开放了80、22和23端口。为什么这么说呢?因为这些端口都是针对“0.0.0.0”开放的,而25、631端口仅仅针对内部127.0.0.1开放。最后一列显示了每个端口对应的服务名(Program name)和进程ID(PVD),可以很方便地知道每个端口的用途。

4)查看当前系统上处于连接状态的资源信息,可以使用如图4.10所示命令。
screenshot

从上面的输出看出,有四个线路处于连接状态,分别是远程主机192.168.81.30启动的大于1024的两个端口65409、64394向本地主机192.168.81.232的22端口建立的连接,以及远程主机192.168.81.30启动的大于1024的两个端口49837、49848向本地主机192.168.81.232的23端口建立的连接。

4.6.4 traceroute命令
1.功能说明
traceroute命令用来显示网络数据包传输到指定主机的路径信息,追踪数据传输路由状况。预设数据包大小是38字节,用户可另行设置。它与Windows下的tracert命令类似,其格式如下。

traceroute [选项] [远程主机名或者IP地址] [数据包大小]
traceroute命令的选项及其说明如表4.41所示。

screenshot

2.举例
跟踪从本机到网站www.ixdba.net的数据包发送过程,使用以下命令。

[root@localhost ~]# traceroute -i eth0 -s 192.168.60.251 -w 10 www.ixdba.net 100
traceroute to www.ixdba.net (221.130.192.57) from 192.168.60.251, 30 hops max, 100 byte 
packets
1 192.168.60.3 (192.168.60.3) 0.378 ms 0.564 ms 0.357 ms
2 192.168.1.10 (192.168.1.10) 0.494 ms 0.458 ms 0.377 ms
3 222.90.66.1 (222.90.66.1) 2.199 ms 4.531 ms 6.884 ms
4 61.185.192.101 (61.185.192.101) 8.946 ms 6.319 ms 7.726 ms
5 117.36.120.25 (117.36.120.25) 9.997 ms 23.021 ms 24.337 ms
6 61.150.3.165 (61.150.3.165) 27.591 ms 6.703 ms 11.928 ms
7 125.76.189.81 (125.76.189.81) 8.927 ms 4.388 ms 2.726 ms
8 61.134.0.9 (61.134.0.9) 5.731 ms 3.653 ms 3.667 ms
9 202.97.37.173 (202.97.37.173) 5.908 ms 3.874 ms 4.553 ms
10 202.97.37.182 (202.97.37.182) 2.568 ms 13.896 ms 14.722 ms
11 202.97.37.90 (202.97.37.90) 16.284 ms 26.148 ms 2.946 ms
12 202.97.36.161 (202.97.36.161) 49.285 ms 62.249 ms 55.451 ms
13 202.97.44.58 (202.97.44.58) 56.949 ms 56.292 ms 62.229 ms
14 202.97.15.226 (202.97.15.226) 142.705 ms 139.009 ms 150.365 ms
15 211.136.2.249 (211.136.2.249) 136.982 ms 156.440 ms 153.176 ms
16 211.136.6.22 (211.136.6.22) 136.463 ms 152.606 ms 150.101 ms
17 211.136.188.182 (211.136.188.182) 100.163 ms 128.552 ms 103.801 ms
18 221.130.192.57 (221.130.192.57) 149.583 ms

上面指定eth0网络接口发送数据包,同时指定本地发送数据包的IP为192.168.60.251,并设置超时时间为10秒,最后设置发送数据包的大小为100字节。根据输出可以看到,从本机到www.ixdba.net对应的IP地址经历了18个路由的迂回。

traceroute命令会对这18个路由节点做ICMP的回应时间测试,每个路由节点做3次时间测试,如上面显示,基本上每个路由节点的回应时间都在100秒内,只有在第15个路由节点,回应时间稍长。通过这种网络跟踪,可以测试数据传输在哪个部分出现问题,以便及时解决。

如果在指定的时间内(这里设置的是10秒),traceroute检测不到某个路由节点的回应信息,就在屏幕输出“*”,表示此节点无法通过。由于traceroute是利用ICMP连接的,有些网络设备(如防火墙)可能会屏蔽ICMP通过的权限,因此也会出现节点没有回应的状态,这些都是我们分析网络问题需要知道的。

4.6.5 telnet命令
1.功能说明
telnet命令通过telnet协议与远程主机通信或者获取远程主机对应端口的信息。它与Windows下的telnet具有相同的功能。其格式如下。

telnet 主机名或者IP地址端口
2.举例
1)要通过telnet协议登录到开启了telnet服务的远程主机上,使用以下命令。

[root@localhost ~]# telnet192.168.60.12323
Trying 192.168.60.123...
Connected to 192.168.60.123.
Escape character is '^]'.
 
Kernel 3.10.0-229.el7.x86_64 on an x86_64
centos7 login: ixdba
Password:

当输入用户名ixdba和密码后就登录到了“192.168.60.123”服务器,这里直接用“telnet 192.168.60.123”也是可以的,因为telnet默认寻找的就是“23”端口。

[root@localhost ~]# telnet192.168.60.12325
Trying 192.168.60.123...
telnet: connect to address 192.168.60.123: Connection refused

如果出现这个问题,就表示这个端口对应的服务没有开启,或者端口被屏蔽,无权访问。

2)要查看某台Linux系统的22和80端口是否打开以及分别开启了什么服务,使用以下命令。

[root@localhost ~]# telnet 192.168.60.88 22
Trying 192.168.60.88...
Connected to 192.168.60.88.
Escape character is '^]'.
SSH-2.0-OpenSSH_6.6.1
 
Protocol mismatch.
Connection closed by foreign host.

从这里可以看出,在“192.168.60.88”的22端口运行着SSH服务,对应的SSH版本为SSH-2.0-OpenSSH_6.6.1。

[root@localhost ~]# telnet www.ixdba.net 80
Trying 221.130.192.57...
Connected to www.ixdba.net (221.130.192.57).
Escape character is '^]'.
get
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>501 Method Not Implemented</title>
</head><body>
<h1>Method Not Implemented</h1>
<p>get to /index.html not supported.<br />
</p>
<hr>
<address>Apache/2.2.4 (Unix) PHP/5.2.3 mod_fastcgi/2.4.2 Resin/3.1.3 Server at 
www.ixdba.net Port 80</address>
</body></html>
Connection closed by foreign host.

当输入“telnet www.ixdba.net 80”之后,如果“www.ixdba.net”对应IP的80端口开启,就会给出欢迎信息,类似于“Escape character is '^]'”。此时通过键盘输入“get”命令,将显示80端口对应的应用服务器类型,例如本例的80端口对应的应用服务为Apache与PHP以及resin的组合。

4.6.6 wget命令
1.功能说明
wget命令用来从网络上下载某个软件,这个命令对于能够连接到互联网的Linux系统作用非常大,可以直接从网络下载自己需要的软件。其格式如下。

wget [要下载软件的网址]
2.举例
下载一个linux-4.0.2版本内核,可以使用以下命令。

[root@localhost~]#wget \
>https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.0.2.tar.xz
-- 17:42:05-- https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.0.2.tar.xz
Resolving www.kernel.org (www.kernel.org)... 199.204.44.194, 198.145.20.140,149.20.4.69,...
Connecting to www.kernel.org (www.kernel.org)|199.204.44.194|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 82306532 (78M) [application/x-xz]
Saving to: 'linux-4.0.2.tar.xz'
 
10% [========>     ] 8,781,616  104KB/s eta 7m 35s 2
相关文章
|
7天前
|
安全 Java 数据处理
Python网络编程基础(Socket编程)多线程/多进程服务器编程
【4月更文挑战第11天】在网络编程中,随着客户端数量的增加,服务器的处理能力成为了一个重要的考量因素。为了处理多个客户端的并发请求,我们通常需要采用多线程或多进程的方式。在本章中,我们将探讨多线程/多进程服务器编程的概念,并通过一个多线程服务器的示例来演示其实现。
|
8天前
|
安全 Linux 虚拟化
网络名称空间在Linux虚拟化技术中的位置
网络名称空间(Network Namespaces)是Linux内核特性之一,提供了隔离网络环境的能力,使得每个网络名称空间都拥有独立的网络设备、IP地址、路由表、端口号范围以及iptables规则等。这一特性在Linux虚拟化技术中占据了核心位置🌟,它不仅为构建轻量级虚拟化解决方案(如容器📦)提供了基础支持,也在传统的虚拟机技术中发挥作用,实现资源隔离和网络虚拟化。
网络名称空间在Linux虚拟化技术中的位置
|
21天前
|
Linux
linux查看应用对应的端口
linux查看应用对应的端口
15 0
|
21天前
|
网络协议 安全 Linux
linux系统安全及应用——端口扫描
linux系统安全及应用——端口扫描
35 0
|
21天前
|
存储 负载均衡 索引
linux7安装elasticsearch-7.4.0集群配置
linux7安装elasticsearch-7.4.0集群配置
109 0
|
26天前
|
安全 Shell Linux
【Shell 命令集合 系统管理 】Linux 锁定终端 vlock命令 使用指南
【Shell 命令集合 系统管理 】Linux 锁定终端 vlock命令 使用指南
35 1
|
26天前
|
监控 Shell Linux
【Shell 命令集合 系统管理 】Linux 显示当前登录到系统的用户信息 who命令 使用指南
【Shell 命令集合 系统管理 】Linux 显示当前登录到系统的用户信息 who命令 使用指南
42 1
|
26天前
|
监控 Shell Linux
【Shell 命令集合 系统管理 】Linux 显示目前登入系统的用户信息 w命令 使用指南
【Shell 命令集合 系统管理 】Linux 显示目前登入系统的用户信息 w命令 使用指南
42 2
|
26天前
|
存储 Shell Linux
【Shell 命令集合 系统管理 】Linux 修改用户的属性和配置 usermod命令 使用指南
【Shell 命令集合 系统管理 】Linux 修改用户的属性和配置 usermod命令 使用指南
30 1
|
26天前
|
搜索推荐 Shell Linux
【Shell 命令集合 系统管理 】Linux 管理用户配置文件 userconf命令 使用指南
【Shell 命令集合 系统管理 】Linux 管理用户配置文件 userconf命令 使用指南
32 2