工作笔记

Linux系统中的IP和SS命令

2019-04-05
阅读次数:

“2009年 Debian 开发者邮件列表宣布放弃使用缺乏维护的net-tools工具包,新发行的Linux版本中历史悠久的ifconfig, netstat等网络相关的命令,还有locate这些命令都没有默认安装,使用ip, ss, net等命令替代了之前的网络操作命令 。 ”

1. IP命令

1.1 IP命令简介

ip 不只是 ifconfig 的一个替代品,这两个命令在结构上有很多不同。即便如此,它们却都用于同一个目的。实际上 ip 命令可以完成下面所有事务:

  • 网络接口配置:
    • 列出系统上配置了哪些网络接口
    • 查看网络接口的状态
    • 配置网络接口(包括本地环路和以太网)
    • 启用或禁用网络接口
  • 路由配置
    • 管理默认静态路由
    • IP 隧道配置
    • 配置 ARP 或 NDISC 缓存条目

1.2 IP命令使用

1.2.1 网络接口配置

  • 显示所有网络接口 多数人使用 ifconfig 做的第一件事就是查看网络接口上分配的 IP 地址。直接终端输入 ifconfig 不带任何参数回车即可看到。那么使用 ip 来做到这点我们只需要这样。
    • 显示所有网络接口
      ip a
      
    • 显示所有 IPv4 相关网络接口
      ip -4 a
      
    • 查看特定的网络接口
      ip a show wlan0
      
  • 配置网络接口
    • 添加或删除IP地址
      ip a add 192.168.80.174 dev eth0
      
      ip a del 192.168.80.174 dev eth0
      
    • 清除所有接口上的所有地址
      ip -s -s a f to 192.168.1.0/24
      
    • 添加MAC地址
      ip link set dev eth0 address 00:0c:29:33:4e:aa
      
    • 禁用/启用网络接口
    ip link set eth0 down
    
    ip link set eth0 up
    
    • 列出正在运行的网络接口
      ip link ls up
      
    • 启用/禁用ARP协议
      # ip link set dev eth0 arp on
      

      除了设置IP地址或硬件地址,可以应用于接口的其他配置包括: 1) MTU(最大传输单元) 2) 组播标志 3) 发送队列长度 4) 混杂模式 5) 启用或禁用所有多播模式

    • 设置传输队列长度
      ip link set txqueuelen 10000 dev eth0
      
    • 设置最大传输单元
      ip link set mtu 9000 dev eth0
      

      1.2.2 IP路由配置

      还可以使用ip 命令来管理系统路由表。

  • 管理路由表
    • 查看所有路由表
      ip r
      
    • 添加/删除默认的网关
    ip route add default via 192.168.1.254
    
    • 添加路由
      ip route add 192.168.1.0/24 dev eth0
      
    • 删除路由
      ip route del 192.168.1.0/24 dev eth0
      

2. SS命令

ss是Socket Statistics的缩写,用来获取socket统计信息,可以显示和netstat类似的内容。ss的优势在于它能够显示更多更详细的有关TCP和连接状态的信息,而且比netstat更快速更高效。

2.1 SS命令参数:

-h, --help	帮助信息

-V, --version	程序版本信息

-n, --numeric	不解析服务名称

-r, --resolve        解析主机名

-a, --all	显示所有套接字(sockets)

-l, --listening	显示监听状态的套接字(sockets)

-o, --options        显示计时器信息

-e, --extended       显示详细的套接字(sockets)信息

-m, --memory         显示套接字(socket)的内存使用情况

-p, --processes	显示使用套接字(socket)的进程

-i, --info	显示 TCP内部信息

-s, --summary	显示套接字(socket)使用概况

-4, --ipv4           仅显示IPv4的套接字(sockets)

-6, --ipv6           仅显示IPv6的套接字(sockets)

-0, --packet	        显示 PACKET 套接字(socket)

-t, --tcp	仅显示 TCP套接字(sockets)

-u, --udp	仅显示 UCP套接字(sockets)

-d, --dccp	仅显示 DCCP套接字(sockets)

-w, --raw	仅显示 RAW套接字(sockets)

-x, --unix	仅显示 Unix套接字(sockets)

-f, --family=FAMILY  显示 FAMILY类型的套接字(sockets),FAMILY可选,支持  unix, inet, inet6, link, netlink

-A, --query=QUERY, --socket=QUERY

      QUERY := {all|inet|tcp|udp|raw|unix|packet|netlink}[,QUERY]

-D, --diag=FILE     将原始TCP套接字(sockets)信息转储到文件

 -F, --filter=FILE   从文件中都去过滤器信息

       FILTER := [ state TCP-STATE ] [ EXPRESSION ]

2.1 SS命令使用实例:

  • 实例1:显示TCP连接
    • 命令:
      ss -t -a
      
  • 实例2:显示 Sockets 摘要
    • 命令:
      ss -s
      
  • 实例3:列出所有打开的网络连接端口
    • 命令:
      ss -l
      
  • 实例4:查看进程使用的socket
    • 命令:
      ss -pl
      
  • 实例5:显示所有UDP Sockets
    • 命令:
      ss -u -a
      
  • 实例6:显示所有状态为Established的HTTP连接
    • 命令:
      ss -o state established '( dport = :http or sport = :http )'
      
  • 实例7:显示TCP连接
    • 命令:
      ss -t -a
      
  • 实例8:用TCP 状态过滤Sockets:
    • 命令:
      ss -4 state FILTER-NAME-HERE
      
      ss -6 state FILTER-NAME-HERE
      

    FILTER-NAME-HERE 可以代表以下任何一个:

    • established
    • syn-sent
    • syn-recv
    • fin-wait-1
    • fin-wait-2
    • time-wait
    • closed
    • close-wait
    • last-ack
    • listen
    • closing
    • all : 所有以上状态
    • connected : 除了listen and closed的所有状态
    • synchronized :所有已连接的状态除了syn-sent
    • bucket : 显示状态为maintained as minisockets,如:time-wait和syn-recv.
    • big : 和bucket相反.
  • 实例9:匹配远程地址和端口号
    • 命令:
    ss dst ADDRESS_PATTERN
    
    ss dst 192.168.1.5
    
    ss dst 192.168.119.113:http
    
    ss dst 192.168.119.113:smtp
    
    ss dst 192.168.119.113:443
    
  • 实例10:匹配本地地址和端口号

    • 命令:
    ss src ADDRESS_PATTERN
    
    ss src 192.168.119.103
    
    ss src 192.168.119.103:http
    
    ss src 192.168.119.103:80
    
    ss src 192.168.119.103:smtp
    
    ss src 192.168.119.103:25
    
  • 实例11:将本地或者远程端口和一个数比较

    • 命令:
    ss dport OP PORT
    ss sport OP PORT
    

    OP 可以代表以下任意一个:

    • <= or le : 小于或等于端口号
    • >= or ge : 大于或等于端口号
    • == or eq : 等于端口号
    • != or ne : 不等于端口号
    • < or gt : 小于端口号
    • > or lt : 大于端口号

3. 命令对照表

net-tools iproute2 备注
arp -na ip neigh 备注
ifconfig ip link 备注
ifconfig -a ip addr show 备注
ifconfig –help ip help 备注
ifconfig -s ip -s link 备注
ifconfig eth0 up ip link set eth0 up 备注
ipmaddr ip maddr 备注
iptunnel ip tunnel 备注
netstat ss 备注
netstat -i ip -s link 备注
netstat -g ip maddr 备注
netstat -l ss -l 备注
netstat -r ip route 备注
route add ip route add 备注
route del ip route del 备注
route -n ip route show 备注
vconfig ip link 备注

4. 参考链接


评论

目录