Linux网络服务之网络配置与测试

324 阅读13分钟

查看网络配置

ifconfig(查看网络接口信息)

ifconfig命令来自于net-tools包 (图形化界面已安装,而最小化界面是没有的。需要自己安装)

[root@localhost ~]# rpm -qi net-tools
Name        : net-tools
Version     : 2.0
Release     : 0.22.20131004git.el7
Architecture: x86_64
Install Date: 2022年07月30日 星期六 21时13分02秒
Group       : System Environment/Base
Size        : 938986
License     : GPLv2+
Signature   : RSA/SHA256, 2017年08月11日 星期五 02时30分02秒, Key ID 24c6a8a7f4a80eb5
Source RPM  : net-tools-2.0-0.22.20131004git.el7.src.rpm
Build Date  : 2017年08月03日 星期四 17时17分34秒
Build Host  : c1bm.rdu2.centos.org
Relocations : (not relocatable)
Packager    : CentOS BuildSystem <http://bugs.centos.org>
Vendor      : CentOS
URL         : http://sourceforge.net/projects/net-tools/
Summary     : Basic networking tools
Description :
The net-tools package contains basic networking tools,
including ifconfig, netstat, route, and others.
Most of them are obsolete. For replacement check iproute package.

基本用法:

格式含义
ifconfig显示当前主机中已启用(活动)的网络接口信息。
ifconfig -a显示所有网络接口(包括没有启动的网卡)
ifconfig 具体网卡名称只显示具体网卡的详细信息(无论是否启用)
ifconfig 网卡名称 up/down表示开启或关闭指定网卡
ifconfig 网络接口 IP地址[/子网掩码长度]新建临时IP地址(添加一块虚拟网卡)
ifconfig -s查看通讯情况

查看所有启用的网络接口信息

在不带任何选项和参数执行ifconfig命令时,将显示当前主机中已启用(活动)的网络接口信息。

网卡名称详解:

ens33:第一块以太网的名称详解。

“ens33”中的:

  • “en"是”EtherNet"的缩写,表示网卡类型为以太网;
  • “s"表示热插拔插槽上的设备(hot-plug Slot);
  • 数字“33”表示插槽编号。
[root@localhost ~]# ifconfig 
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.32.10  netmask 255.255.255.0  broadcast 192.168.32.255
        inet6 fe80::3472:123c:a468:4387  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:2a:03:4e  txqueuelen 1000  (Ethernet)
        RX packets 113983  bytes 120323055 (114.7 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 21870  bytes 2046586 (1.9 MiB)
        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 1  (Local Loopback)
        RX packets 642  bytes 55674 (54.3 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 642  bytes 55674 (54.3 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

virbr0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255
        ether 52:54:00:34:c1:33  txqueuelen 1000  (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

ens33网卡信息每行详细解释:

 ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
 #ens33:网卡名称
 #UP:该接口已启用
 #BROADCAST:支持广播
 #RUNNING:正在允许
 #MULTICAST:支持组播
 #mtu 1500:网络传输时的最大传输单元,单位字节。这里为1500字节。
 ​
 ​
 inet 192.168.72.10  netmask 255.255.255.0  broadcast 192.168.72.255
  #这一行是网络接口的IP地址、子网掩码、广播地址       
         
 inet6 fe80::a5da:ff58:2c32:2b5f  prefixlen 64  scopeid 0x20<link>
 #这一行是IPV6地址、子网长度、作用域(link小时仅该接口有效)
 ​
 ether 00:0c:29:18:b5:ff  txqueuelen 1000  (Ethernet)
 #这一行是mac地址、传输队列长度(传输缓存大小)、接口类型
 ​
 RX packets 54379  bytes 4648603 (4.4 MiB)
 #接收报文个数、总字节数
 ​
 RX errors 0  dropped 0  overruns 0  frame 0
 #接收错误个数、丢弃个数、溢出个数、冲突帧数
 ​
 TX packets 102028  bytes 28282331 (26.9 MiB)
 #发送报文个数、总字节数
         
 TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
 #发送错误个数、丢弃个数、溢出个数、载荷数、冲突数

查看/开启/关闭/设置指定网卡

ifconfig 网卡名称 [up|down]

查看ens33网卡

 [root@localhost ~]# ifconfig ens33
 ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
         inet 192.168.72.10  netmask 255.255.255.0  broadcast 192.168.72.255
         inet6 fe80::a5da:ff58:2c32:2b5f  prefixlen 64  scopeid 0x20<link>
         ether 00:0c:29:18:b5:ff  txqueuelen 1000  (Ethernet)
         RX packets 97597  bytes 8390076 (8.0 MiB)
         RX errors 0  dropped 0  overruns 0  frame 0
         TX packets 187394  bytes 51899032 (49.4 MiB)
         TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

关闭、开启ens33网卡

 [root@localhost ~]# ifconfig ens33 down     //关闭
 [root@localhost ~]# ifconfig ens33 up       //开启

设置临时虚拟网卡

[root@localhost ~]# ifconfig ens33:0 192.168.1.10
[root@localhost ~]# ifconfig ens33:0
ens33:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.10  netmask 255.255.255.0  broadcast 192.168.1.255
        ether 00:0c:29:2a:03:4e  txqueuelen 1000  (Ethernet)

image.png 查看通讯情况

[root@localhost ~]# ifconfig -s
Iface      MTU    RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg
ens33     1500   114227      0      0 0         22030      0      0      0 BMRU
ens33:0   1500      - no statistics available -                        BMRU
lo       65536      654      0      0 0           654      0      0      0 LRU
virbr0    1500        0      0      0 0             0      0      0      0 BMU

image.png 增加临时网卡

[root@localhost ~]# ifconfig ens37 192.168.72.37/24

增加临时网卡也可使用 ip address实现:

 ip address add 192.168.72.37/24 dev ens37
  
 ip address del 192.168.72.37/24 dev ens37

hostname——查看主机名称

查看或设置当前主机名

 hostname [主机名]

示例

查看主机名称

 [root@localhost ~]# hostname
 localhost.localdomain

image.png

临时修改主机名称

[root@localhost ~]# hostname
localhost.localdomain
[root@localhost ~]# hostname jlx
[root@localhost ~]# su
[root@jlx ~]# hostname
jlx

image.png 永久修改主机名称,修改后重启生效:

  • 法一:编辑配置文件/etc/hostname,该文件只对第一行生效。
  • 法二:使用 “hostnamectl set-hostname 新主机名” 命令,该命令实际是修改了配置文件。

route(查看路由表条目)

服务器可以当路由使用。

格式

 route           //打印路由表
 ​
 route -n        //以数字形式显示路由信息
 ​
 route add -net  网段地址 gw IP地址     //添加指定网段的路由记录
 ​
 route del -net 网段地址               //删除指定网段的路由记录
 ​
 route add default gw IP地址          //向路由表中添加默认网关记录
 ​
 route del default gw  IP地址         //删除路由表中默认的网关记录

示例

[root@jlx ~]# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         gateway         0.0.0.0         UG    100    0        0 ens33
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 ens33
192.168.32.0    0.0.0.0         255.255.255.0   U     100    0        0 ens33
192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0
[root@jlx ~]# route -n        //以数字形式展示,不允许显示别名
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.32.2    0.0.0.0         UG    100    0        0 ens33
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 ens33
192.168.32.0    0.0.0.0         255.255.255.0   U     100    0        0 ens33
192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0

image.png

netstat(查看网络连接情况)

netstat命令是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表、实际的网络连接以及每一个网络接口设备的状态信息。

格式:

 netstat  [选项]

常用选项

选项作用
-a显示主机中所有活动的网络连接信息(包括监听、非监听状态的服务端口)。
-n拒绝显示别名,以数字的形式显示相关的主机地址、端口等信息。
-t查看TCP协议相关的信息。
-u显示UDP协议相关的信息。
-p显示与网络连接相关联的进程号、进程名称信息(该选项需要root权限)
-r显示路由表信息。
-l显示处于监听状态(Listen)的网络连接及端口信息。

常用搭配:

 netstat -a       //列出所有端口
 ​
 netstat -at      //列出所有TCP端口
 ​
 netstat -au      //列出所有UDP端口
 ​
 netstat -ax      //列出所有unix端口
 ​
 netstat -lt      //列出处于监听状态的TCP端口
 ​
 netstat -tnlp   //直接使用ip地址列出所有处于监听状态的TCP端口,且加上程序名

示例:

netstat -lt,列出处于监听状态的TCP端口。

[root@jlx ~]# netstat -lt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 0.0.0.0:sunrpc          0.0.0.0:*               LISTEN     
tcp        0      0 jlx:domain              0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:ssh             0.0.0.0:*               LISTEN     
tcp        0      0 localhost:ipp           0.0.0.0:*               LISTEN     
tcp        0      0 localhost:smtp          0.0.0.0:*               LISTEN     
tcp        0      0 localhos:x11-ssh-offset 0.0.0.0:*               LISTEN     
tcp        0      0 localhost:6012          0.0.0.0:*               LISTEN     
tcp6       0      0 [::]:sunrpc             [::]:*                  LISTEN     
tcp6       0      0 [::]:ssh                [::]:*                  LISTEN     
tcp6       0      0 localhost:ipp           [::]:*                  LISTEN     
tcp6       0      0 localhost:smtp          [::]:*                  LISTEN     
tcp6       0      0 localhos:x11-ssh-offset [::]:*                  LISTEN     
tcp6       0      0 localhost:6012          [::]:*                  LISTEN     

image.png netstat -tnlp,直接使用ip地址列出所有处于监听状态的TCP端口,且加上程序名。

[root@jlx ~]# netstat -tnlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      1/systemd           
tcp        0      0 192.168.122.1:53        0.0.0.0:*               LISTEN      1545/dnsmasq        
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1203/sshd           
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      1198/cupsd          
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1478/master         
tcp        0      0 127.0.0.1:6010          0.0.0.0:*               LISTEN      17465/sshd: root@pt 
tcp        0      0 127.0.0.1:6012          0.0.0.0:*               LISTEN      20501/sshd: root@pt 
tcp6       0      0 :::111                  :::*                    LISTEN      1/systemd           
tcp6       0      0 :::22                   :::*                    LISTEN      1203/sshd           
tcp6       0      0 ::1:631                 :::*                    LISTEN      1198/cupsd          
tcp6       0      0 ::1:25                  :::*                    LISTEN      1478/master         
tcp6       0      0 ::1:6010                :::*                    LISTEN      17465/sshd: root@pt 
tcp6       0      0 ::1:6012                :::*                    LISTEN      20501/sshd: root@pt 

image.png

ss(查看网络连接情况)

ss 命令:也可以查看网络连接情况,主要用于获取 socket 统计信息,它可以显示和 netstat 命令类似的输出内容。

但 ss 的优势在于它能够显示更多更详细的有关 TCP 和连接状态的信息,而且比 netstat 更快速更高效。

当服务器的socket连接数量变得非常大时,无论是使用netstat命令还是直接cat /proc/net/tcp,执行速度都会很慢。

ss快的秘诀在于,它利用到了TCP协议栈中tcp_diag。tcp_diag是一个用于分析统计的模块,可以获得Linux 内核中第一手的信息,这就确保了ss的快捷高效 ss命令是Linux CentOS 7中iproute软件包的一部分,默认已经安装。

选项含义
-ttcp协议相关
-uudp协议相关
-w套接字相关
-xunix sock相关
-llisten状态的连接
-a所有
-n数字格式
-p相关的程序及PID
-e扩展的信息
-m内存用量
-o计时器信息
-r--resolve 把 IP 解释为域名,把端口号解释为协议名称

示例:

查看TCP协议下的21端口是否开启

 [root@localhost ~]# ss -ntap |grep 21       //查看TCP协议下的21端口
 LISTEN     0      32          :::21                      :::*                   users:(("vsftpd",pid=84913,fd=3))

7.png

试网络连接

ping(测试网络连通性)

linux中,默认会一直ping下去, 按Ctrl+c 终止。

 ping  [选项]  目标主机
复制代码

常用选项

选项说明
-w超时时间(在 deadline 秒后退出)
-c count指定发送报文的次数(ping指定次数后停止ping)
-i指定收发信息的间隔时间
-s设置数据包的大小
-n只输出数值
-p设置填满数据包的范本样式
-q不显示指令执行过程
-R记录路由过程
-t设置存活数值TTL的大小
-v详细显示指令的执行过程

示例

ping -c3,只ping3个包。

[root@jlx ~]# ping -c3 192.168.32.2
PING 192.168.32.2 (192.168.32.2) 56(84) bytes of data.
64 bytes from 192.168.32.2: icmp_seq=1 ttl=128 time=0.128 ms
64 bytes from 192.168.32.2: icmp_seq=2 ttl=128 time=0.235 ms
64 bytes from 192.168.32.2: icmp_seq=3 ttl=128 time=0.229 ms

--- 192.168.32.2 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2000ms
rtt min/avg/max/mdev = 0.128/0.197/0.235/0.050 ms

image.png

ping -w 4,等待时间为4秒,4秒后自动退出。

[root@jlx ~]# ping -w 4 192.168.32.2
PING 192.168.32.2 (192.168.32.2) 56(84) bytes of data.
64 bytes from 192.168.32.2: icmp_seq=1 ttl=128 time=0.089 ms
64 bytes from 192.168.32.2: icmp_seq=2 ttl=128 time=0.244 ms
64 bytes from 192.168.32.2: icmp_seq=3 ttl=128 time=0.245 ms
64 bytes from 192.168.32.2: icmp_seq=4 ttl=128 time=0.090 ms

--- 192.168.32.2 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3001ms
rtt min/avg/max/mdev = 0.089/0.167/0.245/0.077 ms

image.png

traceroute(跟踪数据包)

测试从当前主机到目的主机之间经过的网络节点。

 traceroute  目标主机地址

示例

[root@jlx ~]# traceroute 192.168.32.1
traceroute to 192.168.32.1 (192.168.32.1), 30 hops max, 60 byte packets
 1  192.168.32.1 (192.168.32.1)  0.590 ms^C

image.png

nslookup(域名解析)

测试DNS域名解析

 nslookup  目标主机地址  [DNS服务器地址]

示例

[root@jlx ~]# nslookup www.baidu.com
Server:		8.8.8.8
Address:	8.8.8.8#53

Non-authoritative answer:
www.baidu.com	canonical name = www.a.shifen.com.
Name:	www.a.shifen.com
Address: 14.215.177.38
Name:	www.a.shifen.com
Address: 14.215.177.39

image.png

dig(域名解析)

dig可以显示出更多详细信息。

dig是一个在类Unix命令行模式下查询DNS包括NS记录,A记录,MX记录等相关信息的工具。

[root@jlx ~]# dig www.baidu.com

; <<>> DiG 9.9.4-RedHat-9.9.4-50.el7 <<>> www.baidu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 8488
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;www.baidu.com.			IN	A

;; ANSWER SECTION:
www.baidu.com.		861	IN	CNAME	www.a.shifen.com.
www.a.shifen.com.	6	IN	A	14.215.177.38
www.a.shifen.com.	6	IN	A	14.215.177.39

;; Query time: 68 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN:  8 13 18:19:45 CST 2022
;; MSG SIZE  rcvd: 101

image.png

永久修改网络相关配置

设置网络参数的方式:

  • 临时配置--使用命令调整网络参数

    • 简单、快速,可直接修改运行中的网络参数
    • 一般只适合在调试网络的过程中使用
    • 系统重启以后,所做的修改将会失效
  • 固定设置--通过配置文件修改网络参数

    • 修改各项网络参数的配置文件
    • 适合对服务器设置固定参数时使用
    • 需要重载网络服务或者重启以后才会生效

静态NAT网络设置

网卡配置文件:/etc/sysconfig/network-scripts/ifcfg-ens33

 [root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
 TYPE=Ethernet          //接口类型,常见的有Ethernet、Bridge
 PROXY_METHOD=none
 BROWSER_ONLY=no
 BOOTPROTO=static       //激活此设备时使用的地址配置协议,设置成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               //此配置文件应用到的设置
 UUID=bdc9ad35-297a-413f-a7f2-be27868e0e72       //设备的唯一标识
 DEVICE=ens33            //设备名
 ONBOOT=yes              //在系统引导时是否激活此设备
 ​
 #下面四行是自己添加的内容
 IPADDR=192.168.32.10         //自定义的IP地址
 NETMASK=255.255.255.0        //子网掩码
 GATEWAY=192.168.32.2         //网关地址
 DNS1=8.8.8.8                 //DNS服务器地址
 ​

image.png

双网卡设置

步骤1. 增加网络适配器。

image.png 步骤2. ifconfig -a 显示所有网卡,查看第二块网卡名称。

[root@jlx ~]# ifconfig -a
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.32.10  netmask 255.255.255.0  broadcast 192.168.32.255
        inet6 fe80::3472:123c:a468:4387  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:2a:03:4e  txqueuelen 1000  (Ethernet)
        RX packets 115533  bytes 120436490 (114.8 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 22604  bytes 2130122 (2.0 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ens33:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.10  netmask 255.255.255.0  broadcast 192.168.1.255
        ether 00:0c:29:2a:03:4e  txqueuelen 1000  (Ethernet)

ens36: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500            //第二块网卡
        inet 192.168.32.128  netmask 255.255.255.0  broadcast 192.168.32.255
        inet6 fe80::7847:a71e:aac1:e7a3  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:2a:03:58  txqueuelen 1000  (Ethernet)
        RX packets 23  bytes 1946 (1.9 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 28  bytes 4541 (4.4 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

image.png 步骤3. 编辑配置文件。

复制ens33的配置文件并改名为ens36,修改文件。

[root@jlx ~]# cd /etc/sysconfig/network-scripts/       //切换到配置文件所在目录
[root@jlx network-scripts]# cp ifcfg-ens33 ./ifcfg-ens36              //复制ens33的配置文件并改名ens36
[root@jlx network-scripts]# vim ifcfg-ens36          //编辑配置文件

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=ens36     //将名称修改为ens36
#UUID=ed893cbb-1c79-49b5-bab3-47d3acaa9a79     //注释掉UUID
DEVICE=ens36     //将设备修改为ens36
ONBOOT=yes
IPADDR=192.168.32.20    //设置一个未被使用的IP地址
NETMASK=255.255.255.0
GATEWAY=192.168.32.2
DNS1=8.8.8.8
DNS2=114.114.114.114

image.png 步骤4. 重启网络服务,并查看ens36。

[root@jlx network-scripts]# systemctl restart network
[root@jlx network-scripts]# ifconfig ens36
ens36: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.32.10  netmask 255.255.255.0  broadcast 192.168.32.255
        inet6 fe80::8a27:ae90:7507:8dc2  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:2a:03:58  txqueuelen 1000  (Ethernet)
        RX packets 155  bytes 12367 (12.0 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 62  bytes 9061 (8.8 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

image.png

总结

服务不能使用,排错过程:

  1. 一般先ping看能不能通,如果你的网络不通,将网络调通(查看防火墙、抓包)。
  2. 查看你的服务是否开启,使用命令“systemctl status 服务名”。
  3. 使用 ss 或netstat命令,查看你的服务端口是否被占用 ,一个端口一个服务。
  4. 最后查看你的服务配置文件是否正确。

查看网络配置:

  • ifconfig、hostname、route、netstat、ss

测试网络连接:

  • ping、traceroute、nslookup、dig

设置网络地址参数:

  • 临时配置、永久配置