命令
常用的一些网络命令
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 :复合式的新指令, 可以直接修改上述提到的功能;
1.1 手动/自动设置启停 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 addr 也可以简写为 ip a . 操作网络地址相关内容,比如列出 ip 地址,添加 ip 地址,删除 ip 等待
列出ip地址: addr 常用 a 代替
ip addr show -> 简化 ip a
显示 V4 、V6 地址
ip -4 a / ip -6 a
# 显示 eth0 网卡
ip a show eth0
# 显示正在运行网卡
ip link ls up
# 添加 ip 地址
ip a add {ip_addr/mask} dev {intereface} [label label_name] // 可选的设置一个label
ip addr add 192.168.0.123/24 dev eth0
如果返回值为 0 执行 arping -I $dev -c 3 -b -s $ip 1.1.1.1
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
flush ip address; delete all the IP addresses matches
可以 flush 一个地址或者一个 label 标记的所有地址
ip a flush label "label" ip -s a f to 192.168.2.0/24 // -s 输出统计信息 to limit to given IP address/prefix
up or down a device
ip link set dev {interface} {up|down} ip l set dev eth0 down
ip link set 命令可以设置很多的值,看一下自动补全提示: link 简化 l
$ ip l set <tab>
address -- specify unicast link layer (MAC) ad
arp -- change ARP flag on device
brd -- specify broadcast link layer (MAC)
broadcast -- specify broadcast link layer (MAC)
dev -- specify device
down -- change state do down
dynamic -- change DYNAMIC flag on device
mtu -- specify maximum transmit unit
multicast -- change MULTICAST flag on device
name -- change name of device
peer -- specify peer link layer (MAC) addre
promisc -- set promiscious mode
txqlen -- specify length of transmit queue
txqueuelen -- specify length of transmit queue
up -- change state to up
一般用法都是 ip link set {cmd} dev {interface}。比如设置 mtu:
ip link set mtu 3000 dev eth0
ip 命令还能查看与邻近节点(neighbour)的可达性:
ip n show // same as 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
会输出附近节点的 arp 信息。可以手动添加这些 arp 条目。
路由表信息也由 ip 命令提供,使用 route/r 子命令操作:
# list route table
ip r
ip r list 192.168.0.0/24
ip r add {default} {network/mask} dev {interface}
ip r add (default) {network/mask} via {gateway_ip}
ip r del default
ip r del network/mask dev wth0
2.ss 命令
ss 是另一个很重要的工具,ss 是 socket statistics 的缩写,用于代替之前使用 netstat 命令。ss 能够显示比 netstat 更多的信息并且速度也更快。
netstat 是从 /proc 下的文件中读取信息再整理显示的,而 ss 命令直接从内核空间获取信息。
-n –numeric,显示端口数字而不是服务名字,比如显示 80 而不是 http
-t –tcp, 即显示 tcp 套接字,同理常用 -u 表示 udo 套接字
-l –listening,也好理解,默认不显示监听的套接字,这个参数指明只显示监听中的套接字
-4 –ipv4也是常用的,在查看服务监听状态时,常指定 -4 或者 -6 结果更加清晰
-p –processes,显示使用这个套接字的进程id,这个参数需要 sudo 权限
-s –summary,显示套接字使用的统计信息
-o –options,显示相关的时间信息
netstat -ntpl -> ss -ntpl
还可以更具套接字状态过滤输出,比如下面的命令:
ss -t4 state established
ss -t4 state time-wait
连接的状态有很多中,常用如下:
established
syn-sent
syn-recv
time-wait
closed
closing
all
connected
还可以通过指定 dport 和 sport 过滤输出:
# 还可以使用 or,666
ss -nt dst :443 or dst :80
// dport 大于1024的连接
ss -nt dst gt :1024
要监控网络流量的动态,可以用 top 相关命令,也可以用 watch 工具:
watch -n 1 "ss -t4"
这样每秒中会刷新一次ss的结果。