查看本机IP地址、MAC地址
方法:执行ifconfig
或者ip addr
例:
[root@Centos ~]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.0.0.1 netmask 255.255.255.0 broadcast 10.0.0.255
ether 52:54:00:59:c1:b7 txqueuelen 1000 (Ethernet)
RX packets 25883978 bytes 7322687281 (6.8 GiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 24178898 bytes 6035774584 (5.6 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
loop txqueuelen 1000 (Local Loopback)
RX packets 3615476 bytes 2842561090 (2.6 GiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 3615476 bytes 2842561090 (2.6 GiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
- 主机一般都有一张物理网卡eth0,还有多张虚拟网卡,比如环回地址的网卡lo。
- inet:网卡的IP地址。
- ether:网卡的MAC地址。
- flags
- UP:表示网卡已被启用。
- BROADCAST:表示支持广播。
- RUNNING:表示网卡已连接到网络。
- MULTICAST:表示支持组播。
- mtu:最大传输单元,即网卡能传输的数据包最大体积,单位为bytes。
查看端口信息、占用端口的进程
方法:执行ss -apn
例:查看所有网络端口的信息
[root@Centos ~]# ss -apn | cat # 加上cat使显示的users不换行
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 127.0.0.1:34186 *:* users:(("node",pid=15647,fd=19))
LISTEN 0 128 *:111 *:* users:(("systemd",pid=1,fd=51))
LISTEN 0 128 *:22 *:* users:(("sshd",pid=3057,fd=3))
- Recv-Q、Send-Q:表示接收队列、发送队列中待处理的数据包数。它们最好为0,即没有包堆积。
- 最右端的一列users表示监听每个端口的进程。
例:查看指定端口的信息
[root@Centos ~]# ss -apn | grep 8000
LISTEN 0 128 :::8000 :::* users:(("docker-proxy",pid=18614,fd=4))
判断网络是否连通、网络延迟
方法:执行ping <host>
,测试到某个主机的网络状态。
- Linux的ping命令默认每隔一秒向目标主机发送一个ICMP报文,根据收到回复的时间间隔就可以知道通信延迟。
- host可以是IP地址或域名,如果是域名,在执行时还会显示出域名解析后的IP地址。
例:
[root@Centos ~]# ping baidu.com
PING baidu.com (39.156.69.79) 56(84) bytes of data.
64 bytes from 39.156.69.79 (39.156.69.79): icmp_seq=1 ttl=250 time=37.0 ms
64 bytes from 39.156.69.79 (39.156.69.79): icmp_seq=2 ttl=250 time=37.0 ms
64 bytes from 39.156.69.79 (39.156.69.79): icmp_seq=3 ttl=250 time=37.0 ms
64 bytes from 39.156.69.79 (39.156.69.79): icmp_seq=4 ttl=250 time=37.0 ms
^C
--- baidu.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3003ms
rtt min/avg/max/mdev = 37.008/37.022/37.044/0.136 ms
- icmp_seq:表示这是第几个ICMP报文。
- ttl:ICMP报文剩下的生存期。
- time:发出ICMP报文之后,隔了多久才收到回复。
例:
[root@Centos ~]# ping google.com
PING google.com (93.46.8.90) 56(84) bytes of data.
^C
- 可见它一直尝试连接目标主机,但并没有成功。原因可能是:
- 与目标主机的网络不通
- 与目标主机的网络连通,
但是目标主机没有开启ICMP协议
- 考虑到第二种原因,用ping命令不能连接到目标主机时,不一定是网络不通。
判断TCP端口是否连通
方法:执行telnet <host> [port]
,测试连接到某个主机的TCP端口(默认是23端口)
例:
[root@Centos ~]# telnet baidu.com 80
Trying 39.156.69.79...
Connected to baidu.com.
Escape character is '^]'.
- 可见它成功连接到目标主机的80端口。此时按
Ctrl+]
和Ctrl+D
即可断开连接。
例:
[root@Centos ~]# telnet 127.0.0.1 8000
Trying 127.0.0.1...
telnet: connect to address 127.0.0.1: Connection refused
- Connection refused说明与目标主机的网络连通,但是连接不到目标端口。原因可能是:
目标主机的防火墙拦截了发向该端口的数据包
,此时要在目标主机上用iptables -L
检查下防火墙的规则- 目标主机的防火墙开通了该端口,但是
目标主机上没有进程在监听该端口
- 上方访问的目标主机是本地环回地址,不会被防火墙拦截,所以是第二种原因。
例:
[root@Centos ~]# telnet baidu.com
Trying 220.181.38.148...
^C
- 可见它一直尝试连接目标主机的23端口,但并没有成功。原因可能是:
- 与目标主机的网络不通
- 端口无响应
判断能否连接到Web网站
方法:执行curl <URL>
其它测试
- 用
nmap
可扫描某个主机有哪些端口可以连接 - 用
iperf
可测试TCP、UDP的带宽 - 用
ab
、wrk
、Jmeter
等工具可进行HTTP压力测试