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等功能。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,684评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,143评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,214评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,788评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,796评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,665评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,027评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,679评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,346评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,664评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,766评论 1 331
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,412评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,015评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,974评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,073评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,501评论 2 343

推荐阅读更多精彩内容

  • linux资料总章2.1 1.0写的不好抱歉 但是2.0已经改了很多 但是错误还是无法避免 以后资料会慢慢更新 大...
    数据革命阅读 12,131评论 2 34
  • 本文整理了在实践过程中使用的Linux网络工具,这些工具提供的功能非常强大,我们平时使用的只是冰山一角,比如lso...
    老夫刘某阅读 3,495评论 0 7
  • Ubuntu的发音 Ubuntu,源于非洲祖鲁人和科萨人的语言,发作 oo-boon-too 的音。了解发音是有意...
    萤火虫de梦阅读 99,126评论 9 467
  • 文章首发于个人blog欢迎指正补充,可联系lionsom_lin@qq.com原文地址:《网络是怎样连接的》阅读整...
    lionsom_lin阅读 14,107评论 6 31
  • 第一张病床躺着一个病人 第二张病床躺着一个病人 第三张病床躺着一个病人 一个病人面向窗外 两个病人面向窗外 三个病...
    雪山孟龙阅读 145评论 0 0