目录
一、网络配置命令
1、配置和管理网络接口
1.1 ifconfig
1.2 ip
1.2.1 ip link
1.2.2 ip addr
1.3 修改网络接口名
1.3.1 临时修改网络接口名
1.3.2 永久修改网络接口名
1.4 永久配置单网卡
1.5 永久配置双网卡
1.6 ethtool
2、查看和设置主机中路由表信息
2.1 route
2.2 添加路由
2.2.1 临时添加路由和静态路由
2.2.2 永久添加路由
3、查看网络连接情况
3.1 netstat
3.2 ss
3.3 netstat和ss命令的区别
4、路由追踪
4.1 traceroute
5、域名解析
5.1 nslookup
5.2 dig
5.3 host
6、查看和修改主机名
6.1 hostname
7、bonding多网卡绑定
7.1 网络绑定(bonding)的概念
7.2 Bonding聚合链路工作模式
7.3 永久配置主备模式(mode 1)的bonding
7.4 删除bonding
8、捕获网络数据包
8.1 tcpdump
一、网络配置命令
1、配置和管理网络接口
1.1 ifconfig
ifconfig
是一个传统的网络工具,用于查看和配置网络接口的信息。它可以显示接口的 IP 地址、MAC 地址、子网掩码、广播地址
ifconfig #查看当前系统正在活动的网卡信息
ifconfig -a #查看所有网卡信息
ifconfig -s #网络通讯情况
ifconfig 网卡名称 down #关闭该网卡
ifconfig 网卡名称 up #开启该网卡
ifconfig ens33:0 ip地址/子网掩码 #临时设置虚拟网卡
ifconfig ens33 ip地址/子网掩码 #临时设置ens33网络接口的IP地址
[root@localhost ~]#ifconfig
ens33: flags=4163<UP, BROADCAST,RUNNING,MULTICAST> mtu 1500 #该接口已启用,支持广播、正在运行、支持组播、最大传输单元1500字节inet 172.16.12.10 netmask 255.255.255.0 broadcast 172.16.12.255inet6 fe80::cc81:8141:5f57:6b5a prefixlen 64 scopeid 0x20<link>#IPV6地址 子网长度 作用域 link表示仅该接口有效ether 00:0c:29:d5:d0:91 txqueuelen 1000 (Ethernet)#mac地址 传输队列长度(传输缓存大小) 接口类型RX packets 11894 bytes 16587119 (15.8 MiB)#接收报文个数 总和字节数RX errors 0 dropped 0 overruns 0 frame 0#接收错误 丢弃 溢出 冲突帧数TX packets 5168 bytes 325555 (317.9 KiB)#发送报文个数 总字节数TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0# 错误 丢失 溢出 载荷数 冲突数
1.2 ip
ip
命令是一个更现代化和功能更强大的网络管理工具,用于配置和管理网络接口、路由表、网络命名空间
1.2.1 ip link
ip link
命令用于管理网络接口。它提供了各种选项和子命令,用于配置、显示和操作网络接口
ip link #显示所有网络接口的状态和信息
ip link set 网卡名 up #启用该网卡
ip link set 网卡名 down #禁用该网卡
ip link delete 网卡名 #删除该网卡
ip link set 网卡名 name 新网卡名 #修改网卡的命名
1.2.2 ip addr
ip addr用于显示和管理网络接口的命令,可以列出系统中所有的网络接口信息,包括接口名称、MAC 地址、IP 地址、子网掩码、广播地址
ip addr #显示和管理网络接口信息
ip address add ip地址/子网掩码 dev 网卡名
#临时增加网卡ip address add ip地址/子网掩码 dev ens33 label ens33:1
#临时增加虚拟网卡ip address del ip地址/子网掩码 dev 网卡名
#临时删除网卡ip address del ip地址/子网掩码 dev ens33 label ens33:1
#临时删除虚拟网卡
1.3 修改网络接口名
1.3.1 临时修改网络接口名
设备重启,会恢复旧网络接口名
[root@localhost ~]#ifconfig ens36 #查看指定网卡ens36的信息
[root@localhost ~]#ip link set ens36 down #关闭网卡
[root@localhost ~]#ip link set ens36 name eth1 #修改网卡名
[root@localhost ~]#ip link set eth1 up #开启网卡
[root@localhost ~]#ifconfig eth1 #查看指定网卡eth1的信息
1.3.2 永久修改网络接口名
写入/etc/default/grub配置文件和修改网卡配置文件,就能完成永久修改了
#添加net.ifnames=0到/etc/default/grub文件
[root@localhost ~]#vim /etc/default/grub
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet net.ifnames=0"#重新生成grub配置文件
[root@localhost ~]#grub2-mkconfig -o /boot/grub2/grub.cfg #修改网卡配置文件,统一网卡名
[root@localhost ~]#vim /etc/sysconfig/network-scripts/ifcfg-ens36
NAME=eth1
DEVICE=eth1#重启网络服务
[root@localhost ~]#systemctl restart network
1.4 永久配置单网卡
修改网卡的配置文件
[root@localhost ~]#vim /etc/sysconfig/network-scripts/ifcfg-ens33TYPE=Ethernet #网卡类型
BOOTPROTO=static #静态获取ip地址方式
NAME=ens33 #网卡的名称
DEVICE=ens33 #网卡的描述
ONBOOT=yes #开机自启
IPADDR=172.16.12.10 #设置ip地址
NETMASK=255.255.255.0 #设置子网掩码
GATEWAY=172.16.12.2 #设置网关
DNS1=8.8.8.8 #设置dns服务器1
DNS2=114.114.114.114 #设置dns服务器2
1.5 永久配置双网卡
#切换到有网卡配置文件的目录下
[root@localhost ~]#cd /etc/sysconfig/network-scripts/**************************************************************
#复制ens33网卡配置文件作为模板成ens36网卡配置文件,再进行修改
[root@localhost network-scripts]#cp ifcfg-ens33 ifcfg-ens36
[root@localhost network-scripts]#vim ifcfg-ens36
TYPE=Ethernet
BOOTPROTO=static
NAME=ens36
DEVICE=ens36
ONBOOT=yes
IPADDR=172.16.12.100
NETMASK=255.255.255.0
GATEWAY=172.16.12.2
DNS1=8.8.8.8
DNS2=114.114.114.114***************************************************************
#重启网络服务,查看网络连接状态
[root@localhost network-scripts]#systemctl restart network
[root@localhost network-scripts]#ifconfig ens33
[root@localhost network-scripts]#ifconfig ens36
1.6 ethtool
用于查看和修改以太网接口驱动程序和硬件参数的工具
ethtool eth0 #显示以太网接口的状态信息
ethtool -i eth0 #查看以太网接口的驱动程序信息
ethtool -S eth0 #显示以太网接口的统计信息
ethtool -p eth0 #让ens33网口的灯快速闪烁,可分辨现实中的eth0网络接口
2、查看和设置主机中路由表信息
2.1 route
route -n #显示数字格式的路由表,包括目标地址、网关、子网掩码和接口等信息
路由表主要构成详解:
Destination:目标网络ID,表示可以到达的目标网络ID,0.0.0.0/0 表示所有未知网络,又称为默认路由,优先级最低
Genmask:目标网络对应的netmask
Iface: 到达对应网络,应该从当前主机哪个网卡发送出来
Gateway: 到达非直连的网络,将数据发送到临近(下一个)路由器的临近本主机的接口的IP地址,如果是直连网络,gateway是0.0.0.0
Metric: 开销cost,值越小,路由记录的优先级最高
2.2 添加路由
2.2.1 临时添加路由和静态路由
#设置一条去往10.0.0.0段的路由通过172.16.12.2网关转发
[root@localhost ~]#route add -net 10.0.0.0/8 gw 172.16.12.2
[root@localhost ~]#route -n#删除去往10.0.0.0段的路由
[root@localhost ~]#route del -net 10.0.0.0/8
#添加默认路由
[root@localhost ~]#route add -net 0.0.0.0(default) gw 172.16.12.2
[root@localhost ~]#systemctl restart network
[root@localhost ~]#route -n#删除默认路由
[root@localhost ~]#route del -net 0.0.0.0(default)
[root@localhost ~]#route -n
2.2.2 永久添加路由
#永久添加路由
[root@localhost ~]#vim /etc/sysconfig/network-scipts/route-ens33
10.0.0.0/24 via 172.16.12.10
[root@localhost ~]#systemctl restart network
[root@localhost ~]#route -n
3、查看网络连接情况
3.1 netstat
选项 | 说明 |
---|---|
-a | 显示主机中所有活动的网络连接信息(包括监听、非监听状态的服务端口) |
-n | 以数字的形式显示相关的主机地址、端口等信息 |
-r | 显示路由表信息 |
-l | 显示处于监听(Listening)状态的网络连接及端口信息 |
-t | 查看 TCP(传输控制协议)相关的信息 |
-u | 查看 UDP(用户数据报协议)相关的信息 |
-p | 显示与网络连接相关联的进程号、进程名称信息(该选项需要 root 权限) |
3.2 ss
3.3 netstat和ss命令的区别
区别 | netstat | ss |
---|---|---|
性能 | 在处理大量连接时可能性能较差,因为它需要遍历文件查看系统状态 | 使用新的内核接口,因此通常比 netstat 更快速和高效 |
功能 | 提供了查看网络连接、路由表、接口统计等信息的功能 | 不仅提供与 netstat 类似的功能,还可以显示更多的套接字信息,如 TCP/UDP 连接、监听端口 |
未来前景 | ss会替代netstat,因为ss在性能上更优秀 |
4、路由追踪
4.1 traceroute
traceroute IP地址 #追踪经过该ip地址的路由
5、域名解析
5.1 nslookup
nslookup
主要用于简单的 DNS 查询,提供基本的 DNS 信息
nslookup 域名 #将域名解析成ip地址
5.2 dig
dig
提供了更为灵活和详细的查询功能,可以显示更多类型的 DNS 记录
dig 域名 #将域名解析成ip地址
5.3 host
host
主要用于简单的 DNS 查询,提供基本的 DNS 信息
host 域名 #将域名解析成ip地址
6、查看和修改主机名
6.1 hostname
hostname #查看主机名#临时修改主机名
hostname 新主机名
su #切换 #命令永久修改主机名
hostnamectl set-hostname 新主机名 #永久修改主机名
reboot #重启生效
原理:使用hostnamectl命令最后是在/etc/hostname文件中添加一条记录,hostnamectl实际是修改了hostname文件
#将新主机名写入配置文件,只有写在第一行的主机名有效
vim /etc/hostname #永久修改主机名
reboot #重启生效
7、bonding多网卡绑定
7.1 网络绑定(bonding)的概念
- 在 Linux 中,网络绑定(bonding)是一种将多个物理网络接口组合成一个逻辑接口的技术
- 直接给两块网卡设置同一IP地址是不可以的,而通过 bonding,虚拟一块网卡对外提供连接,物理网卡的被修改为相同的MAC地址
- 这种技术可以提高网络带宽、提供冗余性和容错能力
7.2 Bonding聚合链路工作模式
mode 0
(balance-rr):将传输的数据包轮流发送到各个接口,实现负载平衡和带宽聚合mode 1
(active-backup):只有一个接口处于活动状态,其他接口处于备用状态,实现故障转移mode 2
(balance-xor):使用源和目的 IP 地址、源和目的 MAC 地址进行哈希计算,将数据包发送到相应的接口,实现负载平衡和带宽聚合mode 3
(broadcast):将数据包发送到所有接口,适用于无法确定接收方 MAC 地址的情况mode 4
(802.3ad):基于 IEEE 802.3ad 协议的链路聚合控制协议(LACP),实现带宽聚合和故障转移mode 5
(balance-tlb):使用传输负载平衡(TLB)算法,将数据包发送到活动接口,实现负载平衡和带宽聚合mode 6
(balance-alb):使用自适应负载平衡(ALB)算法,将传输负载分布到所有接口,实现负载平衡和带宽聚合
常用的模式为 mode 0、mode 1、mode 3、mode 6
mode 1、mode 5、mode 6 不需要交换机的任何特殊配置
mode 0、mode 2、mode 3、mode 4需要交换机设置,以便整合链接
7.3 永久配置主备模式(mode 1)的bonding
要求:配置永久的主备模式(mode 1)的bonding,让ens33成为主网卡,ens36成为备网卡。测试关闭ens33,主机网络能否联通,bond0工作状态又有何变化
方法一:写入配置文件添加bonding
#复制ens33网卡配置文件为模版成bond0的配置文件,在此基础上进行修改
[root@localhost network-scripts]#cp ifcfg-ens33 ifcfg-bond0
[root@localhost network-scripts]#vim ifcfg-bond0
TYPE=bond
BOOTPROTO=static
NAME=bond0
DEVICE=bond0
ONBOOT=yes
IPADDR=172.16.12.100
NETMASK=255.255.255.0
GATEWAY=172.16.12.2
DNS1=8.8.8.8
DNS2=114.114.114.114
BONDING_OPTS="mode=1 miimon=100 fail_over_mac=1"
#miimon指定链路监测时间间隔。如果miimon=100,那么系统每100ms监测一次链路连接状态,如果有一条线路不通就转入另一条线路**************************************************************************************
#修改ens33网卡的配置文件
[root@localhost network-scripts]#vim ifcfg-ens33
TYPE=Ethernet
BOOTPROTO=static
NAME=ens33
DEVICE=ens33
ONBOOT=yes
MASTER=bond0
SLAVE=yes**************************************************************************************
#复制ens33网卡配置文件为模版成ens36的配置文件,在此基础上进行修改
[root@localhost network-scripts]#cp ifcfg-ens33 ifcfg-ens36
[root@localhost network-scripts]#vim ifcfg-ens36
TYPE=Ethernet
BOOTPROTO=static
NAME=ens36
DEVICE=ens36
ONBOOT=yes
MASTER=bond0
SLAVE=yes**************************************************************************************
#测试
[root@localhost ~]#ping 172.16.12.100 #查看能否ping通bond0设置的主机ip地址
[root@localhost ~]#cat /proc/net/bonding/bond0 #查看bond0状态信息
[root@localhost ~]#ifconfig bond0 #查看bond0网络接口信息
① 复制ens33网卡配置文件为模版成bond0的配置文件,在此基础上进行修改
②修改ens33网卡的配置文件
③复制ens33网卡配置文件为模版成ens36的配置文件,在此基础上进行修改
④测试
⑤测试关闭ens33,主机网络可以联通,bond0状态变为ens36网卡工作,提高容错能力
注:
重新连接ens33网卡,ens33也不会抢占成为主网卡,而是成为备网卡,依旧是ens36网卡是主网卡在工作
方法二:使用命令永久配置bonding
#添加bonding接口
nmcli con add type bond con-name mybond0 ifname bond0 mode active-backup ipv4.method manual ipv4.addresses 172.16.12.100/24*******************************************************************************************
#添加从属接口
nmcli con add type bond-slave ifname ens33 master bond0
nmcli con add type bond-slave ifname ens36 master bond0*******************************************************************************************
#启动绑定,则必须首先启动从属接口
nmcli con up bond-slave-ens33
nmcli con up bond-slave-ens36
nmcli con up mybond0
7.4 删除bonding
[root@localhost ~]#ifconfig bond0 down #关闭bond0
[root@localhost ~]#rmmod bonding #删除bond0
[root@localhost ~]#ifconfig bond0 #查看是否还有bond0
8、捕获网络数据包
8.1 tcpdump
tcpdump一个强大的网络协议分析器,它主要用于监控和捕获网络流量数据包,并能够以易于阅读的格式显示这些信息。在Linux和其他类Unix系统中广泛使用,是网络管理员、安全专家和开发者进行网络故障排查、性能分析以及安全审计的重要工具。
通式:tcpdump 【选项】 【表达式】
选项 | 说明 |
---|---|
-a | 尝试将网络和广播地址转换成名称 |
-c | 收到指定的数据包数目后,就停止进行倾倒操作 |
-d | 把编译过的数据包编码转换成可阅读的格式,并倾倒到标准输出 |
-dd | 把编译过的数据包编码转换成C语言的格式,并倾倒到标准输出 |
-ddd | 把编译过的数据包编码转换成十进制数字的格式,并倾倒到标准输出 |
-e | 在每列倾倒资料上显示连接层级的文件头 |
-f | 用数字显示网际网络地址 |
-F 表达文件 | 指定内含表达方式的文件 |
-i 网络接口 | 使用指定的网络截面送出数据包 |
-l | 使用标准输出列的缓冲区 |
-n | 不把主机的网络地址转换成名字 |
-nn | 显示ip地址、端口号 |
-N | 不列出域名 |
-O | 不将数据包编码最佳化 |
-p | 不让网络界面进入混杂模式 |
-q | 快速输出,仅列出少数的传输协议信息 |
-r 数据包文件 | 从指定的文件读取数据包数据 |
-s 数据包大小 | 设置每个数据包的大小 |
-S | 用绝对而非相对数值列出TCP关联数 |
-t | 在每列倾倒资料上不显示时间戳记 |
-tt | 在每列倾倒资料上显示未经格式化的时间戳记 |
-T 数据包类型 | 强制将表达方式所指定的数据包转译成设置的数据包类型 |
-v | 详细显示指令执行过程 |
-vv | 更详细显示指令执行过程 |
-x | 用十六进制字码列出数据包资料 |
-w 数据包文件 | 把数据包数据写入指定的文件 |
#查看系统当前所有网卡的信息
#tcpdump -D#监听特定网卡
tcpdump -i ens33#监听特定主机,监听主机172.16.12.10的通信包,注意:出、入的包都会被监听
tcpdump host 172.16.12.10#特定来源的通信
tcpdump src host hostname或ip地址/子网掩码
#特定目标地址的通信
tcpdump dst host hostname或ip地址/子网掩码
#如果不指定src跟dst,那么来源或者目标是hostname或ip地址/子网掩码的通信都会被监听
tcpdump host hostname或ip地址/子网掩码#捕获从ip地址为172.16.12.10的主机发送到ip地址为172.16.12.12的主机的icmp报文
tcpdump -i eth0 -nn icmp and src host 172.16.12.10 and dst host 172.16.12.12#捕获特定端口的数据包
tcpdump port 3000#监听TCP/UDP,服务器上不同服务分别用了TCP、UDP作为传输层,假如只想监听TCP的数据包
tcpdump tcp#来源主机+端口+TCP,监听来自主机172.16.12.10在端口22上的TCP数据包
tcpdump tcp port 22 and src host 172.16.12.10#监听特定主机之间的通信
tcpdump ip host 172.16.12.10 and 172.16.12.12#172.16.12.10和除了172.16.12.12之外的主机之间的通信
tcpdump ip host 172.16.12.10 and ! 172.16.12.12#在eth1接口上抓取前100个源IP地址在172.16.12.0/24网段内、目标端口不为SSH的TCP 数据包,并将这些数据包保存到target.cap文件中,以便后续分析和处理
tcpdump tcp -i eth1 -t -s 0 -c 100 and dst port ! 22 and src net 172.16.12.0/24
-w ./target.cap
(1)tcp: ip icmp arp rarp 和 tcp、udp、icmp这些选项等都要放到第一个参数的位置,用来过滤数
据报的类型
(2)-i eth1 : 只抓经过接口eth1的包
(3)-t : 不显示时间戳
(4)-s 0 : 抓取数据包时默认抓取长度为68字节。加上-S 0 后可以抓到完整的数据包
(5)-c 100 : 只抓取100个数据包
(6)dst port ! 22 : 不抓取目标端口是22的数据包
(7)src net 172.16.12.0/24 : 数据包的源网络地址为172.16.12.0/24
(8)-w ./target.cap : 保存成cap文件,方便用wireshark分析#限制抓包的数量,如下,抓到1000个包后,自动退出
tcpdump -c 1000#保存到本地,tcpdump默认会将输出写到缓冲区,只有缓冲区内容达到一定的大小,或者tcpdump退出时,才会将输出写到本地磁盘,可以加上-U强制立即写到本地磁盘(一般不建议,性能相对较差)
tcpdump -n -vvv -c 1000 -w /tmp/tcpdump_save.cap