Linux常用命令收集整理
作者:互联网
有一台 三-丰-云-免-费-主-机,经常都要跟 Linux 打交道,经常要使用到linux的各种命令,当然每次都可以找度娘,但一些基本常的命令还是需要熟练掌握。
Linux 网络命令涉及到这么几块:
- 网络配置: ifconfig、 ip
- 连通性探测: ping、 traceroute、 telnet、 mtr
- 网络连接: netstat、 ss、 nc、 lsof
- 流量统计: ifstat、 sar、 iftop
- 交换与路由: arp、 arping、 vconfig、 route
- 防火墙: iptables、 ipset
- 域名: host、 nslookup、 dig、 whois
- 抓包: tcpdump
- 虚拟设备: tunctl、 brctl、 ovs
01 网络配置
最重要的两个工具就是 ifconfig 和 ip,这两个工具分别来自两个工具包 net-tools 和 iproute2,其中, net-tools 包还包含如 route、 netstat、 tc、 ifstat 等等常用的工具,不过, net-tools 包已经逐步在被 iproute2 包替换。对于我们学习来说,不妨都学习下,这样也有助于理解和记忆。
1.1 ifconfig
ifconfig 通常是用来查看网卡的信息(比如 IP 地址、收发包及丢包情况等),以及配置网卡(如启停网卡,修改网卡 MTU,修改 IP、MAC 地址等)
查看网卡信息:
这是一份你需要的Linux 网络命令大全
给网卡配置 IP 地址:
这是一份你需要的Linux 网络命令大全
开关网卡:
ifconfig eth0 down
ifconfig eth0 up
1.2 ip
ip 是非常强大的工具,可以替换 net-tools 包的所有工具,如常见的 ifconfig、 netstat、 route、 arp 等,比如查看网卡信息:
这是一份你需要的Linux 网络命令大全
查看路由:
这是一份你需要的Linux 网络命令大全
查看 arp 信息:
这是一份你需要的Linux 网络命令大全
更多的用法大家用到可以 man ip 一下。
02 连通性探测
连通性探测意在使用工具探测两个网络节点之间的连通性,常用的有 ping、 telnet、 traceroute、 tracepath、 mtr 等工具。
2.1 ping
这个命令通常用来判断网络的连通性和网速情况,偶尔用来查看域名的 IP,比如:
这是一份你需要的Linux 网络命令大全
可以看到百度对应域名的 IP。
使用 -c 参数可以指定发送数据包的个数, -w 指定最长等待时间, -I指定发送数据包的网卡。
ping 只能使用 ipv4,要使用 ipv6,可以用 ping6 命令。
2.2 telnet
telnet 通常用作远程登录,用来确定远程服务的状态,探测远程服务器的某个端口是否能访问,也可以探测本地的,如:
这是一份你需要的Linux 网络命令大全
可见成功连接到 localhost 的 22 端口,说明该端口已经打开。
2.3 traceroute & tracepath
traceroute 主要用来探测从源主机到目标主机之间的每一跳路由节点,通常和 ping 结合起来排查网络故障, ping 测连通性和网速,如果网络不通,可以借由 traceroute 进一步排查是哪个路由节点出问题了。如果网络卡顿,也可以判断出哪里是瓶颈。
这是一份你需要的Linux 网络命令大全
可以看到,从主机到 baidu.com 共经历了 30 跳,每一跳都统计了响应时间。
类似的工具还有一个 tracepath。
2.4 mtr
mtr 全称是 mytraceroute,是一个集大成的工具,它集成了 ping、 traceroute、 nslookup 的功能,诊断网络问题非常方便。
mtr 有个好处就是能够 实时刷新 数据,比如 mtr-n www.baidu.com 可以看到,从本地到百度经过的所有路由,并显示每个路由间的丢包率、响应时间等。
常用参数:
mtr -r 不会刷新,一次性打印 10个包的统计结果
mtr -s 用来指定ping数据包的大小
mtr -n no-dns不对IP地址做域名反解析
mtr -a 来设置发送数据包的IP地址,这个用于主机有多个IP时。
mtr -i 使用这个参数来设置ICMP返回之间的要求默认是1秒
mtr -c 指定发送多少个数据包
mtr -4 IPv4
mtr -6 IPv6
03 网络连接
主要涉及到对网络连接状态的统计,比如连接打开了哪些端口、TCP/UDP、socket 的状态是什么等等。常用的工具有 netstat、 ss、lsof、 netcat等。
3.1 netstat
netstat 用于查看当前网络的连接情况,能够查看所有的网络连接,包括 unix socket 等,也是集多种工具于一身的组合工具。最常用的就是用来检查本地系统都打开了哪些端口:
这是一份你需要的Linux 网络命令大全
其他的一些常见用法还有:
netstat -i 显示网络接口信息
netstat -s 显示所有网络协议栈信息
netstat -r 显示路由表信息
netstat -at 列出所有 TCP 端口
netstat -au 列出所有 UDP 端口
netstat -lt 列出所有监听 TCP 端口的 socket
netstat -lu 列出所有监听 UDP 端口的 socket
netstat -lx 列出所有监听 UNIX 端口的 socket
netstat -ap | grep ssh 找出程序运行的端口
netstat -an | grep ':80' 找出运行在指定端口的进程
3.2 ss
ss 和 netstat 类似,也是用来查看网络连接统计的工具,它的输出也和 netstat 类似,甚至显示更多连接状态信息,它最大的优势在于比 netstat 快,在服务器维持上万个连接的情况下,这种优势就体现得比较明显。
常用参数:
-l 查看处于LISTEN状态的连接
-t 查看tcp连接
-4 查看ipv4连接
-n 不进行域名解析
通常使用 ss-tln4 查看本地监听的所有端口。
3.3 lsof
lsof 可以列出当前系统打开文件、打开文件的进程、进程打开的端口。由于在 Linux 中一切皆文件,所以, lsof 也常用来统计网络相关的文件信息(使用 -i 选项),如 TCP/UDP/Unix socket 的统计信息。
它的使用格式为 [46][protocol][@hostname|hostaddr][:service|port],比如:
列出所有与主机 172.18.82.173(我的主机IP)22 号端口的 ipv4 连接:
这是一份你需要的Linux 网络命令大全
3.4 netcat(nc)
nc 被称为瑞士×××,非常轻巧但功能强大,能够创建各种不同类型的网络连接、能够实现简单的聊天工具、远程传输文件、debug 分析、扫描端口等。
比如扫描主机 172.18.82.173 的 1-100 哪些端口开放:
这是一份你需要的Linux 网络命令大全
可以看到,该主机开放了 22 和 80 端口。
04 流量统计
4.1 ifstat
ifstat 主要用来监测主机网口的网络流量,常用的选项包括:
-a:监测主机所有网口
-i:指定要监测的网口
-t:在每行输出信息前加上时间戳
-b:以 Kbit/s 显示流量数据,而不是默认的 KB/s
delay:采样间隔(单位是 s),即每隔 delay 的时间输出一次统计信息
count:采样次数,即共输出 count 次统计信息
比如,通过以下命令统计主机所有网口某一段时间内的流量数据:
这是一份你需要的Linux 网络命令大全
4.2 sar
sar 是一个系统历史数据统计工具。统计的信息非常全,包括 CPU、内存、磁盘 I/O、网络、进程、系统调用等等信息。网络信息通常使用 -n参数来统计,常用几个选项如下:
-n DEV:网络接口统计信息。
-n EDEV:网络接口错误。
-n IP:IP 数据报统计信息。
-n EIP:IP 错误统计信息。
-n TCP:TCP 统计信息。
-n ETCP:TCP 错误统计信息。
-n SOCK:套接字使用。
4.3 iftop
和 top、 iotop 是一个系列,它主要用来查看网络流量。
05 交换与路由
5.1 arp
用来管理主机的 ARP 缓存,增删查改等。
常见用法:
arp:显示 ARP 缓存所有记录
arp -i :显示指定接口的 ARP 缓存记录
arp -d :删除指定主机的 ARP 缓存记录
arp -s <硬件地址>:添加 ARP 缓存静态项
5.2 arping
查看本 LAN 内 IP 对应的主机 MAC 地址,以及 MAC 的占用问题。
比如,指定从某个接口向某台主机发送 ARP 包,来获得 MAC 地址。
这是一份你需要的Linux 网络命令大全
5.3 vconfig
Linux vlan 配置命令,比如给某个接口增加两个 vlan 是:
vconfig add eth0 100
vconfig add eth0 200
删除 vlan 是:
vconfig rem eth0.100
vconfig rem eth0.200
5.4 route
route 用来查看和修改路由表,同样工具还有 netstat-r 和 ip route。
route-n 查看路由表
route add/del 增加/删除路由表
比如添加一条默认路由:
route add default gw 192.168.1.1 dev eth0
06 防火墙
6.1 iptables
iptables 是强大的包过滤工具。 iptables 通过一系列规则来过滤、处理数据包,能够实现防火墙、NAT等功能。
当一个网络包进入到主机之前,会经过一系列的 iptables 规则检查,如何通过则接受,否则就丢弃,iptables 的规则由多个表组成,每个表又由多条链构成,整体比较复杂,对于这个工具,我们 后面再出一篇文章来进行详细讲解。
6.2 ipset
ipset 是一个辅助 iptables 的工具,通常用在限制多个 IP 的场景下,使用 ipset,可以将多个 IP 放入一个集合,然后 iptables 针对这个集合做限制,这样可以大大提高效率。 ipset除了可以集合 IP 外,还可以集合 网段、MAC、端口、网卡等。
常用操作比如:
创建一个 ipset:
ipset create blacklist hash:ip
blackliset 是集合名称
hash 是存储类型,还支持 bitmap、list 等
ip 是存储类型,可以是 MAC、端口等
往集合中增加项:
ipset add blacklist 192.168.10.2
从集合中移除项:
ipset del blacklist 192.168.10.2
还可以指定超时时间限制:
ipset create blacklist hash:net timeout 60
07 域名相关
7.1 host
host 命令是域名分析查询工具,用来测试域名系统工作是否正常。
比如查看百度域名信息:
[root@by ~] host www.baidu.com
www.baidu.com is an alias for www.a.shifen.com.
www.a.com has address 18.215.177.38
www.a.b.com has address 18.215.177.39
7.2 nslookup
nslookup 用于交互式域名解析,查看域名解析是否正常,在网络故障的时候用来诊断网络问题。
查看 google.com 的 DNS 地址:
这是一份你需要的Linux 网络命令大全
查看使用的 DNS 服务器地址:
[root@by ~]# nslookup
server
Default server: 8.8.8.8
Address: 8.8.8.8#53
Default server: 8.8.4.4
Address: 8.8.4.4#537.3 dig
dig 命令也是域名解析工具,但是比 nslookup 提供的更全面:
这是一份你需要的Linux 网络命令大全
7.4 whois
whois 用于查看域名所有者的信息,比如注册邮箱、手机号码、域名服务商等。
这是一份你需要的Linux 网络命令大全
比如,查看 coolshell.cn 这个域名是陈皓在万网注册的,注册时间是 2009 年,注册邮箱是 haoel@hotmail.com。
08 抓包相关
8.1 tcpdump
tcpdump 是 Linux 下最为强大的抓包工具。之前写过一篇完整的文章,详细请看这里:
Linux 网络命令必知必会之 tcpdump,一份完整的抓包指南请查收!
09 虚拟设备
虚拟设备指的是针对 tap/tun、veth-pair、bridge、ovs 等设备的工具。
对于这些设备的操作命令,都隶属于 ip 命令,比如 tap/tun 设备是 ip tuntap、veth-pair 和 bridge 是 ip link和 ip netns。
除此之外,还有一些相关的辅助工具。
9.1 tunctl
tunctl 实现和 ip tuntap 类似,用来创建 tap/tun 设备。
默认创建 tap 接口:
tunctl
以上等价于 tunctl-p
为用户 user 创建一个 tap 接口:
/# tunctl -u user
创建 tun 接口:
/# tunctl -n
删除接口:
/# tunctl -d tap0
9.2 brctl
brctl 用来操作 bridge 网桥,可用于查看网桥、创建网桥、把网卡加入网桥等。
[root@by ~]# brctl show
bridge name bridge id STP enabled interfaces
br0 8000.000000000000 no
OVS 是网桥的第三方开源实现,它自带一套命令集,有兴趣的读者可以进一步研究下。
标签:IP,查看,端口,收集整理,常用命令,netstat,网络,Linux 来源: https://blog.51cto.com/7704223/2407694