网络相关命令
nc
netcat,命令 nc 或 ncat,功能强大的网络工具,网络界的瑞士军刀
1 | ncat|nc [OPTIONS...] [hostname] [port] |
示例:
1 | [root@centos8 ~]# hostname -I |
ss
ss 命令用于显示网络状态,利用 ss 可以让你得知整个 Linux 的网络情况
ss 来自于 iproute 包,代替 netstat,netstat 通过遍历 /proc
来获取 socket 信息,主要是/proc/net/tcp
和 /proc/net/tcp6
,ss 使用 netlink 与内核 tcp_diag 模块通信获取 socket 信息,更加高效
一般来说,网络套接字是由 IP 地址,传输协议和端口来定义的。不过需要说明的是套接字不是连接本身,而是连接的端点之一
1 | ss [ OPTIONS ] [ FILTER ] |
默认情况下,如果我们运行ss
命令而没有指定其他选项,它将显示所有已建立连接的打开的非侦听套接字的列表
OPTIONS:
1 | -t # 只显示TCP套接字。当与$(-l)结合只打印出监听套接字时,我们可以看到所有在TCP上侦听的内容。 |
-l 示例:查看已经被使用的端口,使用 nc -l 尝试监听 9501 端口,报错提示已经被占用了
1 | [root@4710419222 ~]# ss -ntl |
FILTER
FILTER : [ state TCP-STATE ] [ EXPRESSION ]
state TCP-STATE:
1 | LISTEN # 监听 |
EXPRESSION :
1 | dport = |
常用组合:-nt
-ntl
-nta
-ntal
-ntalp
-ntlp
-nua
-ntu
-ntul
示例:
1 | ss -l #显示本地打开的所有端口 |
ifconfig
interface config 接口配置,ifconfig 命令用于显示或设置网络设备。 来自于 net-tools 包,建议使用 ip 代替
1 | -a # 显示全部接口信息,包括已经被禁用的网卡 |
示例:
1 | ifconfig -s ens33 |
示例:
1 | #清除eth0上面的IP地址 |
NetworkManager
chkconfig
1 | chkconfig [--list] [--type <type>] [name] |
维护/etc/rc[0-6].d 目录,可以看到目录下都链接文件,有 K 开头和 S 开头,K 开头需要传入 stop 参数,S 开头需要传入 start 参数。init 进程有 0-6 种等级,init 会执行对应 rc 目录下的所有脚本,例如:init0 关机,会执行 rc0.d 目录下的所有脚本,所以可以看到 rc0.d 目录下全都是 K 开头的文件。
init1-5 开机自启,init0、6 关机自动运行。所以可以把管理脚本放到/etc/rc.d/init.d 目录下,然后在 rc[0-6].d 目录下按照一定的命名规范创建软连接即可。chkconfig 命令可以帮我们实现创建、修改、删除等管理软连接的操作,从而实现开机自启、关机自动关闭等功能。
- –add:在 rc[0-6].d 下创建对应链接文件,rc[016].d 下是 K 开头,rc[2-5].d 下是 S 开头
- –del:删除 rc[0-6].d 下对应的链接文件
- –list:列出 chkconfig 管理的所有服务
- on:修改 rc[0-6].d 下对应链接文件,rc[016].d 下是 K 开头,rc[2-5].d 下是 S 开头。如果没有则创建
- off:修改 rc[0-6].d 下对应链接文件为 K 开头。如果没有则创建
chkconfig 适用于 CentOS6,CentOS7 也可以用,但是不推荐,CentOS8 下的 chkconfig 实际上是调用 systemctl
CentOS7、8 推荐使用 systemctl
service 和 systemctl
Linux 服务管理两种方式 service 和 systemctl ,service 配合 init,systemctl 配合 systemd。centos7、8 中的 init 被重定向到 systemd
service
service 命令其实是去/etc/init.d 目录下,去执行相关程序
systemctl
systemctl 集合了 service 和 chkconfig 的所有功能,在 CentOS8 下使用这俩命令实际上是间接调用 systemctl
unit
单元,systemd 中的一个概念,系统初始化需要做的事情非常多。需要启动后台服务,比如启动 ssh
服务;需要做配置工作,比如挂载文件系统。这个过程中的每一步都被 systemd
抽象为一个配置单元,即 unit
。可以认为一个服务是一个配置单元,一个挂载点是一个配置单元,一个交换分区的配置是一个配置单元等等。systemd
将配置单元归纳为以下一些不同的类型。然而,systemd
正在快速发展,新功能不断增加。所以配置单元类型可能在不久的将来继续增加。下面是几个常见的 unit 类型:
1 | - service # 代表一个后台服务进程,这个最多的 |
配置单元的目录:/usr/lib/systemd/system
route
路由表管理命令
查看路由表
1 | route |
添加路由
1 | route add [-net|-host|default] <TARGET> [netmask Nm] [gw <GW>] [[dev] <If>] |
示例:
1 | [root@centos7 ~]#route add -net 172.18.0.0/16 gw 10.0.0.100 dev ens33 |
删除路由
怎添加就怎么删除
1 | route del [-net|-host] target [gw Gw] [netmask Nm] [[dev] If] |
示例:
1 | [root@centos7 ~]#route del -net 172.18.0.0/16 gw 10.0.0.100 dev ens33 |
ip
来自于 iproute 包,集合了 ifconfig 和 route 的所有功能,官方推荐使用 ip address
和 ip link
代替 ifconfig
命令;使用 ip route
代替 route
命令
1 | ip [ OPTIONS ] OBJECT { COMMAND | help } |
ip 地址管理
给网卡 添加 | 删除 ip
1 | ip address { add | del } IFADDR dev STRING [label LABEL] [scope {global|link|host}] [broadcast ADDRESS] |
address 可以简写为 addr 甚至 a 都可以
示例:给 ens37 网卡添加 ip
ens37 网卡初始状态 ip address show dev ens37
给 ens37 添加 ip:11.0.0.120/24 ip address add 11.0.0.120/24 dev ens37
给 ens37 添加 ip:11.0.0.130/24 同时设置别名 ip address add 11.0.0.130/24 dev ens37 label ens37:1
示例:删除 ens37 网卡的 ip
1 | [root@centos7 ~]#ip address del 11.0.0.120/24 dev ens37 |
示例:修改 ens37 网卡的 ip
1 | # 添加新的,删除旧的 |
示例:设置 ip 过期时间
示例:replace 直接替换 ip
网卡管理
1 | ip link set eth1 down #禁用网卡 |
示例:临时修改网卡名称
1 | $ip link set eth0 down # 关闭网卡 |
路由管理
1 | #添加路由:via是 经过 的意思 |
示例:
1 | [root@centos7 ~]#ip route add 1.1.1.0/24 via 10.0.0.200 dev ens33 |
示例:查看路由过程
1 | [root@centos8 ~]#ip route get 10.0.0.7 #查看到达10.0.0.7所使用的路由 |
watch
watch 可以将命令的输出结果输出到标准输出设备,多用于周期性执行命令/定时执行命令。
可以用来监测一个命令的运行结果,来监测你想要的一切命令的结果变化。
1 | watch [options] command |
示例:
1 | [root@centos7 ~]# watch -n 1 -d ifconfig -s ens33 |
arp
管理系统的 arp 缓存
- -n:以数字形式显示 ip
- -d address:删除一个 arp 表项
- -s address hw_addr:添加一个 arp 表项,将 ip 和 MAC 地址绑定
网络测试诊断命令
测试网络连通性
ping
fping
跟踪路由
traceroute
tracepath
mtr
确定名称服务器使用
nslookup
host
dig
抓包工具
tcpdump
wireshark
安全扫描工具
nmap
netcat:网络界的瑞士军刀,即 nc / ncat
流量控制工具
tc
fping
类似 ping,用于将 icmp 探测发送到网络主机,当需要探测多个主机的网络时,fping 性能更高
示例:
1 | fping 10.0.0.7 |
如果不想被大量的 ping 和 fping 请求占用资源,可以设置禁止回复 icmp 的请求:
1 | echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all |
tcpdump ★★★
网络数据包截获分析工具。支持针对网络层、协议、主机、网络或端口的过滤。并提供 and、or、not 等逻辑语句帮助去除无用的信息
1 | tcpdump [-adeflnNOpqStvx][-c<数据包数目>][-dd][-ddd][-F<表达文件>][-i<网络界面>][-r<数据包文件>][-s<数据包大小>][-tt][-T<数据包类型>][-vv][-w<数据包文件>][输出数据栏位] |
示例:
1 | # 查看网卡 |
nmap ★★★
扫描远程主机工具,功能远超越用世人皆知的 Ping