Linux-网络工具

Linux常用网络工具简单整理一下。

ping

检查网络连通性以及网速,域名解析。

ping www.baidu.com
  • 默认一直发送ICMP包(Internet Control Message Protocol,Internet控制报文协议)直到停止。
  • -c 指定发送数据包的个数
  • -W 指定最长等待时间
  • -I 指定发送包的网卡(多网卡情况下)

注意:

  • 运行时按下Ctrl + \ 显示summary信息,包括。发送包数量,接受数量,丢包率
  • ping只能使用ipv4, 如果需要使用ipv6, 可以使用ping6命令

netstat

查看当前建立的所有网络连接。 查看端口占用:

netstat -an | 3306

查看本地路由表:

netstat -nr

lsof

lsof命令用来查看打开的文件(list open file),由于Linux中‘一切皆文件’,那么socket,pipe等也是文件,因此能够查看网络连接和网络设备,其中网络设备相关的是-i选项,它输出符合条件的进程(4,6,协议,:端口,@ip等),格式为[46][protocol][@hostname|hostaddr]。 查看端口3306有没有打开,哪个进程打开的:

lsof -i:3306

可以指定多个条件,默认是OR关系,要指定AND关系,需要传入-a参数,查看22端口且使用ipv6连接:

lsof -c sshd -i 6 -a -i :22

列出所有与192.168.56.1的ipv4连接:

lsof -I 4@192.168.56.1

iftop

查看网络流量的工具(display bandwidth usage on an interface by host):

iftop

nc

nc(netcat),功能强大的网络工具,可以作为网络应用的debug分析,创建不同类型的网络连接。功能很多,例如实现简单的聊天工具,模拟ssh登录远程主机,远程传输文件,端口扫描等。

扫描端口:

扫描某ip的1~100端口:

nc -zv 192.168.56.2 1-100 |& grep 'succeeded!'

聊天工具

A机器运行

nc -l 1234 # -l表示监听(listen)

B机器运行

nc ipAddress 1234

两台机器输入的信息都会在对方机器显示。实现了聊天功能。

文件传输

B机器的data.txt传输到A机器。 A机器:

nc -l 1234 >./data.txt

B机器

nc ipAddress 1234 <./data.txt
远程操作(类似ssh)

B需要远程操作A。(未测试成功) A机器:

rm -f /tmp/f; mkfifo /tmp/f
cat /tmp/f | /bin/sh -i 2>&1 | nc -l 127.0.0.1 1234 > /tmp/f

B机器:

nc ipAddress 1234
发送http请求
echo 'GET / HTTP/1.1' | nc -v 220.181.57.216 80

tcpdump

tcpdump(dump traffic on a network)是一个命令行抓包工具。能抓任何协议的包(不仅仅是tcp)。 抓取目标主机192.168.56.1通过端口22的包:

sudo tcpdump -n 'dst host 192.168.56.1 && port 22'

telnet

telnet协议客户端(user interface to the TELNET protocol),不过并不限于telnet协议,端口也可以探测。 查看本地端口22是否开放:

pengjunzhe$ telnet localhost 22
Trying ::1...
Connected to localhost.
Escape character is '^]'.
SSH-2.0-OpenSSH_7.6

ifconfig

网卡配置工具(configure a network interface),可以用来查看网卡信息(IP地址,发送包数个数,接受包数,丢包数等)以及配置网卡(开启关闭网卡,修改网络mtu,修改IP地址等)。 查看网卡ip地址:

ifconfig

为网卡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 up

nslookup & dig

nslookup用于交互式域名解析(query Internet name server interactively),也可以直接传入域名作为Ad-Hoc命令使用。 查看baidu.com的IP地址:

~ $ nslookup baidu.com
Server:     10.27.207.164
Address:    10.27.207.164#53

Non-authoritative answer:
Name:   baidu.com
Address: 220.181.57.216
Name:   baidu.com
Address: 123.125.115.110

查看使用的DNS服务器地址:

~ $ nslookup
> server
Default server: 10.27.207.164
Address: 10.27.207.164#53
Default server: 10.27.207.129
Address: 10.27.207.129#53

dig命令也是域名解析工具(DNS lookup utility),但是提供更信息更全面:

~$ dig baidu.com

; <<>> DiG 9.10.6 <<>> baidu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 19315
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4000
;; QUESTION SECTION:
;baidu.com.         IN  A

;; ANSWER SECTION:
baidu.com.      270 IN  A   220.181.57.216
baidu.com.      270 IN  A   123.125.115.110

;; Query time: 18 msec
;; SERVER: 10.27.207.164#53(10.27.207.164)
;; WHEN: Fri Jul 06 22:28:23 CST 2018
;; MSG SIZE  rcvd: 70

whois

查看域名所有者的信息(client for the whois directory service),例如注册邮箱,手机号码,域名服务商等:

whois taobao.com

route

route用于查看和修改路由表. 查看路由表(mac不适用):

[root@host ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         104.224.152.1   0.0.0.0         UG    100    0        0 eth0
104.224.152.0   0.0.0.0         255.255.248.0   U     100    0        0 eth0

增加/删除路由分别是add/del子命令。 删除默认路由:

sudo route del default

增加默认路由,网管为192.168.1.1,网卡为brqcb225471-1f:

sudo route add default gw 192.168.1.1 dev brqcb225471-1f

ip

强大的网络工具,可以调低ifconfignetstatroutearp等命令。 查看网卡eth0的IP地址:

~$ sudo ip addr ls  dev eth1
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 08:00:27:9a:d5:d1 brd ff:ff:ff:ff:ff:ff
    inet 192.168.56.2/24 brd 192.168.56.255 scope global eth1
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:fe9a:d5d1/64 scope link
       valid_lft forever preferred_lft forever

查看网卡eth0配置:

~$ sudo ip link ls eth1
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
    link/ether 08:00:27:9a:d5:d1 brd ff:ff:ff:ff:ff:ff

查看路由:

~$ ip route
default via 192.168.1.1 dev brqcb225471-1f
172.17.0.0/16 dev docker0  proto kernel  scope link  src 172.17.0.1
192.168.1.0/24 dev brqcb225471-1f  proto kernel  scope link  src 192.168.1.105
192.168.56.0/24 dev eth1  proto kernel  scope link  src 192.168.56.2

查看arp信息:

~$ sudo ip neigh
192.168.56.1 dev eth1 lladdr 0a:00:27:00:00:00 REACHABLE
192.168.0.6 dev vxlan-80 lladdr fa:16:3e:e1:30:c8 PERMANENT
172.17.0.2 dev docker0 lladdr 02:42:ac:11:00:02 STALE
192.168.56.3 dev eth1  FAILED
192.168.1.1 dev brqcb225471-1f lladdr 30:fc:68:41:12:c6 STALE

查看网络命令空间:

~$ sudo ip netns ls
qrouter-24bf83c7-f61d-496b-8115-09f0f3d64d21
qdhcp-9284d7a8-711a-4927-8a10-605b34372768
qdhcp-cb225471-1f85-4771-b24b-a4a7108d93a4

进入某个网络命令空间:

~$ sudo ip netns exec qrouter-24bf83c7-f61d-496b-8115-09f0f3d64d21 bash
~# ifconfig
qg-0d258e6d-83 Link encap:Ethernet  HWaddr fa:16:3e:93:6f:a3
          inet addr:172.16.1.101  Bcast:172.16.1.255  Mask:255.255.255.0
          inet6 addr: fe80::f816:3eff:fe93:6fa3/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1035 errors:0 dropped:0 overruns:0 frame:0
          TX packets:16 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:102505 (102.5 KB)  TX bytes:1200 (1.2 KB)

brctl

查看网桥,创建网桥,把网卡加入网桥等。

traceroute

统计到目标主机的没一条的网络状态(print the route packets trace to network host)。常用来诊断网络故障。 本地连接到百度的过程:

~ pengjunzhe$ traceroute -I -n baidu.com
traceroute: Warning: baidu.com has multiple addresses; using 123.125.115.110
traceroute to baidu.com (123.125.115.110), 64 hops max, 72 byte packets
 1  10.27.203.254  2.308 ms  1.861 ms  1.606 ms
 2  10.27.193.141  1.111 ms *  2.259 ms
 3  10.27.192.145  1.906 ms  2.300 ms  2.146 ms
 4  218.1.108.145  4.071 ms  3.943 ms  3.363 ms
 5  101.95.110.129  4.275 ms  3.927 ms  3.876 ms
 6  61.152.20.73  4.934 ms  3.855 ms  5.196 ms
 7  124.74.215.217  4.560 ms  4.476 ms  5.581 ms
 8  * * 101.95.89.46  5.283 ms
 9  61.152.24.6  7.456 ms  8.412 ms  6.852 ms
10  202.97.60.129  28.235 ms  29.109 ms  54.368 ms
11  * 202.97.88.250  29.685 ms *
12  * 219.158.44.117  36.199 ms  39.041 ms
13  219.158.4.157  28.637 ms  33.961 ms  29.776 ms
14  202.96.12.82  30.744 ms  32.519 ms  30.622 ms
15  61.148.152.18  31.620 ms  29.367 ms  28.745 ms
16  123.125.248.98  104.687 ms  28.791 ms *
17  * * *
18  123.125.115.110  28.371 ms  28.001 ms  28.720 ms

mtr

网络诊断工具(a network diagnostic tool),整合了ping和traceroute的功能并实时刷新。

ss

ss命令是一个用于查看网络连接的工具(another utility to investigate sockets),用来显示处于活动状态的套接字信息。

curl

强大的URL传输工具,支持FILE, FTP, HTTP, HTTPS, IMAP, LDAP, POP3,RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, TELNET以及TFTP等协议。 能模拟所有的浏览器的行为请求,例如refer,cookie,agent。也可以模拟表单数据。

常用参数有:

  • -i 显示头部信息
  • -I 只显示头部信息,不显示正文
  • -X 指定请求方法,比如GET、POST等
  • -d 发送数据
  • --form模拟表单,利用这个参数可以上传文件、模拟点击按钮等
  • -A 指定用户代理,比如Mozilla/4.0
  • -b 设置cookie
  • -c 指定cookie文件
  • -e 指定referer,有些网址必须从某个页面跳转过去
  • --header 设置请求的头部信息
  • --user 有些页面需要HTTP认证, 传递name:password认证

wget

非交互网络下载工具(The non-interactive network downloader)。 最简单的方法就是加上文件url:

wget http://xxx/xxx/video.mp4
递归

使用-r可以递归下载的网页。默认递归深度为4,相当于爬虫,通过-l指定递归深度。

端点续传

默认不开启端点续传功能,传入-c参数后开启。

批量下载

可以吧多个URL写入文件,然后用-i指定下载文件列表:

wget -I download.txt
保存文件名

如果h不指定文件名,默认以最后一个符合/后面的字符作为保存文件名,手动-O指定保存文件名。

其他

--limit-rate限制最大下载速度 -b 后台下载 -A 指定下载的文件格式 镜像下载整个网站:

wget --mirror -p --convert-links -P baidu baidu.com

axel

多线程下载工具(a light download accelerator for Linux),通过多连接,大幅提高下载速度。默认支持断线下载。 开启20个线程下载文件:

axel -n 20 URL

nethogs

根据进程查看流量信息。

iptables

强大的包过滤,处理工具。能够实现防火墙,NAT等功能。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券