前言
本章一起了解下Linux中网络基础,分别从一下几个方面来学习:网络的状态 网络的配置 网络监控 网络连接。
网络异常,图片无法展示
|
Linux中网络命令
- 显示查询,在linux查询网络状态的有以下命令:ifconfig(像是网络信息) route(显示路由表) netstat(显示网络状态) ss(显示网络状态) arp(arp命令用于操作本机的arp缓存区,它可以显示arp缓存区中的所有条目、删除指定的条目或者添加静态的IP地址与MAC地址的对应关系。) nmap(网络探测工具,非内置命令需要安装) nslookup(常用的域名解析查询工具。) dig(域名查询工具) host (域名解析查询工具。)
//ifconfig:配置或显示网络接口信息(List of possible hardware types:) [root@localhost ~]# ifconfig #<===查看机器上所有激活的网卡 enp0s25: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.1.10 netmask 255.255.255.0 broadcast 192.168.1.255 inet6 fe80::a9d2:ba42:8306:8177 prefixlen 64 scopeid 0x20<link> inet6 240e:388:8221:2c00:1cd8:fd91:cb44:ec62 prefixlen 64 scopeid 0x0<global> ether 04:7d:7b:39:95:ab txqueuelen 1000 (Ethernet) RX packets 2435833 bytes 535444996 (510.6 MiB) RX errors 2 dropped 0 overruns 0 frame 1 TX packets 2121493 bytes 318310278 (303.5 MiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 device interrupt 20 memory 0xf4600000-f4620000 #===>ifconfig + 网卡名:显示指定网卡 #===>ifconfig + 网卡名 + up/down:启动、关闭网卡 #===>ifconfig + 网卡名 + ip地址:修改网卡ip地址 #===>ifconfig + 网卡名 + hw + ether + 网卡地址:修改网卡地址 //route 显示或管理路由表,主要管理的是静态路由 [root@localhost demo]# route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface default gateway 0.0.0.0 UG 100 0 0 enp0s25 192.168.1.0 0.0.0.0 255.255.255.0 U 100 0 0 enp0s25 //netstat 查看网络状态 -r -g -s -n -a(显示处于非监听/监听状态的socket信息) [root@localhost demo]# netstat Active Internet connections (w/o servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 localhost.localdo:27017 121.4.59.78:58206 ESTABLISHED tcp 0 0 localhost.localdo:27017 121.4.59.78:58192 ESTABLISHED .... //netstat命令用于显示本机网络的连接状态、运行端口和路由表等信息。 [root@VM-12-10-centos ~]# netstat -an #<====显示所有的连接信息> Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 127.0.0.1:27017 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN tcp 0 0 10.0.12.10:40340 169.254.0.55:8080 TIME_WAIT ... // 以上命令语句的作用为显示所有TCP和UDP正在监听的连接信息。 [root@VM-12-10-centos ~]# netstat -lntup Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 127.0.0.1:27017 0.0.0.0:* LISTEN 228480/mongod ... //显示路由表 [root@VM-12-10-centos ~]# netstat -rn Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 0.0.0.0 10.0.12.1 0.0.0.0 UG 0 0 0 eth0 10.0.12.0 0.0.0.0 255.255.252.0 U 0 0 0 eth0 //ss命令是类似并将取代netstat的工具,它能用来查看网络状态信息,包括TCP、UDP连接、端口等。它的优点是能够显示更多更详细的有关网络连接状态的信息,而且比netstat更快速更高效。 //显示所有socket连接 [root@VM-12-10-centos ~]# ss -an Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process nl UNCONN 0 0 0:981585547 * nl UNCONN 0 0 ... //统计当前的established closed orphaned和waiting的TCP socket数量 [root@VM-12-10-centos ~]# ss -s Total: 219 TCP: 34 (estab 28, closed 0, orphaned 0, timewait 0) Transport Total IP IPv6 RAW 1 0 1 UDP 3 2 1 TCP 34 5 29 INET 38 7 31 ... //arp是查看缓存信息(arp缓存就是IP地址和MAC地址关系缓存列表)的详细信息 详细信息2 //在局域网中,当主机或其它三层网络设备有数据要发送给另一台主机或三层网络设备时,需要知道对方的网络层地址(即IP地址)。但是仅有IP地址是不够的,因为IP报文必须封装成帧才能通过物理网络发送,因此发送方还需要知道接收方的物理地址(即MAC地址),这就需要一个通过IP地址获取物理地址的协议,以完成从IP地址到MAC地址的映射。地址解析协议ARP即可实现将IP地址解析为MAC地址。 //arp:地址解析协议(Address Resolution Protocol),主要功能是根据IP地址获取物理地址 [root@VM-12-10-centos ~]# arp -n Address HWtype HWaddress Flags Mask Iface 10.0.12.1 ether fe:ee:5e:4d:d7:bb C eth0
nmap:功能全面的端口扫描工具,此外还具备寻找目标网络中的在线主机文档地址,常用的扫描如下
- SYN扫描,使用频率最高的扫描选项:SYN扫描,又称为半开放扫描,它不打开一个完全的TCP连接,执行得很快,nmap -sS ***/24
- ping扫描,用ping的方式检查网络上哪些主机正在运行。 nmap -sP ***/24
[root@zz ~]# nmap 192.168.1.10 #<====扫描主机开放的服务> Starting Nmap 6.40 ( http://nmap.org ) at 2022-07-22 19:18 CST Nmap scan report for 192.168.1.10 Host is up (0.000017s latency). Not shown: 996 closed ports PORT STATE SERVICE 22/tcp open ssh 80/tcp open http 3306/tcp open mysql 8080/tcp open http-proxy Nmap done: 1 IP address (1 host up) s [root@zz ~]# nmap -p 8080 192.168.1.10 #<====指定端口扫描 Starting Nmap 6.40 ( http://nmap.org ) at 2022-07-22 19:24 CST Nmap scan report for 192.168.1.10 Host is up (0.00013s latency). PORT STATE SERVICE 8080/tcp open http-proxy Nmap done: 1 IP address (1 host up) scanned in 0.29 seconds [root@zz ~]# nmap -sP 192.168.123.1/24 Starting Nmap 6.40 ( http://nmap.org ) at 2022-07-22 19:30 CST Nmap done: 256 IP addresses (0 hosts up) scanned in 206.24 seconds
- nslookup dig host这三个都是域名查询工具,区别如下:nslookup可以以交互的方式查询 dig用于测试dns系统(不会查询host)host以更简洁的方式显示查询结果
// nslookup交互模式 [root@zz ~]# nslookup > www.baidu.com Server: 192.168.1.1 Address: 192.168.1.1#53 Non-authoritative answer: www.baidu.com canonical name = www.a.shifen.com. Name: www.a.shifen.com Address: 180.101.49.12 Name: www.a.shifen.com Address: 180.101.49.11 [root@zz ~]# nslookup > set type=MX #<==== set用来设置查询方式 MX表示邮件交换记录,邮件交换记录 (MX record)是域名系统(DNS)中的一种资源记录类型> > www.baidu.com Server: 192.168.1.1 Address: 192.168.1.1#53 Non-authoritative answer: www.baidu.com canonical name = www.a.shifen.com. Authoritative answers can be found from: a.shifen.com origin = ns1.a.shifen.com mail addr = baidu_dns_master.baidu.com serial = 2207240004 refresh = 5 retry = 5 expire = 2592000 minimum = 3600 > [root@zz ~]# nslookup www.baidu.com #<====非交互方式查询> Server: 192.168.1.1 Address: 192.168.1.1#53 Non-authoritative answer: www.baidu.com canonical name = www.a.shifen.com. Name: www.a.shifen.com Address: 180.101.49.11 Name: www.a.shifen.com Address: 180.101.49.12 [root@zz ~]# nslookup -ty=ptr 202.96.128.166 #<===反向域名解析 ptr表示反向域名解析> Server: 192.168.1.1 Address: 192.168.1.1#53 Non-authoritative answer: 166.128.96.202.in-addr.arpa name = cache-b.guangzhou.gd.cn. Authoritative answers can be found from: [root@zz ~]# dig www.baidu.com #<====域名解析> ; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.9 <<>> www.baidu.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 31412 ;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;www.baidu.com. IN A ;; ANSWER SECTION: www.baidu.com. 600 IN CNAME www.a.shifen.com. www.a.shifen.com. 600 IN A 180.101.49.11 www.a.shifen.com. 600 IN A 180.101.49.12 ;; Query time: 4 msec ;; SERVER: 192.168.1.1#53(192.168.1.1) ;; WHEN: Sun Jul 24 16:42:34 CST 2022 ;; MSG SIZE rcvd: 90 [root@zz ~]# dig -x 101.200.195.98 #<=== dig -x ip 反向域名解析> ; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.9 <<>> -x 101.200.195.98 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 4919 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;98.195.200.101.in-addr.arpa. IN PTR ;; AUTHORITY SECTION: 200.101.in-addr.arpa. 300 IN SOA rdns1.alidns.com. dnsmgr.alibaba-inc.com. 2015011391 1800 600 1814400 300 ;; Query time: 24 msec ;; SERVER: 192.168.1.1#53(192.168.1.1) ;; WHEN: Sun Jul 24 16:52:07 CST 2022 ;; MSG SIZE rcvd: 127 [root@zz ~]# host www.baidu.com #<==== host + domain 更简单的显示查询内容> www.baidu.com is an alias for www.a.shifen.com. www.a.shifen.com has address 180.101.49.11 www.a.shifen.com has address 180.101.49.12 //ping命令可用于测试主机之间网络的连通性。执行ping命令会使用ICMP传输协议,发出要求回应的信息,若远端主机的网络功能没有问题,就会回应该信息,因而可得知该主机运作正常。 [root@zz ~]# ping 192.168.1.12 PING 192.168.1.12 (192.168.1.12) 56(84) bytes of data. 64 bytes from 192.168.1.12: icmp_seq=1 ttl=64 time=4.16 ms 64 bytes from 192.168.1.12: icmp_seq=2 ttl=64 time=2.92 ms 64 bytes from 192.168.1.12: icmp_seq=3 ttl=64 time=2.71 ms 64 bytes from 192.168.1.12: icmp_seq=4 ttl=64 time=3.22 ms 64 bytes from 192.168.1.12: icmp_seq=5 ttl=64 time=2.72 ms [root@zz ~]# ping -c 3 -i 3 192.168.1.12 #<==== -c:ping次数 -i:每次ping的间隔 PING 192.168.1.12 (192.168.1.12) 56(84) bytes of data. 64 bytes from 192.168.1.12: icmp_seq=1 ttl=64 time=5.49 ms 64 bytes from 192.168.1.12: icmp_seq=2 ttl=64 time=3.64 ms 64 bytes from 192.168.1.12: icmp_seq=3 ttl=64 time=3.13 ms --- 192.168.1.12 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 6007ms rtt min/avg/max/mdev = 3.139/4.092/5.492/1.012 ms
注:ping命令的输出信息中含有TTL值。TTL(Time To Life)称为生存期,它是ICMP报文在网络上的存活时间。不同的操作系统发出的ICMP报文的生存期各不相同,常见的生存期为32、64、128和255等。TTL值反映了ICMP报文所能够经过的路由器数目,每经过一个路由器,路由器都会将其数据包的生存期减去1,如果TTL值变为0,则路由器将不再转发此报文。 traceroute命令用于显示网络数据包传输到指定主机的路径信息,追踪数据传输路由状况。默认数据包大小是60字节(IPv4)或80字节(IPv6),用户可另行设置。它与Windows下的tracert命令类似。
[root@zz ~]# traceroute juejin.cn traceroute to juejin.cn (61.174.42.228), 30 hops max, 60 byte packets 1 gateway (192.168.1.1) 7.137 ms 7.088 ms 7.012 ms 2 1.72.65.222.broad.xw.sh.dynamic.163data.com.cn (222.65.72.1) 10.522 ms 10.495 ms 11.113 ms 3 61.152.54.133 (61.152.54.133) 9.409 ms 9.369 ms 9.305 ms 4 101.95.88.142 (101.95.88.142) 9.747 ms 61.152.25.202 (61.152.25.202) 9.198 ms 61 ..... 8 * * *
注:记录按序列号从1开始,每个记录就是一跳,每跳表示一个网关,我们看到每行有3个时间,单位是ms,其实就是-q的默认参数值为3。探测数据包向每个网关发送3个数据包之后,网关响应并返回的时间。 有时我们traceroute一台主机时,会看到有一些星号。出现这样的情况,可能是因为网络设备封掉或丢弃了返回的信息,所以我们得不到返回的时间。arping命令是用于发送arp请求到一个相邻主机的工具,arping使用arp数据包检查局域网内所有设备的硬件地 址。
[root@zz ~]# arping -f 192.168.1.12 #<=== -f 表示第一次收到返回就结束了 ARPING 192.168.1.12 from 192.168.1.10 enp0s25 Unicast reply from 192.168.1.12 [64:90:C1:35:D0:2E] 5.241ms Sent 1 probes (1 broadcast(s)) Received 1 response(s)
- 配置网络(启用、禁用网络接口、配置路由、激活、禁用),主要有以下命令:ifconfig(配置网络)ifup(激活网络接口) ifdown(禁用网络接口) ip(网络配置工具)
//ifup+网卡名:激活网络接口 [root@zz ~]# ifup enp0s25 //ifdown + 网卡名:禁用网络接口 [root@zz ~]# ifdown enp0s25
- 网络监听:tcpdump(监听网络流量)tcpdump命令是一个截获网络数据包的包分析工具。tcpdump可以将网络中传送的数据包的“头”完全截获下来以提供分析。
[root@zz ~]# tcpdump #<====查看所有网络流量> tcpdump: ve .... 10 packets captured 11 packets received by filter 0 packets dropped by kernel [root@zz ~]# tcpdump -i enp0s25 port 8080 #<====指定端口监听> tcpdump: verbose output suppressed, use -v or -v
tcpdump是一个非常强大并且好用的命令,这是只做简单的介绍,后续还要在实践中多多练习。
- 邮件相关:mail(发送和接收邮件) mailq(显示邮件传输队列),mail命令是命令行的电子邮件发送和接收的工具。mail命令是个软链接,真实的程序文件是mailx: mail命令会默认使用本地postfix(sendmail)发送邮件,这就要求本地的机器必须安装和启动相关服务,这样不仅配置非常麻烦,而且还会带来不必要的资源占用。还有一个问题,很多时候,所发送的邮件会被视为垃圾邮件
[root@zhaokai ~]# mailq Mail queue is empty [root@zhaokai ~]# mailq -v postqueue: name_mask: all ... [root@zhaokai postfix]# mail -s "Hello qq" zhaokai1155@outlook.com #<====mail -s指定邮件主题,知否输入邮件内容,按Ctrl + D发送 this is a mail; EOT