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 地址等)

查看网卡信息:

[root@by ~]# ifconfig eth0eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500        inet 172.18.82.173  netmask 255.255.240.0  broadcast 172.18.95.255        ether 00:16:3e:12:16:e7  txqueuelen 1000  (Ethernet)        RX packets 2592887  bytes 775090020 (739.1 MiB)        RX errors 0  dropped 0  overruns 0  frame 0        TX packets 2164631  bytes 340929797 (325.1 MiB)        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

给网卡配置 IP 地址:

ifconfig eth0 192.168.2.10ifconfig eth0 192.168.2.10 netmask 255.255.255.0ifconfig eth0 192.168.2.10 netmask 255.255.255.0 broadcast 192.168.2.255

开关网卡:

ifconfig eth0 downifconfig eth0 up

1.2 ip

ip 是非常强大的工具,可以替换 net-tools 包的所有工具,如常见的 ifconfig、 netstat、 route、 arp 等,比如查看网卡信息:

[root@by ~]# ip addr ls dev eth02: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000    link/ether 00:16:3e:12:16:e7 brd ff:ff:ff:ff:ff:ff    inet 172.18.82.173/20 brd 172.18.95.255 scope global eth0       valid_lft forever preferred_lft forever

查看路由:

[root@by ~]# ip routedefault via 172.18.95.253 dev eth0 169.254.0.0/16 dev eth0 scope link metric 1002 172.18.80.0/20 dev eth0 proto kernel scope link src 172.18.82.173

查看 arp 信息:

[root@by ~]# ip neigh172.18.82.1 dev eth0 lladdr ee:ff:ff:ff:ff:ff STALE172.18.95.253 dev eth0 lladdr ee:ff:ff:ff:ff:ff REACHABLE

更多的用法大家用到可以 man ip 一下。

02 连通性探测

连通性探测意在使用工具探测两个网络节点之间的连通性,常用的有 ping、 telnet、 traceroute、 tracepath、 mtr 等工具。

2.1 ping

这个命令通常用来判断网络的连通性和网速情况,偶尔用来查看域名的 IP,比如:

[root@by ~]# ping www.baidu.comPING www.wshifen.com (103.235.46.39) 56(84) bytes of data.64 bytes from 103.235.46.39 (103.235.46.39): icmp_seq=1 ttl=42 time=238 ms64 bytes from 103.235.46.39 (103.235.46.39): icmp_seq=3 ttl=42 time=238 ms

可以看到百度对应域名的 IP。

使用 -c 参数可以指定发送数据包的个数, -w 指定最长等待时间, -I 指定发送数据包的网卡。

ping 只能使用 ipv4,要使用 ipv6,可以用 ping6 命令。

2.2 telnet

telnet 通常用作远程登录,用来确定远程服务的状态,探测远程服务器的某个端口是否能访问,也可以探测本地的,如:

[root@by ~]# telnet localhost 22Trying 127.0.0.1...Connected to localhost.Escape character is '^]'.SSH-2.0-OpenSSH_7.4

可见成功连接到 localhost 的 22 端口,说明该端口已经打开。

2.3 traceroute & tracepath

traceroute 主要用来探测从源主机到目标主机之间的每一跳路由节点,通常和 ping 结合起来排查网络故障, ping 测连通性和网速,如果网络不通,可以借由 traceroute 进一步排查是哪个路由节点出问题了。如果网络卡顿,也可以判断出哪里是瓶颈。

[root@by ~]# traceroute -I -n www.baidu.comtraceroute to www.baidu.com (103.235.46.39), 30 hops max, 60 byte packets 1  * * * 2  11.220.36.69  9.037 ms  9.087 ms  9.124 ms 3  11.220.36.138  55.341 ms  102.560 ms  132.373 ms 4  11.217.38.254  1.690 ms  1.747 ms  1.809 ms 5  119.38.215.142  2.326 ms  2.307 ms  2.332 ms ...

可以看到,从主机到 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 IPv4mtr -6 IPv6

03 网络连接

主要涉及到对网络连接状态的统计,比如连接打开了哪些端口、TCP/UDP、socket 的状态是什么等等。常用的工具有 netstat、 ss、 lsof、 netcat等。

3.1 netstat

netstat 用于查看当前网络的连接情况,能够查看所有的网络连接,包括 unix socket等,也是集多种工具于一身的组合工具。最常用的就是用来检查本地系统都打开了哪些端口:

[root@by ~]# netstat -lnptActive Internet connections (only servers)Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program nametcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      2469/sshd

其他的一些常见用法还有:

- 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 类似,甚至显示更多连接状态

  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值