iproute家族命令簡介
ip
ip命令用來顯示或操縱Linux主機的路由、網絡設備、策略路由和隧道,是Linux下較新的功能強大的網絡配置工具。
語法
ip [ OPTIONS ] OBJECT { COMMAND | help }
選項
-s:輸出更詳細的信息;
-f:強制使用指定的協議族;
-4:指定使用的網絡層協議是IPv4協議;
-6:指定使用的網絡層協議是IPv6協議;
-0:輸出信息每條記錄輸出一行,即使內容較多也不換行顯示;
-r:顯示主機時,不使用IP地址,而使用主機的域名。
OBJECT
OBJECT := { link | address | addrlabel | route | rule | neigh | ntable |
tunnel | tuntap | maddress | mroute | mrule | monitor | xfrm |
netns | l2tp | macsec | tcp_metrics | token }
link:網絡設備配置
ip link show
ip link help
ip link set { DEVICE | dev DEVICE | group DEVGROUP }
[ { up | down } ] 啟用關閉
[ multicast { on | off } ] 啟用或禁用多播功能
[ name NEWNAME ] 重命名接口
[ mtu MTU ] 設置MTU(默認1500)
[ netns { PID | NAME } ] 用于將接口移動到指定的網絡名稱空間
address:IP地址配置
ip address help
ip address [ show [ dev IFNAME ] 顯示接口IP信息
ip address del IFADDR dev IFNAME 刪除IP地址
ip address flush dev IFNAME 清空所有的IP地址
ip address add IFADDR dev IFNAME
[label NAME] 為額外添加的地址指明接口別名
[broadcast ADDRESS] 廣播地址;會根據IP和NETMASK自動計算得到
[scope SCOPE_VALUE]
global 全局可用
link 接口可用
host 僅本機可用
route:路由表配置
ip route help
ip route show
ip routeadd TYPE PREFIX via GW [dev IFNAME] [src SOURCE_IP] 添加路由
netns:網絡名稱空間
ip netns list
ip netns add NAME 創建虛擬網絡
ip netns del NAME 刪除虛擬網絡
ip netns exec NAME COMMAND 在指定的netns中運行命令
實例
link
- 顯示網卡網絡設備運行狀態詳細信息
[root@localhost ~]# ip -s link 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 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: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000 link/ether 00:0c:29:68:d3:b9 brd ff:ff:ff:ff:ff:ff RX: bytes packets errors dropped overrun mcast 43223 333 0 0 0 0 TX: bytes packets errors dropped carrier collsns 45388 264 0 0 0 0
- 查看模塊網卡狀態
[root@localhost ~]# ip link show ens33 2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000 link/ether 00:0c:29:68:d3:b9 brd ff:ff:ff:ff:ff:ff
- 關閉/開啟網卡
[root@localhost ~]# ip link set ens33 [down | up]
- 開啟關閉組播 (默認打開)
[root@localhost ~]# ip link set ens33 multicast [ on | off ]
- 修改網卡名稱(修改前需關閉網卡)
[root@localhost ~]#ip link set ens33 name ens12345 [root@localhost ~]# ip link show 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: ens12345: <BROADCAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000 link/ether 00:0c:29:68:d3:b9 brd ff:ff:ff:ff:ff:ff
address
- 顯示網卡IP地址和網卡詳細信息
[root@localhost ~]# ip -s address 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 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: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:0c:29:68:d3:b9 brd ff:ff:ff:ff:ff:ff inet 192.168.43.107/24 brd 192.168.43.255 scope global dynamic ens33 valid_lft 2725sec preferred_lft 2725sec inet6 fe80::d17a:125e:bcaa:d956/64 scope link valid_lft forever preferred_lft forever RX: bytes packets errors dropped overrun mcast 89870 686 0 0 0 0 TX: bytes packets errors dropped carrier collsns 95240 519 0 0 0
- 增加網卡ip地址
[root@localhost ~]# ip addr add 192.168.2.1/24 brd + label ens33.1 scope host dev ens33 [root@localhost ~]# ip addr show ens33 2: ens33: <BROADCAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:0c:29:68:d3:b9 brd ff:ff:ff:ff:ff:ff inet 192.168.2.1/24 brd 192.168.2.255 scope host ens33.1 valid_lft forever preferred_lft forever inet 10.88.201.37/24 brd 10.88.201.255 scope global dynamic ens33 valid_lft 82070sec preferred_lft 82070sec inet6 fe80::d17a:125e:bcaa:d956/64 scope link valid_lft forever preferred_lft forever
- 刪除網卡ip地址
[root@localhost ~]# ip addr del 192.168.2.1/24 dev ens33 [root@localhost ~]# ip addr show dev ens33 [root@localhost ~]# ip addr show ens33 2: ens33: <BROADCAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:0c:29:68:d3:b9 brd ff:ff:ff:ff:ff:ff inet 10.88.201.37/24 brd 10.88.201.255 scope global dynamic ens33 valid_lft 82001sec preferred_lft 82001sec inet6 fe80::d17a:125e:bcaa:d956/64 scope link valid_lft forever preferred_lft forever
- 刪除網卡所有的IP地址
[root@localhost ~]# ip add flush dev ens33
route
- 顯示路由信息
[root@localhost ~]# ip route list default via 10.88.201.254 dev ens33 proto static metric 100 10.88.201.0/24 dev ens33 proto kernel scope link src 10.88.201.37 metric 100 192.168.1.0/24 dev ens33 proto kernel scope link src 192.168.1.1
- 增加路由
[root@localhost ~]# ip route add 192.168.0.0/16 via 192.168.1.254 dev ens33 [root@localhost ~]# ip route default via 10.88.201.254 dev ens33 proto static metric 100 10.88.201.0/24 dev ens33 proto kernel scope link src 10.88.201.37 metric 100 192.168.0.0/16 via 192.168.1.254 dev ens33 192.168.1.0/24 dev ens33 proto kernel scope link src 192.168.1.1
- 添加默認路由
[root@localhost ~]# ip route add default via 10.88.201.254 dev ens33 proto static metric 100 src 10.88.201.37
- 刪除路由
[root@localhost ~]# ip route del 192.168.0.0/16 [root@localhost ~]# ip route default via 10.88.201.254 dev ens33 10.88.201.0/24 dev ens33 proto kernel scope link src 10.88.201.37 metric 100 192.168.1.0/24 dev ens33 proto kernel scope link src 192.168.1.1
netns
- 創建netns
[root@localhost ~]# ip netns add ns1
- 刪除netns
[root@localhost ~]# ip netns del ns1
- 查看netns列表
[root@localhost ~]# ip netns list ns1
ss
ss命令用來顯示處于活動狀態的套接字信息。ss命令可以用來獲取socket統計信息,它可以顯示和netstat類似的內容。但ss的優勢在于它能夠顯示更多更詳細的有關TCP和連接狀態的信息,而且比netstat更快速更高效。
ss快的秘訣在于,它利用到了TCP協議棧中tcpdiag。tcpdiag是一個用于分析統計的模塊,可以獲得Linux 內核中第一手的信息,這就確保了ss的快捷高效。
語法
ss [ OPTIONS ]
ss [ OPTIONS ] [ FILTER ]
OPTIONS
-t:TCP協議的相關連接
-u:UDP相關的連接
-w:raw socket相關的連接
-l:監聽狀態的連接
-a:所有狀態的連接
-n:數字格式
-p:相關的程序及其PID
-e:擴展格式信息
-m:內存用量
-o:計時器信息
-s:統計信息
FILTER
FILTER := [ state TCP-STATE ] [ EXPRESSION ]
TCP-STATE:
- LISTEN:監聽
- ESTABLISEHD:建立的連接
- FINWAIT1:
- FINWAIT2:主動關閉鏈接的一方,發出FIN收到ACK以后進入該狀態。稱之為半連接或半關閉狀態。
- SYN_SENT:客戶端發送SYN報文
- SYN_RECV:客戶端接受SYN報文
- CLOSED:表示關閉狀態
EXPRESSION:
- dport 目標端口
- sport 源端口
實例
- 顯示所有tcp socket
[root@localhost ~]# ss -ta State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 *:ssh *:* LISTEN 0 100 127.0.0.1:smtp *:* ESTAB 0 96 10.88.201.37:ssh 10.88.201.253:51599 LISTEN 0 128 :::ssh :::* LISTEN 0 100 ::1:smtp :::*
- 顯示所有的UDP Socekt
[root@localhost ~]# ss -ua
- 顯示數字格式
[root@localhost ~]# ss -tan State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 *:22 *:* LISTEN 0 100 127.0.0.1:25 *:* ESTAB 0 96 10.88.201.37:22 10.88.201.253:51599 LISTEN 0 128 :::22 :::* LISTEN 0 100 ::1:25 :::*
- 顯示網絡接口狀態
[root@localhost ~]# ss -s Total: 954 (kernel 969) TCP: 5 (estab 1, closed 0, orphaned 0, synrecv 0, timewait 0/0), ports 0 Transport Total IP IPv6 * 969 - - RAW 1 0 1 UDP 3 2 1 TCP 5 3 2 INET 9 5 4 FRAG 0 0 0
- 顯示本地打開的所有端口
[root@localhost ~]# ss -l
- 顯示每個進程具體打開的socket
[root@localhost ~]# ss -pl
- 顯示所有已建立的SMTP連接
[root@localhost ~]#ss -o state established '( dport = :smtp or sport = :smtp )'
- 顯示所有已建立的HTTP連接
[root@localhost ~]#ss -o state established '( dport = :http or sport = :http )'
- 端口篩選 sport dport
[root@localhost ~]# ss dport = 51599 Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port tcp ESTAB 0 96 10.88.201.37:ssh 10.88.201.253:51599 [root@localhost ~]# ss sport = 22 Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port tcp ESTAB 0 96 10.88.201.37:ssh 10.88.201.253:51599
- IP篩選:src dst
[root@localhost ~]# ss src 10.88.201.37 Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port tcp ESTAB 0 96 10.88.201.37:ssh 10.88.201.253:51599 [root@localhost ~]# ss dst 10.88.201.253 Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port tcp ESTAB 0 96 10.88.201.37:ssh 10.88.201.253:51599
- 通過IP+端口篩選
[root@localhost ~]# ss src 10.88.201.37:22 Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port tcp ESTAB 0 96 10.88.201.37:ssh 10.88.201.253:51599
- 通過狀態篩選
[root@localhost ~]#ss state established
- 篩選實例
ss sport = :http 也可以是 ss sport = :80 ss dport = :http ss dport \> :1024 ss sport \> :1024 ss sport \< :32000 ss sport eq :22 ss dport != :22 ss state connected sport = :http ss \( sport = :http or sport = :https \) ss -o state fin-wait-1 \( sport = :http or sport = :https \) dst 192.168.1.1/24
配置文件
IP\NETMASK\GW\DNS等屬性的配置文件
/etc/sysconfig/network-scripts/ifcfg-IFNAME
[root@localhost network-scripts]# cat /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet //接口類型
BOOTPROTO=dhcp //激活此接口時使用什么協議來配置接口屬性,常用有dhcp\bootp\static\none
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes //是否初始化IPv6
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=aa9015af-1ffe-4b33-b249-4aac07aa1bd8 //設備唯一接口
DEVICE=ens33 //配置文件對應的設備名稱
ONBOOT=yes //是否開機激活此接口
route路由配置文件
/etc/sysconfig/network-scripts/route-IFNAME
支持兩種配置方式,不可混用
1.每一行一個路由條目:
TARGET via GW
2.每三行一個路由條目:
ADDRESS#=TARGET
NETMASK#=MASK
GATEWAY#=NEXTHOP
實例
[root@localhost ~]# cat /etc/sysconfig/network-scripts/route-ens33
10.88.0.0/24 via 10.88.201.37 dev ens33
[root@localhost ~]# systemctl restart network.service
[root@localhost ~]# ip route
default via 10.88.201.254 dev ens33 proto static metric 100
10.88.0.0/24 via 10.88.201.37 dev ens33 proto static metric 100
10.88.201.0/24 dev ens33 proto kernel scope link src 10.88.201.37 metric 100
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/96617