查看/配置网络
ifconfig 查看IP地址
https://wangchujiang.com/linux-command/c/ifconfig.html
enx00e04cf0a10c: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.5 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 2408:8207:305c:1c30:b48f:56c7:81bb:bb9 prefixlen 64 scopeid 0x0<global>
inet6 fe80::2c1b:1b85:35cd:9642 prefixlen 64 scopeid 0x20<link>
inet6 2408:8207:305c:1c30:e49b:195a:eeaa:1e44 prefixlen 64 scopeid 0x0<global>
ether 00:e0:4c:f0:a1:0c txqueuelen 1000 (Ethernet)
RX packets 29715 bytes 31484642 (31.4 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 22107 bytes 3794564 (3.7 MB)
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 4003 bytes 2920205 (2.9 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 4003 bytes 2920205 (2.9 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
wlp4s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.0.111 netmask 255.255.255.0 broadcast 192.168.0.255
inet6 fe80::6e92:514f:2d68:1da1 prefixlen 64 scopeid 0x20<link>
ether 14:4f:8a:60:f2:2a txqueuelen 1000 (Ethernet)
RX packets 106 bytes 9074 (9.0 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 129 bytes 19965 (19.9 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
e开头的一般是有线网卡 例eth
lo 全称是 loopback,又称环回接口,往往会被分配到 127.0.0.1 这个地址。这个地址用于本机通信,经过内核处理后直接返回,不会在任何网络中出现
wlp开头表示无线网卡
flags = 4163 没有搜到什么意思
UP表示接口启用
BROADCAST 表示主机支持广播
RUNNING 表示接口正在工作
MULTICAST 主机支持多播
MTU:1500 最大传输单元 1500字节 百科
inet 网卡的IP地址
netmask 网络掩码
broadcast 广播地址
inet6 fe80::2aa:bbff:fecc:ddee prefixlen 64 scopeid 0x20<link> IPv6地址
ether 00:e0:4c:f0:a1:0c 连接类型:Ethernet (以太网) HWaddr (硬件mac地址)
txqueuelen (网卡设置的传送队列长度)
RX packets 接收时,正确的数据包数
RX bytes 接收的数据量
RX errors 接收时,产生错误的数据包数
RX overruns 接收时,由于速度过快而丢失的数据包数
RX dropped 接收时,丢弃的数据包数
RX frame 接收时,发生frame错误而丢失的数据包数
TX carrier 发送时,发生carrier错误而丢失的数据包数
TX collisions 冲突信息包的数目
mii-tool 配置网络设备协商方式的工具
https://wangchujiang.com/linux-command/c/mii-tool.html
是用于查看、管理介质的网络接口的状态,有时网卡需要配置协商方式,比如10/100/1000M的网卡半双工、全双工、自动协商的配置。但大多数的网络设备是不用我们来修改协商,因为大多数网络设置接入的时候,都采用自动协商来解决相互通信的问题。不过自动协商也不是万能的,有时也会出现错误,比如丢包率比较高,这时就要我们来指定网卡的协商方式。mii-tool就是能指定网卡的协商方式。下面我们说一说mii-tool的用法。
sudo mii-tool -v enx00e04cf0a10c
enx00e04cf0a10c: negotiated 100baseTx-FD, link ok
product info: vendor 00:07:32, model 0 rev 0
basic mode: autonegotiation enabled
basic status: autonegotiation complete, link ok
capabilities: 1000baseT-FD 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD
advertising: 1000baseT-FD 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD flow-control
link partner: 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD
link ok 表示网线连接ok
basic mode: autonegotiation enabled 启用自动协商
route 查看网关
https://wangchujiang.com/linux-command/c/route.html
显示并设置Linux中静态路由表
常用方式 route -n 不执行DNS反向查找,直接显示数字形式的IP地址
route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.1.1 0.0.0.0 UG 100 0 0 enx00e04cf0a10c
0.0.0.0 192.168.0.1 0.0.0.0 UG 600 0 0 wlp4s0
169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 wlp4s0
192.168.0.0 0.0.0.0 255.255.255.0 U 600 0 0 wlp4s0
192.168.1.0 0.0.0.0 255.255.255.0 U 100 0 0 enx00e04cf0a10c
ip 网络配置工具
https://wangchujiang.com/linux-command/c/ip.html
用来显示或操纵Linux主机的路由、网络设备、策略路由和隧道
支持信息的object
OBJECT := { link | address | addrlabel | route | rule | neigh | ntable | tunnel | tuntap | maddress | mroute | mrule | monitor | xfrm | netns | l2tp | macsec | tcp_metrics | token }
nc 全称netcat
用于设置路由器。它能通过 TCP 和 UDP 在网络中读写数据。通过与其他工具结合和重定向,你可以在脚本中以多种方式使用它。
https://wangchujiang.com/linux-command/c/nc.html
查看端口实例
nc -vz xiaoyuapi.zcoming.com 443 -w2
Connection to xiaoyuapi.zcoming.com 443 port [tcp/https] succeeded!
故障排除
ping 测试主机之间网络的连通性
https://wangchujiang.com/linux-command/c/ping.html
执行ping指令会使用ICMP传输协议,发出要求回应的信息,若远端主机的网络功能没有问题,就会回应该信息,因而得知该主机运作正常
traceroute 显示数据包到主机间的路径
https://wangchujiang.com/linux-command/c/traceroute.html
用于追踪数据包在网络上的传输时的全部路径,它默认发送的数据包大小是40字节。
通过traceroute我们可以知道信息从你的计算机到互联网另一端的主机是走的什么路径。当然每次数据包由某一同样的出发点(source)到达某一同样的目的地(destination)走的路径可能会不一样,但基本上来说大部分时候所走的路由是相同的。
traceroute通过发送小的数据包到目的设备直到其返回,来测量其需要多长时间。一条路径上的每个设备traceroute要测3次。输出结果中包括每次测试的时间(ms)和设备的名称(如有的话)及其ip地址。
traceroute www.58.com
traceroute to www.58.com (211.151.111.30), 30 hops max, 40 byte packets
1 unknown (192.168.2.1) 3.453 ms 3.801 ms 3.937 ms
2 221.6.45.33 (221.6.45.33) 7.768 ms 7.816 ms 7.840 ms
3 221.6.0.233 (221.6.0.233) 13.784 ms 13.827 ms 221.6.9.81 (221.6.9.81) 9.758 ms
4 221.6.2.169 (221.6.2.169) 11.777 ms 122.96.66.13 (122.96.66.13) 34.952 ms 221.6.2.53 (221.6.2.53) 41.372 ms
5 219.158.96.149 (219.158.96.149) 39.167 ms 39.210 ms 39.238 ms
6 123.126.0.194 (123.126.0.194) 37.270 ms 123.126.0.66 (123.126.0.66) 37.163 ms 37.441 ms
7 124.65.57.26 (124.65.57.26) 42.787 ms 42.799 ms 42.809 ms
8 61.148.146.210 (61.148.146.210) 30.176 ms 61.148.154.98 (61.148.154.98) 32.613 ms 32.675 ms
9 202.106.42.102 (202.106.42.102) 44.563 ms 44.600 ms 44.627 ms
10 210.77.139.150 (210.77.139.150) 53.302 ms 53.233 ms 53.032 ms
11 211.151.104.6 (211.151.104.6) 39.585 ms 39.502 ms 39.598 ms
12 211.151.111.30 (211.151.111.30) 35.161 ms 35.938 ms 36.005 ms
记录按序列号从1开始,每个纪录就是一跳 ,每跳表示一个网关,我们看到每行有三个时间,单位是ms,其实就是-q
的默认参数。探测数据包向每个网关发送三个数据包后,网关响应后返回的时间;如果用traceroute -q 4 www.58.com
,表示向每个网关发送4个数据包。
有时我们traceroute一台主机时,会看到有一些行是以星号表示的。出现这样的情况,可能是防火墙封掉了ICMP的返回信息,所以我们得不到什么相关的数据包返回数据。
有时我们在某一网关处延时比较长,有可能是某台网关比较阻塞,也可能是物理设备本身的原因。当然如果某台DNS出现问题时,不能解析主机名、域名时,也会 有延时长的现象;您可以加-n
参数来避免DNS解析,以IP格式输出数据。
如果在局域网中的不同网段之间,我们可以通过traceroute 来排查问题所在,是主机的问题还是网关的问题。如果我们通过远程来访问某台服务器遇到问题时,我们用到traceroute 追踪数据包所经过的网关,提交IDC服务商,也有助于解决问题;但目前看来在国内解决这样的问题是比较困难的,就是我们发现问题所在,IDC服务商也不可能帮助我们解决。
mtr My traceroute
https://www.cnblogs.com/alexyuyu/articles/2811346.html
Linux 网络诊断工具MTR(My traceroute) 结合了ping跟tracert的一个工具
首先看最后一行,目标服务器有没有丢包,有的话再往前分析。
测试指定端口实例
sudo mtr -P 443 -i 0.5 -rwc 50 xiaoyuapi.zcoming.com
nslookup
是常用域名查询工具,就是查DNS信息用的命令。
https://wangchujiang.com/linux-command/c/nslookup.html
非交互模式直接加域名
nslookup xiaoyuapi.zcoming.com
Server: 127.0.0.53
Address: 127.0.0.53#53
Non-authoritative answer:
Name: xiaoyuapi.zcoming.com
Address: 47.92.203.163
telnet 登录远程主机和管理(测试ip端口是否连通)
https://wangchujiang.com/linux-command/c/telnet.html
telnet因为采用明文传送报文,安全性不好,很多Linux服务器都不开放telnet服务,而改用更安全的ssh方式了。但仍然有很多别的系统可能采用了telnet方式来提供远程登录,因此弄清楚telnet客户端的使用方式仍是很有必要的
检测端口,如下表示端口正常
telnet xiaoyuapi.zcoming.com 443
Trying 47.92.203.163...
Connected to xiaoyuapi.zcoming.com.
Escape character is '^]'.
tcpdump
https://wangchujiang.com/linux-command/c/tcpdump.html
是一款抓包,嗅探器工具,它可以打印所有经过网络接口的数据包的头信息,也可以使用-w
选项将数据包保存到文件中,方便以后分析
netstat 查看Linux中网络系统状态信息
https://wangchujiang.com/linux-command/c/netstat.html
可以查看网络协议tcp/udp ip地址监听状态 程序进程id等
netstat -ltnp //查看监听中的进程
ss socket统计信息
https://wangchujiang.com/linux-command/c/ss.html
比 netstat 好用的socket统计信息,iproute2 包附带的另一个工具,允许你查询 socket 的有关统计信息
命令安装
有些发行版可能没有这些命令需要自己安装
net-tools包含以下常用的命令:apt-get install net-tools
- ifconfig:显示和配置网络接口的信息。
- netstat:显示网络连接、路由表和网络统计信息。
- arp:显示和操作ARP缓存。
- route:显示和操作IP路由表。
- hostname:显示或设置系统的主机名。
iproute2包含以下常用的命令: apt-get install iproute2
- ip:用于配置和管理网络接口、路由表、策略路由、隧道、桥接等各种网络参数。
- ss:显示套接字统计信息,包括网络连接、监听端口、进程关联的套接字等。
- bridge:用于配置和管理网络桥接。
- tc:配置和管理流量控制策略。
- ipset:管理iptables使用的IP集合。
- nstat:显示网络统计信息。
- rtacct:显示路由表统计信息。
traceroute命令需要 apt-get install traceroute
网络监控工具
nethogs https://wangchujiang.com/linux-command/c/nethogs.html
//安装
sudo apt install nethogs
sudo yum install nethogs
//使用
sudo nethogs -d 1
sudo nethogs eth0 -d 1
网络问题排查思路
1.查看服务器服务是否正常,你的网络能否正常访问
当用户反馈APP或网站无法访问或卡顿的时候,首先用你的网络测试一下能否正常访问,
然后排查服务器是否有问题CPU,内存,网络,指标是否正常,进程数量,TCP连接数量 平均负载
各种日志,负载均衡日志,nginx日志,程序日志
2.客户端排查,收集详细的用户反馈
先让用户访问一些常用的网站和app,比如百度等,排除是否是用户的网络问题
收集问题用户数据,手机型号, 操作系统,网络类型(3G,4G,wifi) 运营商(移动,联通,电信),点击哪个模块哪个功能出现的网络故障提示,什么时间点,最好能录屏或者截个图。
或者在程序中增加功能,网络不好的时候弹窗提示用户反馈信息,用户点击反馈按钮收集客户端的ip,操作系统型号,上报给服务器并记录下来,通过ip可以获取网络运营商的信息。
3.通过第三方测试平台,模拟用户的网络环境
云服务提供商也用类似站点监控的工具 通过以上工具测试否为运营商问题
4.APP(移动测试)远程真机调试
参考
目前对移动App的测试主要指的是下面几部分:
兼容性测试——App对不同手机、操作系统版本的兼容性测试,包括安装、启动、卸载等。
功能测试——遍历应用的每一个角落,查看应用的功能、逻辑是否正常,完整。
性能测试——应用的性能怎样,如启动时间、反应时间、CPU占用率,内存占用率等。
稳定性测试——在一定时间内对App进行持续地测试,测试App运行的稳定性。
网络场景测试——测试不同网络环境中App的运行状况,如2G&3G,弱网络等。
Testin:Testin云测|全球领先的App及手游测试平台
腾讯优测:优测网-让测试更简单
贯众云测试:贯众云测试
百度MTC:百度移动云测试中心
阿里MQC:MQC 阿里移动质量中心
参考
- 极客时间 趣谈网络协议 linux实战技能100讲
- Linux命令搜索
- https://blog.csdn.net/chengxuyuanyonghu/article/details/55051387
- https://blog.csdn.net/u011857683/article/details/83758503
- MTR https://cloud.tencent.com/developer/article/1332118
- MTR https://blog.csdn.net/m0_37263637/article/details/86530261