博文二十五:Linux网络属性配置之ip命令

一、简述

    Linux上的ip命令和ifconfig命令有些类似,相比之下,ip命令的功能更加强大ifconfig命令已经被放弃,并不再维护,建议使用ip命令,特别是在脚本中。

二、使用

    1.ip命令

     显示或修改Linux主机的路由、网络设备、策略路由和隧道。

        1.1)格式
~]# ip [ OPTIONS ] OBJECT { COMMAND | help }
 OPTIONS
  -s 打印更多信息(如统计信息RX/RX errors)。该选项可多次使用
  -f 指定协议族(inet/inet6/bridge/ipx/dnet/link)
  link 不涉及任何网络协议
  -r 使用系统的名字解析功能打印出DNS名字,而不是主机地址
 OBJECT := { link | address | maddress | route |rule }
  address 设备上的协议(IP/IPv6)地址
  link 网络设备
  maddress 多播地址
  route 路由表项
  rule 路由规则

link OBJECT:
  ip link 网络设备配置
    ip link set { DEVICE } [ { up | down } ] 激活或禁用指定接口
    ip link show 
        [ DEVICE ] 指定接口
        [ up ] 仅显示处于激活状态的接口
    
address OBJECT:
  ip address 协议地址管理
    ip addr { add | del } IFADDR dev STRING
        [label LABEL]:添加地址时指明网卡别名
        [scope {global|link|host}]:指明作用域
            global:全局可用
            link:仅链接可用
            host:本机可用
        [broadcast ADDRESS]:指明广播地址
    ip address show 查看协议地址
        dev IFNAME 查看指定的设备
        label PATTERN 查看指定网卡别名的设备
        primary and secondary 只列出主要地址(或次要地址)
    ip address flush 刷新协议地址
        dev IFNAME 查看指定的设备
        label PATTERN 查看指定网卡别名的设备
        primary and secondary 只列出主要地址(或次要地址)     

route OBJECT:
  ip route 路由表管理
    ip route add 添加一个新路由(格式:ip route add TARGET via GW dev IFACE src SOURCE_IP)
        TARGET:
            主机路由:IP
            网络路由:NETWORK/MASK
            添加网关(默认路由):ip route add default via GW dev IFACE
    ip route delete 删除路由(格式:ip route del TARGET)
    ip route show 查看路由表
    ip route flush 刷新路由表
        dev IFACE 刷新指定的路由表
        via PREFIX 刷新指定前缀的路由表信息
        1.2)案例

        注:命令行模式下配置的Linux的ip存在于内核上,重启后就会消失,重启会重新加载配置文件。

# 列出当前主机所有网卡设备的概要信息(这里所有的mac地址均是修改后的)
[root@wybaron_host1015 ~]# ip link show 
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
    link/ether 00:0c:29:d8:cf:8e brd ff:ff:ff:ff:ff:ff
3: ens36: <BROADCAST,MULTICAST> mtu 2500 qdisc pfifo_fast state DOWN mode DEFAULT group default qlen 1000
    link/ether 00:0c:29:d8:cf:98 brd ff:ff:ff:ff:ff:ff

# 列出当前主机所有网卡设备的详细信息
[root@wybaron_host1015 ~]# ip -s link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    RX: bytes  packets  errors  dropped overrun mcast   
    4692       58       0       0       0       0       
    TX: bytes  packets  errors  dropped carrier collsns 
    4692       58       0       0       0       0       
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
    link/ether 00:0c:29:d8:cf:8e brd ff:ff:ff:ff:ff:ff
    RX: bytes  packets  errors  dropped overrun mcast   
    739995994  9438751  0       0       0       0       
    TX: bytes  packets  errors  dropped carrier collsns 
    13879375   52791    0       0       0       0       
3: ens36: <BROADCAST,MULTICAST> mtu 2500 qdisc pfifo_fast state DOWN mode DEFAULT group default qlen 1000
    link/ether 00:0c:29:d8:cf:98 brd ff:ff:ff:ff:ff:ff
    RX: bytes  packets  errors  dropped overrun mcast   
    0          0        0       0       0       0       
    TX: bytes  packets  errors  dropped carrier collsns 
    0          0        0       0       0       0       

    2.ss命令

        端口查看工具。

        2.1)格式

ss [options]... [ FILTER ]
[options]
  -t tcp协议相关
  -u udp协议相关
  -w RAW套接字相关
  -x unix套接字相关
  -l listen状态的连接
  -a 所有
  -n 数字格式
  -p 相关程序及PID
  -e 扩展的信息
  -m 内存用量
  -o 计时器信息
  -4 只显示ipv4的套接字
  -6 只显示ipv6的套接字
[ FILTER ] := [ state TCP-STATE ] [ EXPRESSION ]
    TCP-STATE:
        LISTEN 监听状态,可以接受连接
        ESTABLISHED 已建立的连接
        FIN_WAIT_1
        FIN_WAIT_2
        SYN_SENT 与SYN_RCVD 状态相呼应的状态
        SYN_RCVD 服务器端的SOCKET在建立TCP连接时的三次握手会话过程中的一个中间状态,很短暂。基本上使用命令很难看到这个状态
        CLOSED 初始状态,关闭状态
    EXPRESSION:(案例: '(dport = :ssh or sport = :ssh)' )
        dport = 
        sport =
    

        2.2)案例

# 常用组合
ss -tan 以数字格式显示所有tcp协议的套接字
ss -tanl 以数字格式显示所有tcp协议的监听套接字
ss -tanlp 以数字格式显示所有tcp协议监听的套接字和对应的应用的pid
ss -uan 以数字格式显示所有udp协议的套接字

# 显示tcp套接字
[root@wybaron_host1015 ~]# ss -ta
State      Recv-Q Send-Q          Local Address:Port                           Peer Address:Port                
LISTEN     0      128                         *:sunrpc                                    *:*                    
LISTEN     0      128                         *:ssh                                       *:*                    
LISTEN     0      100                 127.0.0.1:smtp                                      *:*                    
LISTEN     0      3                           *:pptp                                      *:*                    
ESTAB      0      52                172.16.22.4:ssh                             172.16.20.1:55439                
LISTEN     0      128                        :::sunrpc                                   :::*                    
LISTEN     0      128                        :::http                                     :::*                    
LISTEN     0      128                        :::ssh                                      :::*                    
LISTEN     0      100                       ::1:smtp                                     :::*    
# 显示套接字摘要
[root@wybaron_host1015 ~]# ss -s
Total: 590 (kernel 1020)
TCP:   10 (estab 1, closed 1, orphaned 0, synrecv 0, timewait 0/0), ports 0

Transport Total     IP        IPv6
*	  1020      -         -        
RAW	  2         0         2        
UDP	  6         3         3        
TCP	  9         5         4        
INET	  17        8         9        
FRAG	  0         0         0       
# 查看当前被监听的端口
[root@wybaron_host1015 ~]# ss -l
Netid  State      Recv-Q Send-Q       Local Address:Port                        Peer Address:Port                
nl     UNCONN     0      0                     rtnl:-1191181655                             *                     
nl     UNCONN     0      0                     rtnl:kernel                                  *                     
nl     UNCONN     0      0                     rtnl:-1191181655                             *                     
nl     UNCONN     4352   0                  tcpdiag:ss/92795                                *                     
nl     UNCONN     768    0                  tcpdiag:kernel                                  *                     
nl     UNCONN     0      0                     xfrm:kernel                                  *                     
nl     UNCONN     0      0                  selinux:kernel                                  *                     
nl     UNCONN     0      0                    audit:systemd/1                               *                     
nl     UNCONN     0      0                    audit:auditd/589                              *                     
nl     UNCONN     0      0                    audit:kernel                                  *                     
nl     UNCONN     0      0                fiblookup:kernel                                  *                     
nl     UNCONN     0      0                connector:kernel                                  *                     
...
# 查看进程使用的套接字
[root@wybaron_host1015 ~]# ss -lp
Netid  State      Recv-Q Send-Q       Local Address:Port                        Peer Address:Port                
...                    
u_dgr  UNCONN     0      0      /var/run/chrony/chronyd.sock 18177                                  * 0                     users:(("chronyd",pid=649,fd=5))
u_dgr  UNCONN     0      0      /run/systemd/notify 8711                                   * 0                     users:(("systemd",pid=1,fd=18))
u_dgr  UNCONN     0      0      /run/systemd/cgroups-agent 8713                                   * 0                     users:(("systemd",pid=1,fd=20))
u_str  LISTEN     0      128    /run/systemd/private 13330                                  * 0                     users:(("systemd",pid=1,fd=12))
u_str  LISTEN     0      100     private/proxywrite 22489                                  * 0                     users:(("master",pid=1302,fd=53))
...                         
# 查看某端口上的进程或某进程的端口与pid
[root@wybaron_host1015 ~]# ss -pnl | grep 3306
tcp    LISTEN     0      50        *:3306                  *:*                   users:(("mysqld",pid=93184,fd=13))
[root@wybaron_host1015 ~]# ss -pnl | grep mysqld
u_str  LISTEN     0      50     /var/lib/mysql/mysql.sock 240679                * 0                   users:(("mysqld",pid=93184,fd=15))
tcp    LISTEN     0      50        *:3306                  *:*                   users:(("mysqld",pid=93184,fd=13))

三、补充

    TCP的状态

1a2d4de6f10a6e997f66d500dc791ae298a.jpg

    参考

    http://www.cnblogs.com/qlee/archive/2011/07/12/2104089.html

 

 

 

 

转载于:https://my.oschina.net/comics/blog/2248051

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值