Linux 网络服务
1.1 查看及测试网络¶
查看及测试网络配置是管理 Linux 网络服务的第一步,本节将学习 Linux 操作系统中的 网络查看及测试命令。其中讲解的大多数命令以普通用户权限就可以完成操作,但普通用户 在执行/sbin/目录中的命令时需要指定命令文件的绝对路径。
1.1.1 查看网络配置¶
1. 查看网络接口地址¶
(1)查看活动的网络接口设备 若采用 mini 版 CentOS 7 安装的系统,默认是没有 ifconfig 命令的,需要先通过 yum 方式安装 net-tools 软件包,才有 ifconfig 命令。在不带任何选项和参数执行 ifconfig 命令时, 将显示当前主机中已启用(活动)的网络接口信息。例如,直接执行 ifconfig 命令后可以看 到 ens33、lo 这两个网络接口的信息,具体操作如下:
[root@VM-16-9-centos ]# ifconfig
docker0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 172.17.0.1 netmask 255.255.0.0 broadcast 172.17.255.255
ether 02:42:7c:2d:55:50 txqueuelen 0 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.0.16.9 netmask 255.255.252.0 broadcast 10.0.19.255
inet6 fe80::5054:ff:fe16:3a9 prefixlen 64 scopeid 0x20<link>
ether 52:54:00:16:03:a9 txqueuelen 1000 (Ethernet)
RX packets 51791902 bytes 9684145526 (9.0 GiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 49095710 bytes 7697835155 (7.1 GiB)
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 1000 (Local Loopback)
RX packets 14076 bytes 1715488 (1.6 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 14076 bytes 1715488 (1.6 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
(2)查看指定的网络接口信息
当只需要查看其中某一个网络接口的信息时,可以使用网络接口的名称作为 ifconfig 命 令的参数(不论该网络接口是否处于激活状态)。例如,执行“ifconfig ens33”命令后可以 只查看网卡 ens33 的配置信息,具体操作如下:
[root@VM-16-9-centos ~]# ifconfig eth0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.0.16.9 netmask 255.255.252.0 broadcast 10.0.19.255
inet6 fe80::5054:ff:fe16:3a9 prefixlen 64 scopeid 0x20<link>
ether 52:54:00:16:03:a9 txqueuelen 1000 (Ethernet)
RX packets 51792964 bytes 9684253645 (9.0 GiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 49096762 bytes 7698009938 (7.1 GiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
从上述命令显示的结果中,可以获知 ens33 网卡的一些基本信息,如下所述。
-
inet:表示网络接口的 IP 地址,如“192.168.4.11”。
-
netmask:表示网络接口的子网掩码,如“255.255.255.0”。
-
broadcast:表示网络接口所在网络的广播地址,如“192.168.4.255”。
-
ether:表示网络接口的物理地址(MAC 地址),如“00:0c:29:3a:81:cc”。网络接 口的物理地址通常不能更改,是网卡在生产时确定的全球唯一的硬件地址。 除此以外,还能够通过“TX”和“RX”等信息了解通过该网络接口发送和接收的数据包个 数、流量等更多属性。
2. 查看主机名称¶
在 Linux 操作系统中,相当一部分网络服务都会通过主机名来识别主机,如果主机名配 置不当,可能会导致程序功能出现故障。使用 hostname 命令可以查看当前主机的主机名, 不用添加任何选项或参数,具体操作如下:(另外除了查看主机名还可以使用-i/-I参数来查看ip)
[root@VM-16-9-centos ~]# hostname
VM-16-9-centos
[root@VM-16-9-centos ~]#
[root@VM-16-9-centos ~]# hostname -i
::1 127.0.0.1
[root@VM-16-9-centos ~]# hostname -I
10.0.16.9 172.17.0.1
3. 查看路由表条目¶
Linux 操作系统中的路由表决定着从本机向其他主机、其他网络发送数据的去向,是排 除网络故障的关键信息。直接执行“route”命令可以查看当前主机中的路由表信息,在输出结 果中,Destination 列对应目标网段的地址,Gateway 列对应下一跳路由器的地址,Iface 列 对应发送数据的网络接口。若结合“-n”选项使用,可以将路由记录中的地址显示为数字形式,这可以跳过解析主机 名的过程,在路由表条目较多的情况下能够加快执行速度。
[root@VM-16-9-centos ~]# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default gateway 0.0.0.0 UG 0 0 0 eth0
10.0.16.0 0.0.0.0 255.255.252.0 U 0 0 0 eth0
link-local 0.0.0.0 255.255.0.0 U 1002 0 0 eth0
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
[root@VM-16-9-centos ~]#
[root@VM-16-9-centos ~]#
[root@VM-16-9-centos ~]#
[root@VM-16-9-centos ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.0.16.1 0.0.0.0 UG 0 0 0 eth0
10.0.16.0 0.0.0.0 255.255.252.0 U 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 1002 0 0 eth0
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
4. 查看网络连接情况¶
通过 netstat 命令可以查看当前操作系统的网络连接状态、路由表、接口统计等信息, 它是了解网络状态及排除网络服务故障的有效工具。以下是 netstat 命令常用的几个选项
-
-a:显示主机中所有活动的网络连接信息(包括监听、非监听状态的服务端口)
-
-n:以数字的形式显示相关的主机地址、端口等信息。
-
-r:显示路由表信息。
-
-l:显示处于监听(Listening)状态的网络连接及端口信息。
-
-t:查看 TCP(Transmission Control Protocol,传输控制协议)相关的信息
-
-u:显示 UDP(User Datagram Protocol,用户数据报协议)协议相关的信息。
-
-p:显示与网络连接相关联的进程号、进程名称信息(该选项需要 root 权限)。
通常使用“-anpt”组合选项,以数字形式显示当前系统中所有的 TCP 连接信息,同时显 示对应的进程信息。结合管道命令使用“grep”命令,还可以在结果中过滤出所需要的特定记 录。例如,执行以下操作可以查看本机中是否有监听“TCP 22”端口(即标准 Web 服务)的 服务程序,输出信息中包括 PID 号和进程名称。
[root@VM-16-9-centos ~]# netstat -antp |grep 22
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 4344/sshd
除了 netstat,ss 命令也可以查看网络连接情况,它是 Socket Statistics 的缩写,主要 用于获取 socket 统计信息,它可以显示和 netstat 命令类似的输出内容。但 ss 的优势在于 它能够显示更多更详细的有关 TCP 和连接状态的信息,而且比 netstat 更快速更高效。要想 使用 ss 命令,首先确保 iproute 程序包已被安装,可以通过 yum 方式进行安装。(用法类似)
[root@VM-16-9-centos ~]# ss -antp
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:22 *:* users:(("sshd",pid=4344,fd=3))
LISTEN 0 100 127.0.0.1:25 *:*
1.1.2 测试网络连接¶
用户访问网络服务的前提是网络连接处于正常状态。若网络连接不稳定,甚至无法连接, 用户则无法正常访问网络服务。因此,当网络连接出现问题时,需要通过测试网络连接的命 令来确定故障点。下面介绍几个常用的测试网络连接的命令。
1. 测试网络连通性¶
[root@VM-16-9-centos ~]# ping baidu.com
2. 测试DNS解析¶
[root@VM-16-9-centos ~]# nslookup www.google.com
Server: 183.60.83.19
Address: 183.60.83.19#53
Non-authoritative answer:
Name: www.google.com
Address: 174.37.54.20
Name: www.google.com
Address: 2001::68f4:2e15
[root@VM-16-9-centos ~]# dig www.google.com
; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.7 <<>> www.google.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 44445
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;www.google.com. IN A
;; ANSWER SECTION:
www.google.com. 133 IN A 199.59.149.206
;; Query time: 1 msec
;; SERVER: 183.60.83.19#53(183.60.83.19)
;; WHEN: 五 11月 18 15:51:47 CST 2022
;; MSG SIZE rcvd: 48
**3. iperf 网络测试 **¶
server:
iperf -s -p 1234 -i 1
clent:
iperf -c 172.16.240.204 -p 1234 -i 1 -t 20 -w 20w
修改网卡配置
root@ubuntu:/home/ubuntu# cat /etc/netplan/00-installer-config.yaml
# This is the network config written by 'subiquity'
network:
ethernets:
ens18:
addresses:
- 192.168.1.114/24
gateway4: 192.168.1.1
nameservers:
addresses:
- 192.168.1.1
search:
- 202.106.46.151
version: 2