目录
ifconfig
?是一个传统的网络工具,用于查看和配置网络接口的信息。它可以显示接口的 IP 地址、MAC 地址、子网掩码、广播地址
ifconfig #查看当前系统正在活动的网卡信息
ifconfig -a #查看所有网卡信息
ifconfig -s #网络通讯情况
ifconfig 网卡名称 down #关闭该网卡
ifconfig 网卡名称 up #开启该网卡
ifconfig ens33:0 ip地址/子网掩码 #临时设置虚拟网卡
ifconfig ens33 ip地址/子网掩码 #临时设置ens33网络接口的IP地址
ip
?命令是一个更现代化和功能更强大的网络管理工具,用于配置和管理网络接口、路由表、网络命名空间
ip link
?命令用于管理网络接口。它提供了各种选项和子命令,用于配置、显示和操作网络接口
ip link #显示所有网络接口的状态和信息
ip link set 网卡名 up #启用该网卡
ip link set 网卡名 down #禁用该网卡
ip link delete 网卡名 #删除该网卡
ip link set 网卡名 name 新网卡名 #修改网卡的命名
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
#临时删除虚拟网卡
设备重启,会恢复旧网络接口名
[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的信息
写入/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
修改网卡的配置文件
[root@localhost ~]#vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=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
#切换到有网卡配置文件的目录下
[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
用于查看和修改以太网接口驱动程序和硬件参数的工具
ethtool eth0 #显示以太网接口的状态信息
ethtool -i eth0 #查看以太网接口的驱动程序信息
ethtool -S eth0 #显示以太网接口的统计信息
ethtool -p eth0 #让ens33网口的灯快速闪烁,可分辨现实中的eth0网络接口
route -n #显示数字格式的路由表,包括目标地址、网关、子网掩码和接口等信息
路由表主要构成详解:
Destination:目标网络ID,表示可以到达的目标网络ID,0.0.0.0/0 表示所有未知网络,又称为默认路由,优先级最低
Genmask:目标网络对应的netmask
Iface: 到达对应网络,应该从当前主机哪个网卡发送出来
Gateway: 到达非直连的网络,将数据发送到临近(下一个)路由器的临近本主机的接口的IP地址,如果是直连网络,gateway是0.0.0.0
Metric: 开销cost,值越小,路由记录的优先级最高?
#设置一条去往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
#永久添加路由
[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
选项 | 说明 |
---|---|
-a | 显示主机中所有活动的网络连接信息(包括监听、非监听状态的服务端口) |
-n | 以数字的形式显示相关的主机地址、端口等信息? |
-r | 显示路由表信息 |
-l | 显示处于监听(Listening)状态的网络连接及端口信息? |
-t | 查看 TCP(传输控制协议)相关的信息? |
-u | 查看 UDP(用户数据报协议)相关的信息 |
-p | 显示与网络连接相关联的进程号、进程名称信息(该选项需要 root 权限) |
区别 | netstat | ss |
---|---|---|
性能 | 在处理大量连接时可能性能较差,因为它需要遍历文件查看系统状态 | 使用新的内核接口,因此通常比?netstat ?更快速和高效 |
功能 | 提供了查看网络连接、路由表、接口统计等信息的功能 | 不仅提供与?netstat ?类似的功能,还可以显示更多的套接字信息,如 TCP/UDP 连接、监听端口 |
未来前景 | ss会替代netstat,因为ss在性能上更优秀 |
traceroute IP地址 #追踪经过该ip地址的路由
nslookup
主要用于简单的 DNS 查询,提供基本的 DNS 信息
nslookup 域名 #将域名解析成ip地址
dig
?提供了更为灵活和详细的查询功能,可以显示更多类型的 DNS 记录
dig 域名 #将域名解析成ip地址
host
?主要用于简单的 DNS 查询,提供基本的 DNS 信息
host 域名 #将域名解析成ip地址
?
hostname #查看主机名
#临时修改主机名
hostname 新主机名
su #切换
#命令永久修改主机名
hostnamectl set-hostname 新主机名 #永久修改主机名
reboot #重启生效
原理:使用hostnamectl命令最后是在/etc/hostname文件中添加一条记录,hostnamectl实际是修改了hostname文件
#将新主机名写入配置文件,只有写在第一行的主机名有效
vim /etc/hostname #永久修改主机名
reboot #重启生效
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需要交换机设置,以便整合链接
要求:配置永久的主备模式(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
[root@localhost ~]#ifconfig bond0 down #关闭bond0
[root@localhost ~]#rmmod bonding #删除bond0
[root@localhost ~]#ifconfig bond0 #查看是否还有bond0
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