2023年7月23日发(作者:)
Linux常⽤⽹络命令总结⽂章简单的介绍⼀些简单我们⽇常使⽤的⼀些命令,平时遇到问题时能够快速查找问题,提供⼀定的思路解决问题。netstat 这个命令⽤来查看当前建⽴的⽹络连接(深刻理解netstat每⼀项代表的含义)。最经典的案例就是查看本地系统打开了哪些端⼝: # sudo netstat -lnpt [sudo] password for fgp: 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:3306 0.0.0.0:* LISTEN 2183/mysqld tcp 0 0 0.0.0.0:11211 0.0.0.0:* LISTEN 2506/memcached tcp 0 0 0.0.0.0:9292 0.0.0.0:* LISTEN 1345/python tcp 0 0 0.0.0.0:6800 0.0.0.0:* LISTEN 2185/ceph-osd tcp 0 0 0.0.0.0:6801 0.0.0.0:* LISTEN 2185/ceph-osd tcp 0 0 0.0.0.0:28017 0.0.0.0:* LISTEN 1339/mongod tcp 0 0 0.0.0.0:6802 0.0.0.0:* LISTEN 2185/ceph-osd tcp 0 0 0.0.0.0:6803 0.0.0.0:* LISTEN 2185/ceph-osd tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1290/sshd netstat能够查看所有的⽹络连接,包括unix socket连接,其功能⾮常强⼤。 另外使⽤netstat还可以查看本地路由表: # sudo netstat -nr Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 brqcb225471-1f 172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0 192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 brqcb225471-1f 192.168.56.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1 以上Genmask为0.0.0.0的表⽰默认路由,即连接外⽹的路由。⽹络中0.0.0.0的IP地址表⽰整个⽹络,即⽹络中的所有主机。它的作⽤是帮助路由器发送路由表中⽆法查询的包。如果设置了全零⽹络的路由,路由表中⽆法查询的包都将送到全零⽹络的路由中去。ifconfig 查看⽹卡ip地址: # ifconfig eth0 eth0 Link encap:Ethernet HWaddr 00:0C:29:A2:6E:53
inet addr:172.16.100.100 Bcast:172.16.255.255 Mask:255.255.0.0 inet6 addr: fe80::20c:29ff:fea2:6e53/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:37795 errors:0 dropped:0 overruns:0 frame:0 TX packets:55779 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000
RX bytes:2912696 (2.7 MiB) TX bytes:5708099 (5.4 MiB) 为⽹卡eth0增加⼀个新的地址(虚拟⽹卡): # sudo ifconfig eth0:0 10.103.240.2/24 # ifconfig eth0:0 eth0:0 Link encap:Ethernet HWaddr 08:00:27:c9:b4:f2 inet addr:10.103.240.2 Bcast:10.103.240.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 关闭⽹卡以及开启⽹卡: sudo ifconfig eth0 down sudo ifconfig eth0 uproute route命令⽤于查看和修改路由表: 查看路由表:sudo route -n 增加/删除路由分别为add/del⼦命令,⽐如删除默认路由:sudo route del defau 增加默认路由,⽹关为192.168.1.1,⽹卡为brqcb225471-1f:sudo route add default gw 192.168.1.1 dev brqcb225471-1f 查看⽹卡eth1配置: # sudo ip link ls eth1 2: eth0:
valid_lft forever preferred_lft forevertraceroute ping命令⽤于探测两个主机间连通性以及响应速度,⽽traceroute会统计到⽬标主机的每⼀跳的⽹络状态(print the route packets traceto network host),这个命令常常⽤于判断⽹络故障,⽐如本地不通,可使⽤该命令探测出是哪个路由出问题了。如果⽹络很卡,该命令可判断哪⾥是瓶颈: # sudo traceroute -I -n traceroute to (192.30.252.154), 30 hops max, 60 byte packets 1 192.168.1.1 4.610 ms 5.623 ms 5.515 ms 2 117.100.96.1 5.449 ms 5.395 ms 5.356 ms 3 124.205.97.48 5.362 ms 5.346 ms 5.331 ms 4 218.241.165.5 5.322 ms 5.310 ms 5.299 ms 5 218.241.165.9 5.187 ms 5.138 ms 7.386 ms ... 可以看到,从主机到共经过30跳,并统计了每⼀跳间的响应时间。另外可以参考tracepath。ss ss命令也是⼀个查看⽹络连接的⼯具(another utility to investigate sockets),⽤来显⽰处于活动状态的套接字信息。关于ss的描述,引⽤Linux命令⼤全-ss命令。 ss命令可以⽤来获取socket统计信息,它可以显⽰和netstat类似的内容。但ss的优势在于它能够显⽰更多更详细的有关TCP和连接状态的信息,⽽且⽐netstat更快速更⾼效。当服务器的socket连接数量变得⾮常⼤时,⽆论是使⽤netstat命令还是直接cat /proc/net/tcp,执⾏速度都会很慢。可能你不会有切⾝的感受,但请相信我,当服务器维持的连接达到上万个的时候,使⽤netstat等于浪费 ⽣命,⽽⽤ss才是节省时间。天下武功唯快不破。ss快的秘诀在于,它利⽤到了TCP协议栈中tcp_diag。tcp_diag是⼀个⽤于分析统计的模块,可以获得Linux 内核中第⼀⼿的信息,这就确保了ss的快捷⾼效。当然,如果你的系统中没有tcp_diag,ss也可以正常运⾏,只是效率会变得稍慢。 其中⽐较常⽤的参数包括: -l 查看处于LISTEN状态的连接 -t 查看tcp连接 -4 查看ipv4连接 -n 不进⾏域名解析 因此我们可以通过ss命令查看本地监听的所有端⼝(和netstat命令功能类似): #ss -t -l -n -4wget wget是⼀个强⼤的⾮交互⽹络下载⼯具(The non-interactive network downloader),虽然curl也⽀持⽂件下载,不过wget更强⼤,⽐如⽀持断点下载等。 使⽤-r参数为递归的下载⽹页,默认递归深度为5,相当于爬⾍,⽤户可以通过-l指定递归深度。注意wget默认没有开启断点下载功能,需要⼿动传⼊-c参数。 如果需要批量下载,可以把所有的URL写⼊⽂件,然后通过-i指定下载⽂件列表:wget -i 如果⽤户不指定保存⽂件名,wget默认会以最后⼀个符合/的后⾯的字符作为保存⽂件名,有时不是我们所期望的,此时需要-O指定保存的⽂件名。通过--limit-rate可以限制下载的最⼤速度。使⽤-b可以实现后台下载。axel axel是⼀个多线程下载⼯具(A light download accelerator for Linux),通过建⽴多连接,能够⼤幅度提⾼下载速度,所以我经常使⽤这个命令开挂下载⼤⽂件,⽐wget快多了,并且默认就⽀持断点下载: 开启20个线程下载⽂件:axel -n 20 URL 这个强⼤的下载⼯具极⼒推荐,⾮常好⽤!ipset 以上我们通过iptables封IP,如果IP地址⾮常多,我们就需要加⼊很多的规则,这些规则需要⼀⼀判断,性能会下降(线性的)。ipset能够把多个主机放⼊⼀个集合,iptables能够针对这个集合设置规则,既⽅便操作,⼜提⾼了执⾏效率。注意ipset并不是只能把ip放⼊集合,还能把⽹络地址、mac地址、端⼝等也放⼊到集合中。 ⾸先我们创建⼀个ipset: # sudo ipset create blacklist hash:ip 以上创建了⼀个blacklist集合,集合名称后⾯为存储类型,除了hash表,还⽀持bitmap、link等,后⾯是存储类型,我们指定的是ip,表⽰我们的集合元素为ip地址。 我们为这个blacklist集合增加⼀条规则,禁⽌访问: # sudo iptables -I INPUT -m set --match-set blacklist src -j DROP 此时只要在blacklist的ip地址就会⾃动加⼊⿊名单。 我们把192.168.56.1和192.168.56.3加⼊⿊名单中: # sudo ipset add blacklist 192.168.56.3 # sudo ipset add blacklist 192.168.56.1此时ssh连接中断,使⽤vnc连接查看: # /github/$ sudo ipset list blacklist Name: blacklist Type: hash:ip Revision: 2 Header: family inet hashsize 1024 maxelem 65536 Size in memory: 176 References: 1 Members: 192.168.56.1 192.168.56.3 把192.168.56.1移除⿊名单: # sudo ipset del blacklist 192.168.56.1
我们上⾯的例⼦指定的类型为ip,除了ip,还可以是⽹络段,端⼝号(⽀持指定TCP/UDP协议),mac地址,⽹络接⼝名称,或者上述各种类型的组合。⽐如指定 hash:ip,port就是 IP地址和端⼝号共同作为hash的键。指定类型为net既可以放⼊ip地址,也可以放⼊⽹络地址。 另外ipset还⽀持timeout参数,可以指定时间,单位为秒,超过这个时间,ipset会⾃动从集合中移除这个元素,⽐如封192.168.56.11分钟时间不允许访问 # sudo ipset create blacklist hash:net timeout 300 # sudo ipset add blacklist 192.168.56.1 timeout 60 以上⾸先创建了⽀持timeout的集合,这个集合默认超时时间为300s,接着把192.168.56.1加⼊到集合中并设置时间为60s。 注意:执⾏ipset add时指定timeout必须保证创建的集合⽀持timeout参数,即设置默认的timeout时间.如果不想为集合设置默认timeout时间,⽽⼜想⽀持timeout,可以设置timeout为0,相当于默认不会超时。 linux常⽤⼀些命令:⽹络配置相关:ifconfig、ip路由相关:route、netstat、ip查看端⼝⼯具:netstat、lsof、ss、nc、telnet下载⼯具:curl、wget、axel防⽕墙:iptables、ipset流量相关:iftop、nethogs连通性及响应速度:ping、traceroute、mtr、tracepath域名相关:nslookup、dig、whoisweb服务器:python、nginx抓包相关:tcpdump⽹桥相关:ip、brctl、ifconfig、ovs
发布者:admin,转转请注明出处:http://www.yc00.com/xiaochengxu/1690105790a306265.html
评论列表(0条)