发送及时消息

# 给在线用户发送即时消息,Ctrl+Backspace删除字符,Ctrl+D退出
$ write [用户名] [终端设备(可选的筛选条件)]

# 给所有用户发送即时消息
$ wall [选项] [消息]
        -n               # 不显示横幅 (仅root权限)
        -g               # 向指定群组发信息

# 给指定用户发送邮件, 不加[用户名]进入邮件管理器:h--邮件列表,d 1--删除第一封邮件,q--退出
$ mail [用户名]

IW无线网络工具集

获取信息
$ iwlist [接口] [子命令]
                scan/scanning [last]    # 主动扫描要求 root 权限, 普通用户只能查看上次的历史纪录
                                        # ESSID:          无线网络名称
                                        # Signal level:   信号强度
                                        # Frequency:      无线网络频率
                                        # Channel:        无线网络信道
                                        # Bit Rates:      支持的比特率
                                        # Encryption:     加密类型
                                        # Authentication: 认证类型

                frequency               # 查看接口中可用频率的列表
                                        # 2400 表示 2.4 GHz 频段
                                        # 5000 表示 5 GHz 频段

                channel                 # 查看信道的信息
                rate/bitrate            # 显示无线网络接口支持的的速率
                key                     # 列出接口支持的加密密钥大小
                encryption              # 列出接口中设置的所有加密密钥
                power                   # 列出接口的各种电源管理属性和模式
                txpower                 # 列出接口上可用的各种发射功率
                retry                   # 列出接口上的传输重试限制和重试时间
                event                   # 列出接口支持的无线event
                auth                    # 列出当前已设置的 WPA 身份验证参数
                wpa/keys                # 列出接口中设置的所有 WPA 加密密钥
                genie                   # 列出接口中设置的通用信息元素 (用于WPA支持)
                modulation              # 列出接口支持的调制以及当前启用的调制


# 查看附近的无线网
$ iwlist wlan0 scan | grep ESSID

# 查看可用频率
$ iwlist wlan0 frequency

# 查看定义信道的数量
$ iwlist wlan0 channel

# 查看支持的速率
$ iwlist wlan0 rate

# 列出支持的加密密钥大小
$ iwlist wlan0 key

# 列出设置的所有加密密钥
$ iwlist wlan0 encryption
配置接口属性
# iwconfig 配置无线网络名称, SSID, 加密类型, MAC 地址等
$ iwconfig [接口] [子命令]


# 设置 ESSID (网络名称/区域ID),  ESSID 用于识别属于同一虚拟网络的区域
# 与定义单个小区的 AP 地址或 NWID 不同,ESSID 定义了一组通过中继器或基础设施连接的区域
# 可以使用 off 或 any 禁用 ESSID 检查 (ESSID混杂), 用 on 重新启用
# -- 用来转义特殊关键字
$ iwconfig wlan0 essid -- "ANY"


# 设置网络 ID, 由于所有相邻的无线网络共享相同的介质
# 此参数用于区分它们(创建逻辑共存网络)并识别属于同一小区的节点
# 此参数仅用于 802.11 之前的硬件, 802.11 协议将 ESSID 和 AP地址用于此功能
# 可以使用 off 禁用网络ID检查(NWID混杂), 用 on 重新启用
$ iwconfig wlan0 nwid AB34


# 设置昵称,一些 802.11 产品确实定义了它, 但就协议(MAC, IP, TCP)而言这并没有被使用
# 就配置而言, 这是完全无用的, 只有一些无线诊断工具可以使用它
$ iwconfig wlan0 nickname "My Linux Node"

# 根据网络拓扑设置设备的操作模式
# Ad-Hoc:    仅由一个小区组成且没有接入点的网络
# Managed:   节点连接到由许多接入点组成的网络, 具有漫游
# Master:    节点是同步主机或充当接入点
# Repeater:  节点在其他无线节点之间转发包
# Secondary: 节点充当备份主机/中继器
# Monitor:   节点不与任何小区关联, 被动监视频率上的所有数据包
# Auto:      自动
$ iwconfig wlan0 mode Auto

# 设置设备中的工作频率或信道
# 低于 1000 的值表示信道, 大于 1000 的值是以 Hz 为单位的频率
# 可以将后缀 k, M, G 附加到该值(例如, 2.46 GHz频率的"2.46G")
# 信道通常从 1 开始编号, 可以使用 iwlist 来获取信道总数, 列出可用频率, 并将当前频率显示为信道
# 根据规定, 某些频率/信道可能不可用, 在使用管理模式时, 通常情况下, 接入点会指定信道
# 而驱动器可能会拒绝频率设置, 在自组织模式中, 频率设置只能在初始区域创建时使用, 并且在加入现有区域时可以忽略
# 可以使用 off 或 auto 自动选择最佳频道(如果支持)
$ iwconfig wlan0 freq 2422000000/2.422G
$ iwconfig wlan0 channel 3/auto


# 如果可能的话, 强制网卡注册到地址给定的接入点
# 该地址是无线扫描报告的接入点的区域标识, 其可能与其网络MAC地址不同
# 如果无线链路是点对点的, 请设置链路另一端的地址, 如果链路是自组织的, 请设置自组织网络的区域标识
# 当连接质量过低时, 驱动程序可能会恢复到自动模式(选择范围内的最佳接入点)
# 使用 off 重新启用自动模式而不更改当前接入点, 使用 any 或 auto 强制卡与当前最佳接入点重新关联
$ iwconfig wlan0 ap 00:60:1D:01:23:45/any/off


# 对于支持多比特率的网卡, 将比特率设置为 b/s
# 比特率是在介质上传输比特的速度, 由于介质共享和各种开销, 链路的用户速度较低
# 可以将后缀 k,M,G 附加到值(十进制乘数: 10^3, 10^6, 10^9 b/s)
# 低于 1000 的值是特定于网卡的, 通常是比特率列表中的索引
# 使用 auto 可选择自动比特率模式(在有噪声的信道上回退到较低的速率)
# 使用 fixed 可恢复到固定设置, 如果指定比特率值并附加 auto, 则驱动程序将使用低于或等于该值的所有比特率
$ iwconfig wlan0 rate 11M auto


# 对于支持多个发射功率的网卡, 将发射功率设置为dBm
# 如果 W 是以瓦特为单位的功率, 则以 dBm 为单位的电力为 P = 30 + 10.log(W)
# 如果该值由 mW 后置, 它将自动转换为dBm,  此外 on 和 off 可以启用和禁用无线,
# 自动和固定启用和禁用电源控制(如果这些功能可用)
$ iwconfig wlan0 txpower 15/30mW/auto/off


# 设置灵敏度阈值
# 这定义了板卡对恶劣工作条件 (低信号, 干扰)的敏感程度
# 正值假设为硬件使用的原始值或百分比, 负值假设为dBm, 根据硬件实现方式, 该参数可以控制各种功能
# 在现代卡上该参数通常控制切换/漫游阈值, 即硬件保持与当前接入点相关联的最低信号电平
# 当信号电平低于该阈值时, 卡开始寻找新的/更好的接入点, 一些卡可能会使用丢失信标的数量来触发此操作
# 对于高密度的接入点, 较高的阈值确保卡始终与最佳AP相关联
# 对于低密度的 AP,较低的阈值将失败切换的数量降至最低
# 在更古老的卡上, 此参数通常控制延迟阈值, 即硬件认为信道繁忙的最低信号电平
# 高于该阈值的信号电平使硬件抑制其自身的传输, 而比该阈值弱的信号被忽略, 并且硬件可以自由传输
# 这通常与接收阈值强相关, 接收阈值是硬件尝试分组接收的最低信号电平
# 正确设置这些阈值可以防止卡在接收微弱传输的同时在背景噪声上浪费时间, 现代设计似乎能自动控制这些阈值
$ iwconfig wlan0 sens -80/20


# 大多数卡都有MAC重传, 有些卡允许设置重试机制的行为, 要设置最大重试次数, 请输入限制 value
# 这是一个绝对值(无单位), 也是默认值(未指定任何内容时), 要设置MAC应重试的最大时间长度
# 请输入 lifetime value, 默认情况下此值以秒为单位, 附加后缀 m 或 u 以指定以毫秒或微秒为单位的值
# 您也可以添加 short, long, min, max 修改器, 如果卡支持自动模式, 它们会定义限制或生存期的界限
# 一些其他卡根据数据包大小定义不同的值, 例如在 802.11 中, 最小限制是短重试限制(非RTS/CTS数据包)
$ iwconfig wlan0 retry 16
$ iwconfig wlan0 retry lifetime 300m
$ iwconfig wlan0 retry short 12
$ iwconfig wlan0 retry min limit 8


# RTS/CTS 在每次数据包传输之前添加握手, 以确保信道畅通
# 这增加了开销, 但在存在隐藏节点或大量活动节点的情况下会提高性能
# 此参数设置节点为其发送RTS的最小分组的大小, 等于最大分组大小的值禁用该机制
# 也可以将此参数设置为 auto, fixed, off
$ iwconfig wlan0 rts 250/off


# 分段允许在介质上传输的较小分段的突发中分割IP分组, 在大多数情况下这会增加开销
# 但在非常嘈杂的环境中, 这会减少错误惩罚, 并允许数据包通过干扰突发
# 此参数设置的最大片段大小始终低于最大数据包大小,
# 该参数还可以控制某些卡上可用的帧突发,即一起发送多个IP分组的能力
# 如果片段大小大于最大分组大小, 则将启用该机制
# 也可以将此参数设置为 auto, fixed, off
$ iwconfig wlan0 frag 512/off


# 用于操作加密或加扰密钥和安全模式, 要设置当前加密密钥,只需输入十六进制数字的密钥
# 要设置当前键以外的键, 请将 [index] 前置或附加到键本身(这不会改变哪个是活动键)
# 也可以使用 s: 前缀将密钥输入为 ASCII 字符串, 当前不支持密码短语
# 要更改当前活动键是哪个键, 只需输入 [index](不输入任何键值) off 和 on 禁用和重新启用加密
# 安全模式可能是 open, 也可能是 restricted, 其含义取决于所使用的卡
# 对于大多数卡, 在 open 模式下不使用身份验证, 卡也可以接受非加密会话
# 而在 restricted 模式下只接受加密会话, 如果可用, 卡将使用身份验证
# 如果需要设置多个密钥, 或者设置一个密钥并更改活动密钥, 则需要使用多个密钥指令
# 参数可以按任何顺序排列, 最后一个优先
$ iwconfig wlan0 key 0123-4567-89
$ iwconfig wlan0 key [3] 0123-456 7-89
$ iwconfig wlan0 key s:password [2]
$ iwconfig wlan0 key [2]
$ iwconfig wlan0 key open
$ iwconfig wlan0 key off
$ iwconfig wlan0 key restricted [3] 0123456789
$ iwconfig wlan0 key 01-23 key 45-67 [4] key [4]

WPA/WPA2 无线网络工具集

WPA无线配置文件
$ wpa_passphrase [SSID] [PassWord] > [ConfigureFile]
# 示例:
# network={
#         ssid="MY_WIFI"
#         #psk="MY_PASSWORD"
#         psk=012dea1eae4381b95f6497ff010db81c35e4552b93ba715d329175e39ca7a4e2
# }
WPA守护进程
# wpa_supplicant 是一个 WPA/WPA2 无线网络连接守护进程, 负责处理无线网络连接的认证和密钥协商
$ wpa_supplicant [选项] [...]
                  -b                   # + 可选网桥接口名称
                  -B                   # 在后台运行后台进程
                  -c                   # + 配置文件
                  -C                   # ctrl_interface参数(仅当-c未指定时, 即没有配置文件)
                  -d                   # 增加调试的详细程度(-dd甚至更多)
                  -D                   # + 驱动程序名称, 比如:
                                       # nl80211        Linux nl80211/cfg80211
                                       # wext           Linux wireless extensions (generic)
                                       # wired          Wired Ethernet driver
                                       # macsec_linux   MACsec Ethernet driver for Linux
                                       # none           no driver (RADIUS server/WPS ER)
                  -e                   # + 熵文件
                  -f                   # + 输出记录调试文件, 而不输出到stdout
                  -g                   # + 全局ctrl_interface
                  -G                   # + 全局ctrl_interface组
                  -i                   # + 接口名称
                  -I                   # + 附加配置文件
                  -K                   # 在调试输出中包括密钥(密码等)
                  -L                   # 显示许可证(BSD)
                  -m                   # + P2P设备接口的配置文件
                  -N                   # 开始描述新接口 (紧接着 -i 接口 -c 配置文件)
                  -o                   # + 接口, 覆盖新接口的驱动程序参数
                  -O                   # + ctrl, 覆盖新接口的 ctrl_interface 参数
                  -p                   # + 驱动器参数
                  -P                   # + PID文件
                  -q                   # 减少调试的冗长程度(-qq更少)
                  -s                   # 将输出记录到syslog, 而不是stdout
                  -t                   # 在调试消息中包括时间戳
                  -T                   # 记录到除日志记录之外的Linux跟踪
                                       # 记录所有消息, 而不考虑调试的详细程度
                  -u                   # 启用DBus控制接口
                  -W                   # 启动前等待控制接口监视器

# 举例
# 使用驱动
$ wpa_supplicant -i wlan0 -c net.conf -D nl80211

# 连接到 P2P
$ wpa_supplicant -i p2p-dev-wlan0 -c net.conf -m /etc/wpa_supplicant-p2p.conf

# 使用特定网桥接口
$ wpa_supplicant -i wlan0 -c /etc/wpa_supplicant.conf -b br0


# 分配IP
$ dhcpcd

网络环境连通性测试

目标联通检测
$ ping [选项] [目标]
        -a      # 如果目标可达, 发出提示音
        -A      # 根据网络自动调节数据包发送间隔以获取更精确的测量结果
                # 如果网络延迟增加, 则会自动减少发送数据包的频率
                # 如果网络延迟增加, 则会自动增加发送数据包的频率

        -B      # 固定源地址 (一般多网卡会使用)
                # 比如 ping -B -I eth0 baidu.com

        -c      # 指定次数后自动结束 ping
        -D      # 输出附带时间戳
        -d      # 使用 SO_DEBUG 套接字选项
        -f      # 洪水 ping
        -I      # 指定接口名称或地址
        -i      # 发送每个数据包之间的秒数
        -L      # 抑制多播数据包的环回
                # 发送多播数据包时, 不让这些数据包回环到本地的进程
                # 这个选项只有在 ping 的目标地址是一个多播地址时才有效

        -l      # + 预加载, 等待回复期间继续发送最多(预加载)个数个请求
        -m      # 给每个发出的数据包打上一个 32 位的标记
                # 这个标记可以在内核中用于各种目的
                # 比如使用策略路由来选择特定的出口处理
                # 这个选项需要 CAP_NET_ADMIN 权限
                # 所以一般只有超级用户才能使用

        -M      # 设置路径 MTU 发现(PMTUD)的策略
                # 一种在两个 IP 主机之间的网络路径上确定最大传输单元(MTU)大小的标准化技术
                # 通常是为了避免 IP 分片, 取值是下面三个之一:
                # do:   强制开启路径 MTU 发现, 即在 IP 头部设置不分片(DF)标志位
                #       如果数据包超过路径 MTU就会被丢弃, 并收到 ICMP 错误消息, 从而调整数据包大小
                # dont: 强制关闭路径 MTU 发现, 即不设置 DF 标志位
                #       如果数据包超过路径 MTU, 就会被分片传输
                # want: 根据系统默认设置决定是否开启路径 MTU 发现, 这是 ping 命令的默认选项

        -n      # 不使用域名解析, 直接向 IP 测试
        -O      # 报告未完成的回复
        -p      # +模式, 指定填充数据包的十六进制内容
        -q      # 安静输出, 即隐藏每一次具体的信息
        -Q      # + QoS 码点, 用来设置或测试网络中不同类型的流量的优先级
                # ping -Q 0x00: CS0   不标记
                # ping -Q 0x08: CS1   低优先级的背景流量, 如扫描或备份
                # ping -Q 0x1e: AF31  低优先级的实时流量, 如语音和视频
                # ping -Q 0x20: AF21  中优先级的实时流量
                # ping -Q 0x2a: AF11  低优先级的非实时流量, 如电子邮件和文件传输
                # ping -Q 0x2e: AF33  较高优先级的非实时流量, 如电子邮件和文件传输
                # ping -Q 0x2c: EF    高优先级的实时流量, 如语音和视频
                # ping -Q 0x40: AF41  中优先级的非实时流量
                # ping -Q 0x60: CS6   网络控制流量, 如路由协议

        -s      # 指定发送字节数
        -S      # 设置 SO_SNDBUF 套接字选项值
        -t      # 自定义 TTL
        -U      # 打印用户到用户延迟
        -v      # 输出详细信息
        -w      # +秒, 设置整个ping操作的最长时间, 指定时间内没有收到回复就会自动退出
        -W      # +秒, 设置每个请求的超时时间, 指定时间内没有收到回复就会自动退出
        -4      # 使用 IPv4 (以下-b,-R,-T 为 IPv4 选项)
        -b      # 允许ping广播
        -R      # 记录 route
        -T      # 定义时间戳,取值为: tsonly, tsandaddr, tsprespec
        -6      # 使用 IPv6 (以下-F,-N 为 IPv6 选项)
        -F      # + 20 位的十六进制数流标签(0x0 ~ 0xFFFFF), 用于标识特定的网络流
        -N      # + node_info, 用于指定 ICMPv6 节点信息查询选项



# 举例
$ ping -f baidu.com
$ ping -I eth0 baidu.com
$ ping -i 1 baidu.com
$ ping -c 4 baidu.com
路径检测
$ traceroute [选项] [目标站点] [完整的数据包长度(可选)]
                          # 完整的数据包长度(默认值为IP标头的长度加40)可以忽略或增加到允许的最小值
               -4         # IPv4
               -6         # IPv6
               -A         # 在路由注册表中执行AS路径查找, 并将结果直接打印在相应的地址之后
               -d         # 启用套接字级别调试
               -F         # 不要分割数据包
               -e         # 显示ICMP扩展(如果存在), 包括 MPLS
               -f         # + TTL, 指定开始 ttl
               -g         # + 网关, 通过指定的网关路由数据包, IPv4最多8个, IPv6最多127个

               -I         # 使用 ICMP ECHO 进行追踪
               -T         # 使用 TCP SYN 进行跟踪 (默认端口为80)
               -U         # 使用UDP到特定端口进行跟踪(而不是增加每个探测器的端口)默认端口为53
               -UL        # 使用UDPLITE进行跟踪(默认目标端口为53)
               -D         # 使用DCCP请求进行追踪(默认端口为33434)

               -i         # + 接口, 指定要使用的网络接口
               -m         # + TTL, 指定最大跳数, 默认 30
               -M         # + module, 使用指定的模块(内置或外部)
                          # 比如 -M icmp 等价于 -I
               -N         # + 模拟数量, 设置要同时尝试的探测数量(默认为16)
               -n         # 不将 IP 地址解析为其域名
               -O         # + 选项集, 作用于 -M module, 不同选项逗号分隔, help 查看支持的选项
               -p         # + 端口, 设置要使用的目标端口
               -P         # + 协议, 使用指定协议的原始数据包进行追踪
               -t         # + tos, 设置传出数据包的 TOS (IPv4) 或 TC (IPv6) 值
               -l         # + flow_label, 对 IPv6 数据包使用指定的 flow_label
               -w         # + MAX, HERE, NEAR
                          # 等待探测的时间不超过 HERE(默认3)倍或不超过 NEAR(默认10)倍
                          # 或者不超过 MAX (默认5.0)秒(浮点值)

               -q         # + 数字, 设置每一跳的探测数量, 默认是 3
               -r         # 跳过常规路由, 直接发送到连接网络上的主机
               -s         # + 地址, 对传出数据包使用源地址
               -z         # + 时间, 探测之间的最短时间间隔 (单位:秒, 大于10时单位变为毫秒)

# 举例
$ traceroute -U 80 baidu.com

# 指定最大跳数
$ traceroute -m 10 192.168.1.1

# 显示ICMP扩展信息
$ traceroute -e www.qq.com

# 使用指定网关
$ traceroute -g 192.168.1.254 www.taobao.com

# 同时尝试8个探测
$ traceroute -N 8 www.bilibili.com

# 设置探测超时时间为2秒
$ traceroute -w 2 www.sohu.com
更加智能化的探测工具
$ mtr [选项] [site]
       -F                 # + file, 从文件中读取主机名
       -4                 # 仅使用IPv4
       -6                 # 仅使用IPv6
       -u                 # 使用UDP而不是ICMP回显
       -T                 # 使用TCP而不是ICMP回显
       -I                 # + 接口, 使用命名的网络接口
       -a                 # + 地址, 将传出套接字绑定到ADDRESS
       -f                 # + TTL, 设置要启动的TTL
       -m                 # + 跳数, 最大跃点数
       -U                 # + 数量, 最大未知主机数
       -P                 # + 端口, TCP,SCTP或UDP的目标端口号
       -L                 # + 本地端口, UDP的源端口号
       -s                 # + 包大小, 设置用于探测的数据包大小
       -B                 # + 数字, 设置要在有效载荷中使用的位模式
       -i                 # + 秒, ICMP回显请求间隔
       -G                 # + 秒, 等待响应的秒数
       -Q                 # + 类型, IP标头中的服务类型字段
       -e                 # 显示ICMP扩展的信息
       -Z                 # + 秒, 保持探针插座打开的秒数
       -M                 # + 标记, 标记每个发送的数据包
       -r                 # 使用报告模式输出
       -w                 # 输出范围报告
       -c                 # + 次数, 设置发送的ping次数
       -j                 # 输出json
       -x                 # 输出xml
       -C                 # 输出逗号分隔的值
       -l                 # 输出原始格式
       -p                 # 分流输出
       -t                 # 使用curses终端接口
       -n                 # 不解析主机名
       -b                 # 显示IP号码和主机名
       -o                 # + 字段, 选择输出字段
       -y                 # + 数字, 在输出中选择IP信息
       -z                 # 显示AS编号

网络接口与硬件配置

网卡类型(数字表编号)说明
eth0表示本地物理网卡
eno1表示主板BIOS内置网卡
ens33代表有主板bios内置的PCI-E网卡
enp2s0表示PCI-E独立网卡
lo表示本地回环,固定为127.0.0.1
接口检查与设置
# 使用该命令可以查看IPv4,IPv6地址,硬件地址,网关,子掩码,收包,发包,丢包等信息
$ ifconfig
IP 命令
$ ip []

端口监听/连接状态

$ netstat [参数]
            -t                        # TCP传输控制协议,(打电话)
            -u                        # UDP用户数据报协议,(发短信)
            -l                        # 监听
            -r                        # 路由
            -n                        # 显示IP和端口

$ netstat -tuln                       # 本机监听的端口
$ netstat -an                         # 所有网络连接
$ netstat -rn                         # 查看本机所有路由表

路由表

# 查询路由表
$ route

几个和网络相关的配置文件(夹)

# * 表示通配符
/etc/host*
/etc/dhcp*
/etc/wpa_supplicant/...
/etc/netconfig
/etc/netplan/...
/etc/network/if-*/...
/etc/NetworkManager/...
/etc/sysconfig/network-scripts/...

"图像化"配置网络

$ nmcli
$ nmcli device       # 查看网卡设备
$ nmtui              # "图形化"管理