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

57 阅读9分钟

查看网络配置

ifconfig——查看网络接口信息

基本用法:

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

配置网络参数之主机名

1)查看主机名称

 [root@localhost ~]# hostname
 localhost.localdomain

2)临时修改主机名称

 [root@localhost ~]# hostname lp
 [root@localhost ~]# su
 [root@yuji ~]# hostname
  lp

3)永久修改主机名称,修改后重启生效:

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

route——查看路由表条目

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

netstat——查看网络连接情况

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

常用选项

选项作用
-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端口,且加上程序名

示例:

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

 [root@localhost ~]# netstat -lt      //列出处于监听状态的TCP端口
 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 localhost.locald: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 0.0.0.0:shell           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 [::]:shell              [::]:*                  LISTEN
复制代码

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

 [root@localhost ~]# 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      1462/dnsmasq        
 tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1113/sshd           
 tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      1111/cupsd          
 tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1394/master         
 tcp        0      0 0.0.0.0:514             0.0.0.0:*               LISTEN      798/rsyslogd        
 tcp6       0      0 :::111                  :::*                    LISTEN      1/systemd           
 tcp6       0      0 :::22                   :::*                    LISTEN      1113/sshd           
 tcp6       0      0 ::1:631                 :::*                    LISTEN      1111/cupsd          
 tcp6       0      0 ::1:25                  :::*                    LISTEN      1394/master         
 tcp6       0      0 :::514                  :::*                    LISTEN      798/rsyslogd 

测试网络连接

ping——测试网络连通性

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

常用选项:

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

traceroute——跟踪数据包

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

 traceroute  目标主机地址
复制代码

示例:

 [root@localhost ~]# traceroute 192.168.72.20
 traceroute to 192.168.72.20 (192.168.72.20), 30 hops max, 60 byte packets
  1  yuji (192.168.72.20)  0.034 ms  0.007 ms  0.004 ms

nslookup——域名解析

测试DNS域名解析

 nslookup  目标主机地址  [DNS服务器地址]
复制代码

示例:

 [root@localhost ~]# nslookup www.baidu.com      //将域名解析为IP地址
 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: 36.152.44.96
 Name:   www.a.shifen.com
 Address: 36.152.44.95

dig——域名解析

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

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

 [root@localhost ~]# dig www.baidu.com        //将域名解析为IP地址,显示更多信息
 
 ; <<>> DiG 9.9.4-RedHat-9.9.4-50.el7 <<>> www.baidu.com
 ;; global options: +cmd
 ;; Got answer:
 ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 27104
 ;; 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.          208     IN      CNAME   www.a.shifen.com.
 www.a.shifen.com.       214     IN      A       36.152.44.95
 www.a.shifen.com.       214     IN      A       36.152.44.96
 
 ;; Query time: 10 msec
 ;; SERVER: 8.8.8.8#53(8.8.8.8)
 ;; WHEN:  3 16 01:56:42 CST 2022
 ;; MSG SIZE  rcvd: 101

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))

tcpdump

tcpdump是一个很常用的网络包分析工具,可以用来显示通过网络传输到本系统的 TCP/IP 以及其他网络的数据包。tcpdump使用 libpcap 库来抓取网络报,这个库在几乎在所有的 Linux/Unix 中都有。

tcpdump可以从网卡或之前创建的数据包文件中读取内容,也可以将包写入文件中以供后续使用。必须是 root 用户或者使用 sudo 特权来运行tcpdump。

tcpdump -i ens33 #指定查看ens33 网卡
tcpdump -tttt -i enp0s3 #捕获带有可读时间戳的数据包
tcpdump -c 12 -i enp0s3 #指定数据包数量
tcpdump host 192.168.91.100 -i ens33#监听特定主机,监听主机10.0.0.100 的通信包,注意:出、入的包都会被监听。

#特定来源、目标地址的通信

tcpdump src host hostname#特定来源

tcpdump dst host hostname#特定目标地址

tcpdump host hostname#如果不指定src跟dst,那么来源或者目标是hostname的通信都会被监听

[root@localhost ~]#tcpdump -i ens33 -nn icmp and src host 192.168.91.101 and dst host 192.168.91.100
#面试题



[root@localhost ~]#tcpdump ip host 192.168.91.100 and 192.168.91.101 -i ens33#只抓取 特定主机之间的数据包

tcpdump port 3000#特定端口
tcpdump portrange 22-125捕获某个端口范围的数据包
tcpdump tcp port 22 and src host 10.0.0.100 -i ens33

永久修改网络相关配置

静态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.72.10         //自定义的IP地址
 NETMASK=255.255.255.0        //子网掩码
 GATEWAY=192.168.72.2         //网关地址
 DNS1=8.8.8.8                 //DNS服务器地址

域名解析配置文件

/etc/resolv.conf 文件,保存本机需要使用的DNS服务器的IP地址。

 [root@localhost ~]# cat /etc/resolv.conf
 # Generated by NetworkManager
 nameserver 8.8.8.8

本地主机映射文件

/etc/hosts 文件,保存主机名与IP地址的映射记录。

 [root@localhost ~]# cat /etc/hosts
 127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
 ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
 119.75.218.70   www.baidu.com

hosts 文件和DNS服务器的比较:

  • 默认情况下,系统首先从hosts文件查找解析记录
  • hosts 文件只对当前的主机有效
  • hosts 文件可减少DNS查询过程,从而加快访问速度

多网卡绑定

将多块网卡绑定同一IP地址对外提供服务,可以实现高可用或者负载均衡。直接给两块网卡设置同一IP地址是不可以的。通过 bonding,虚拟一块网卡对外提供连接,物理网卡的被修改为相同的MAC地址

#创建新连接static ,指定静态IP,不自动连接
nmcti con add con-name static   ifname eth0 autoconnect no type Ethernet 
ipv4.addresses 172.25.X.10/24 ipv4.gateway   172.25.X.254

nmcli connection modify ens33 ipv4.addresses 192.168.91.100/2
nmcli connection up ens33



#添加bonding接口
nmcli con add type bond con-name mybond0 ifname bond0 mode active-backup ipv4.method manual ipv4.addresses 192.168.91.123/24 
#添加从属接口
nmcli con add type bond-slave ifname ens33 master bond0
nmcli con add type bond-slave ifname ens36 master bond0
#注:如无为从属接口提供连接名,则该名称是接口名称加类型构成
#要启动绑定,则必须首先启动从属接口
nmcli con up bond-slave-ens33
nmcli con up bond-slave-ens36
#启动绑定
nmcli con up mybond0