命令
2020/1/18大约 5 分钟
常用的一些网络命令
CentOS 网络命令及工具
1. 好用工具
1.1 network-manager
nmtui: 网络配置图形化工具,方便好用
$ sudo apt install network-manager
# user nmcli and nmtui
# show net device
$ nmcli device
2. 常用网络命令
CentOS7 正式废弃了旧工具包:ifconfig、netstat、locate 等命令(也可以用,不推荐 )
新系统使用 ip、ss、net 等命令代替
2.1 IP 指令集合
网络参数设定
任何時刻如果你想要做好你的网络参数设定(IP
、路由、无线网络)就要了解如下指令
- ifconfig :查詢、设定网卡与
IP
网域等相关参数 - ifup, ifdown:通过命令执行的脚本
script
,更简单的方式上下线 - route :查询、设置路由表 (route table)
- ip :复合式的新指令, 可以直接修改上述提到的功能;
2.2 手动/自动设置启停 IP:
ifup
和 ifdown
只能启动 /etc/sysconfig/network-scripts
下的 ifcfg-ethX
(X 為數字) ,并不能直接修改网络参数,除非手动调整 ifcfg-ethX
配置文件才行。但 ifconfig
可以手动调参。
ifconfig
可以手动启动、观察与修改网络界面的相关参数,語法如下:
列所有网卡:
ifconfig
列出已经启动的网卡,无论该网卡是否分配了IP
,均显示
各参数含义如下:
- HWaddr:网卡的硬件地址,即
MAC
地址 - inet addr:
IPv4
的IP
位址,后续的Bcast
,Mask
分別代表的是Broadcast
与netmask
- inet6 addr:是
IPv6
的版本的IP
- MTU:最大传输单位,
- 最大啊!包接收情況, packets 代表封包數、errors 代表封包發生錯誤的數量、 dropped 代表封包由於有問題而遭丟棄的數量等等
- TX:與 RX 相反,為網路由啟動到目前為止的傳送情況;
- collisions:代表封包碰撞的情況,如果發生太多次, 表示你的網路狀況不太好;
- txqueuelen:代表用來传输资料的缓存区的储存长度
- RX bytes, TX bytes:總接收、傳送的位元組總量
列出指定网卡信息:
ifconfig {interface}
interface
:网卡, 如lo:
(loopback
表示本机回环地址)、eth0
、eth1
等网卡代号
开启,关闭网卡:
ifconfig {interface} {up|down}
# 设置其他选项
ifconfig interface {options}
ip命令
ip
命令是Linux中管理网络配置的强大工具,替代了旧的ifconfig
、route
等命令。
IP地址管理
# 列出所有IP地址(简化版)
ip addr # 完整命令
ip a # 简化命令
# 按IP版本过滤
ip -4 a # 只显示IPv4地址
ip -6 a # 只显示IPv6地址
# 显示特定网卡信息
ip a show eth0
# 显示运行中的网卡
ip link ls up
添加/删除IP地址
# 添加IP地址
ip a add {ip_addr/mask} dev {interface} [label label_name]
ip addr add 192.168.0.123/24 dev eth0
# 添加IP后执行arping(返回值为0时)
arping -I eth0 -c 3 -b -s 192.168.10.23 1.1.1.1
# 删除IP地址
ip a del {ip_addr} dev {interface}
ip addr del 192.168.0.123 dev eth0
# 清空IP地址
ip a flush label "label"
ip -s a f to 192.168.2.0/24 # -s输出统计信息,to限制到特定地址/前缀
网卡管理
# 启用/禁用网卡
ip link set dev {interface} {up|down}
ip l set dev eth0 down
link设置选项
ip link set
命令可以设置多种网卡参数:
$ ip l set <tab>
address -- 指定单播链路层(MAC)地址
arp -- 更改设备上的ARP标志
brd -- 指定广播链路层(MAC)地址
broadcast -- 指定广播链路层(MAC)地址
dev -- 指定设备
down -- 更改状态为down
dynamic -- 更改设备上的DYNAMIC标志
mtu -- 指定最大传输单元
multicast -- 更改设备上的MULTICAST标志
name -- 更改设备名称
peer -- 指定对等链路层(MAC)地址
promisc -- 设置混杂模式
txqlen -- 指定传输队列长度
txqueuelen -- 指定传输队列长度
up -- 更改状态为up
常用格式:ip link set {cmd} dev {interface}
# 设置MTU示例
ip link set mtu 3000 dev eth0
邻居表管理
# 显示邻居表(ARP表)
ip n show # 等同于 ip neigh show
# 添加邻居项
ip n add {ip_addr} lladdr {MAC/LLADDRESS} dev {interface} nud {perm|noarp|stale|reachable}
# 删除邻居项
ip n del {ip_addr} dev eth0
路由表管理
# 列出路由表
ip r # 等同于 ip route
# 显示特定网络的路由
ip r list 192.168.0.0/24
# 添加路由
ip r add {network/mask} dev {interface}
ip r add {network/mask} via {gateway_ip}
ip r add default via {gateway_ip} # 添加默认路由
# 删除路由
ip r del default
ip r del {network/mask} dev eth0
ss命令
ss
(socket statistics)命令用于替代旧的netstat
命令,显示套接字统计信息。它直接从内核空间获取信息,比netstat
更快、更详细。
常用选项
-n # 显示端口数字而非服务名(如显示80而非http)
-t # 显示TCP套接字
-u # 显示UDP套接字
-l # 只显示监听中的套接字
-4 # 只显示IPv4
-6 # 只显示IPv6
-p # 显示使用套接字的进程ID(需要sudo权限)
-s # 显示套接字使用的统计信息
-o # 显示计时器信息
常用组合:
ss -ntpl # 显示所有监听的TCP端口和对应进程
按状态过滤
ss -t4 state established # 显示已建立的IPv4 TCP连接
ss -t4 state time-wait # 显示处于time-wait状态的IPv4 TCP连接
常用连接状态:
- established
- syn-sent
- syn-recv
- time-wait
- closed
- closing
- all
- connected
按端口/IP过滤
# 过滤目标端口为443或80的连接
ss -nt dst :443 or dst :80
# 过滤目标端口大于1024的连接
ss -nt dst gt :1024
动态监控
# 每秒更新一次TCP连接状态
watch -n 1 "ss -t4"