将Linux主机接入到网络,需要配置网络相关设置
一般包括如下内容:
-
主机名
-
IP/netmask
-
路由:默认网关
-
DNS服务器
-
主DNS服务器
-
次DNS服务器
-
第三个DNS服务器
一. 网络配置命令
1.1 ifconfig 查看网卡
查看网卡(ip地址):ifconfig ; ip add
基础用法
在不带任何选项和参数执行 ifconfig 命令时, 将显示当前主机中已启用(活动)的网络接口信息
网卡名称详解:
ens33:第一块以太网卡的名称详解:
“ens33”中的
-
“en”是“EtherNet”的缩写,表示网卡 类型为以太网,
-
“s” 表示热插拔插槽上的设备(hot-plug Slot),
-
数字“33”表示插槽 编号
centos6 网卡 名称叫 eth0 。
[root@localhost ~]#ifconfig
ens33: flags=4163<UP, BROADCAST,RUNNING,MULTICAST> mtu 1500
该接口 已启用,支持广播、 正在运行 支持组播 最大传输单元1500字节
inet 192.168.91.100 netmask 255.255.255.0 broadcast 192.168.91.255
inet6 fe80::fe7:ca03:81f:2887 prefixlen 64 scopeid 0x20<link>
IPV6地址 子网长度 作用域 link表示仅该接口有效
ether 00:0c:29:fe:e5:bf txqueuelen 1000 (Ethernet)
mac地址 传输队列长度(传输缓存大小) 接口类型
RX packets 2211 bytes 182146 (177.8 KiB)
接收 报文个数 总和字节数
RX errors 0 dropped 0 overruns 0 frame 0
接收 错误 丢弃 溢出 冲突帧数
TX packets 1317 bytes 294334 (287.4 KiB)
发送 报文个数 总字节数
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
错误 丢失 溢出 载荷数 冲突数
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1 (Local Loopback)
RX packets 82 bytes 7100 (6.9 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 82 bytes 7100 (6.9 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
virbr0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255
ether 52:54:00:e8:a0:b9 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
常用格式:
ifconfig
#默认显示活动的网卡
ifconfig 网卡名称
#只显示具体网卡的详细信息(无论该网卡是否启用)
ifconfig -a
#表示显示所有网卡包括没有启动的网卡
ifconfig 网卡名称 up #开启网卡
ifconfig 网卡名称 down #关闭网卡
ifconfig ens33:0 ip地址/子网掩码
#设置虚拟网卡
ifconfig ens33:0 down
#关闭虚拟网卡
ifconfig -s
#网络通讯情况
修改网卡的ip地址需要进入网卡的配置文件里进行配置。
网卡配置文件所在位置 及 配置信息:
/etc/sysconfig/network-scripts
配置文件重要的配置详解:
TYPE=Ethernet
#接口类型
BOOTPROTO=static
#ip地址获取的方式,dhcp动态获取,一定要有dhcp服务器
手动: static (none)
NAME=ens33
#网卡的描述一般和DEVICE一样
DEVICE=ens33
#网卡名称 ,必须和ifconfig中看到的一样
ONBOOT=yes
#开机是否自启 开启
IPADDR=192.168.91.10
#地址
NETMASK=255.255.255.0
#子网掩码
GATEWAY=192.168.91.2
#网关
DNS1=8.8.8.8
#将ip地址转换成 域名
永久修改网卡,把上述配置写入文件
vim /etc/sysconfig/network-scripts/ifcfg-ens33
如何更改网卡名称:
临时修改网卡名称
ip link set ens36 down = ifconfig 网卡名 down
#左右两种都可以
ip link set ens36 name abc
#更改网卡ens36为abc
ip link set abc up = ifconfig 网卡名 up
注意!!!更改完成后要去被更改网卡配置里把 NAME ,DEVICE 都更改为 abc (你更改的名字)。
然后重启网卡:systemctl restart network
永久修改网卡名称:
1 . 修改 /etc/default/grub 配置文件,在GRUB_CMDLINE_LINUX这行后面加上 net.ifnames=0。
增加这个参数的作用是禁用操作系统基于硬件生成网卡名称这种规则,来使用传统的网卡名称来命名。
#使用vim工具编辑grub文件内容
vim /etc/default/grub
2 .修改/etc/sysconfig/network-scripts下的网卡配置文件。把 ifcfg-ens33重命名为ifcfg-eth0,另外,还需要将ifcfg-ens33中与ens33有关的信息改为eth0。
#切换到指定目录下
cd /etc/sysconfig/network-scripts
#更改文件名
mv ifcfg-ens33 ifcfg-eth0
#更改 ifcfg-eth0 中的信息
vim ifcfg-eth0
3 .判断操作系统是基于UEFI模式引导的系统还是基于BIOS引导的系统。不同的模式引导的系统使用不同的命令重新读取配置文件。
#输入此命令判断系统是基于哪个模式引导的
#这个命令翻译一下就是:判断/sys/firmware/efi这个文件是否存在,若存在属于UEFI,反之输出BIOS
#基于UEFI模式引导的系统,在/sys/firmware/下会有一个efi文件
[ -d /sys/firmware/efi ] && echo UEFI || echo BIOS
#基于UEFI模式引导的系统
grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg
#基于BIOS模式引导的系统
grub2-mkconfig -o /boot/grub2/grub.cfg
4 . 使用 reboot 重新启动就可以了。
临时修改ip地址:
#先加新IP,再删除旧的IP
[root@centos8 ~]#ip address add 10.0.0.88/24 dev ens33
[root@centos8 ~]#ip address del 10.0.0.8/24 dev ens33
[root@centos8 ~]#ip a
#重启网卡或系统重启这些配置都会失效。
永久修改网卡,写入文件
vim /etc/sysconfig/network-scripts/ifcfg-ens33
红帽修改网络地址
[root@localhost ~]#nmcli con mod ens37 ipv4.addresses 192.168.91.200/24 ipv4.gateway 192.168.91.2 ipv4.dns 8.8.8.8 ipv4.method manual connection.autoconnect yes
[root@localhost ~]#nmcli con reload
[root@localhost ~]#nmcli con up ens37
systemctl restart network
1.2 hostname 改主机名
查看或设置当前主机名
hostname [主机名]
[root@localhost ~]#hostname
localhost.localdomain
#查看当前主机名
[root@localhost ~]#hostname r1
#重启终端即可生效,但是临时生效
通过修改/etc/hostname文件来永久修改主机名
[root@localhost ~]# vi /etc/hostname
www.bdqn.com
#永久生效
通过 hostnamectl 来修改主机名
[root@localhost ~]# hostnamectl set-hostname www.bdqn.com
[root@localhost ~]# bash
[root@www ~]# hostname
www.bdqn.com
#永久生效
1.3 route 路由
查看或设置主机中路由表信息
route [-n]
-n:将路由记录中的地址信息显示为数字形式
[root@www ~]#route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default gateway 0.0.0.0 UG 100 0 0 abc
default gateway 0.0.0.0 UG 101 0 0 ens33
192.168.80.0 0.0.0.0 255.255.255.0 U 100 0 0 abc
192.168.80.0 0.0.0.0 255.255.255.0 U 101 0 0 ens33
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
[root@www ~]#route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.80.2 0.0.0.0 UG 100 0 0 abc
0.0.0.0 192.168.80.2 0.0.0.0 UG 101 0 0 ens33
192.168.80.0 0.0.0.0 255.255.255.0 U 100 0 0 abc
192.168.80.0 0.0.0.0 255.255.255.0 U 101 0 0 ens33
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
#路由表主要构成:
#Destination: 目标网络ID,表示可以到达的目标网络ID,0.0.0.0/0 表示所有未知网络,又称为默认路由,优先级最低
#Genmask:目标网络对应的netmask
#Iface: 到达对应网络,应该从当前主机哪个网卡发送出来
#Gateway: 到达非直连的网络,将数据发送到临近(下一个)路由器的临近本主机的接口的IP地址,如果是直连网络,gateway是0.0.0.0
#Metric: 开销cost,值越小,路由记录的优先级最高
添加 指定网段的路由记录
route add -net 网段地址 gw IP地址
ip地址后面可跟上网卡名称
删除指定网段的路由记录
route del -net 网段地址
向路由表中添加默认的网关记录
route add default gw IP地址
删除路由表中默认的网关记录
route del default gw IP地址
例子:
添加一条去往 10.0.0.0/24 段的路由,通过网关 192.168.80.2 网关转发。
route add -net 10.0.0.0/24 gw 192.168.80.2
删除去往10.0.0.0/24段的路由
route del -net 10.0.0.0/24
添加默认路由
route add -net 0.0.0.0 gw 192.168.80.2
route add default gw 192.168.80.2
删除默认路由
route del -net 0.0.0.0
route del default
这些都是临时添加。重启后消失。
这些都是临时添加。重启后消失。
想要永久添加,需要进入到网卡配置文件中添加。
路由文件的配置
/etc/sysconfig/network-scripts/route-IFACE
#文件名(IFACE)为网卡名,如ens33
两种风格:
1. TARGET via GW #网段地址 via 网关
10.0.0.0/8 via 192.168.80.2
2. 每三行定义一条路由
ADDRESS#=TARGET #网段地址
NETMASK#=mask #子网掩码
GATEWAY#=GW #网关
[root@www ~]#vim /etc/sysconfig/network-scripts/route-ens33
10.0.0.0/8 via 192.168.80.2
reboot 重启下
1.4 netstat 查看网络连接情况
查看网络连接情况 netstat
netstat 选项
服务不能用 ,ftp httpd网页无法访问
-
一般先ping 看能不能通 如果你网络不通 网络调通 防火墙 抓包
-
看看你的服务是否开启 syetemctl status 服务名
-
ss netstat 看看你的 服务端口是否被占用 一个给一个服务 网页 80 你 apache nginx
-
最后看你 服务的配置文件是否正确
netstat
-a:显示主机中所有活动的网络连接信息(包括监听、非监听状态的服务端口)
-n:以数字的形式显示相关的主机地址、端口等信息
-r:显示路由表信息
-l:显示处于监听(Listening)状态的网络连接及端口信息
-t:查看 TCP(Transmission Control Protocol,传输控制协议)相关的信息
-u:显示 UDP(User Datagram Protocol,用户数据报协议)协议相关的信息
-p:显示与网络连接相关联的进程号、进程名称信息(该选项需要 root 权限)
[root@localhost ~]#systemctl start httpd
[root@localhost ~]#netstat -ntap |grep 80
tcp6 0 0 :::80 :::* LISTEN 10379/httpd
[root@localhost ~]#netstat -ntap |grep ":22"
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1057/sshd
tcp 0 0 192.168.91.100:22 192.168.91.1:50728 ESTABLISHED 1707/sshd: root@pts
tcp 0 52 192.168.91.100:22 192.168.91.1:60503 ESTABLISHED 10224/sshd: root@pt
tcp 0 0 192.168.91.100:22 192.168.91.1:60708 ESTABLISHED 9609
1.5ss(socket statistics)查看网络连接情况
格式
ss [选项]
ss 命令:也可以查看网络连接情况,主要用于获取 socket 统计信息,它可以显示和 netstat 命令类似的输出内容。 但 ss 的优势在于它能够显示更多更详细的有关 TCP 和UDP连接状态的信息,而且比 netstat 更快速更高效 当服务器的socket连接数量变得非常大时,无论是使用netstat命令还是直接cat /proc/net/tcp,执行速度都会很慢。 ss快的秘诀在于,它利用到了TCP协议栈中tcp_diag。tcp_diag是一个用于分析统计的模块,可以获得Linux 内核中第一手的信息,这就确保了ss的快捷高效 ss命令是Linux CentOS 7中iproute软件包的一部分,默认已经安装。
网络连接状态 ss 或 netstat
ss 更靠近内核 快
netstat 他要去遍历文件查看状态 慢
#选项:
-t: tcp协议相关
-u: udp协议相关
-w: 裸套接字相关
-x:unix sock相关
-l: listen状态的连接
-a: 所有
-n: 数字格式
-p: 相关的程序及PID
-e: 扩展的信息
-m:内存用量
-o:计时器信息
-r: --resolve 把 IP 解释为域名,把端口号解释为协议名称。
#可以使用time命令来比较
[root@kgc ~]# time netstat -atn
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN
tcp 0 0 192.168.122.1:53 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:6010 0.0.0.0:* LISTEN
tcp 0 0 192.168.91.101:43374 192.168.91.100:514 ESTABLISHED
tcp 0 52 192.168.91.101:22 192.168.91.1:53036 ESTABLISHED
tcp6 0 0 :::111 :::* LISTEN
tcp6 0 0 :::22 :::* LISTEN
tcp6 0 0 ::1:631 :::* LISTEN
tcp6 0 0 ::1:25 :::* LISTEN
tcp6 0 0 ::1:6010 :::* LISTEN
real 0m0.007s
user 0m0.003s
sys 0m0.004s
[root@kgc ~]# time ss -atn
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:111 *:*
LISTEN 0 5 192.168.122.1:53 *:*
LISTEN 0 128 *:22 *:*
LISTEN 0 128 127.0.0.1:631 *:*
LISTEN 0 100 127.0.0.1:25 *:*
LISTEN 0 128 127.0.0.1:6010 *:*
ESTAB 0 0 192.168.91.101:43374 192.168.91.100:514
ESTAB 0 0 192.168.91.101:22 192.168.91.1:53036
LISTEN 0 128 :::111 :::*
LISTEN 0 128 :::22 :::*
LISTEN 0 128 ::1:631 :::*
LISTEN 0 100 ::1:25 :::*
LISTEN 0 128 ::1:6010 :::*
real 0m0.017s
user 0m0.000s
sys 0m0.004s
#因为虚拟机网络连接少,netmask会出现比ss 快的情况。
1.6 ping 测试网络连通性
测试网络连通性 ICMP 协议
格式:
ping [选项] 目标主机
#-c 选项是发送多少个包
[root@localhost ~]#ping -c 3 192.168.91.1
PING 192.168.91.1 (192.168.91.1) 56(84) bytes of data.
64 bytes from 192.168.91.1: icmp_seq=1 ttl=128 time=0.311 ms
64 bytes from 192.168.91.1: icmp_seq=2 ttl=128 time=0.671 ms
64 bytes from 192.168.91.1: icmp_seq=3 ttl=128 time=0.444 ms
--- 192.168.91.1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2005ms
rtt min/avg/max/mdev = 0.311/0.475/0.671/0.149 ms
# -w 表示等待10秒
[root@localhost ~]#ping 192.168.91.3 -w 10
PING 192.168.91.3 (192.168.91.3) 56(84) bytes of data.
From 192.168.91.100 icmp_seq=1 Destination Host Unreachable
From 192.168.91.100 icmp_seq=2 Destination Host Unreachable
From 192.168.91.100 icmp_seq=3 Destination Host Unreachable
From 192.168.91.100 icmp_seq=4 Destination Host Unreachable
--- 192.168.91.3 ping statistics ---
4 packets transmitted, 0 received, +4 errors, 100% packet loss, time 3002ms
pipe 4
-t 无终止ping win linux 自带 -t
fping
yum -y install fping
1.7 traceroute
路由追踪
格式:
traceroute IP地址
[root@www ~]#traceroute 192.168.80.7
traceroute to 192.168.80.7 (192.168.80.7), 30 hops max, 60 byte packets
1 www.bdqn.com (192.168.80.7) 0.032 ms 0.010 ms 0.013 ms
#到达 192.168.80.7 经过了 1 台路由器
1.8 nslookup 域名解析
域名解析 nslookup
验证dns 服务器是否可以解析域名
格式:
nslookup 域名
[root@www ~]#nslookup www.baidu.com
Server: 8.8.8.8
Address: 8.8.8.8#53
Non-authoritative answer:
www.baidu.com canonical name = www.a.shifen.com.
Name: www.a.shifen.com
Address: 180.101.50.242
Name: www.a.shifen.com
Address: 180.101.50.188
dig 可以显示出更多详细信息
1.怎么验证dns 服务器是否可以解析域名
nslookup
dig
host
ping
2.域名解析文件
/etc/hosts 优先级大于 域名服务器
使用 vim /etc/hosts
所以这个域名解析文件里配置的域名优先级大于 域名服务器。
hosts文件和DNS服务器的比较
-
默认情况下,系统首先从 hosts 文件查找解析记录
-
hosts 文件只对当前的主机有效
-
hosts 文件可减少 DNS 查询过程,从而加快访问速度
3.查看服务器上的 域名是否生效
cat /etc/resolv.conf
1.10 scp
远程同步
[root@kgc opt]#scp /opt/passwd root@192.168.80.10:/opt/passwd
命令字 本地文件地址 对方用户名@地址冒号对面地址
[root@kgc opt]#scp root@192.168.91.101:/opt/passwd /opt/
命令字 对方用户名@地址冒号对面地址 本地地址
1.11 ethtool 网卡信息 网卡闪烁
查看 网卡信息
[root@localhost ~]#ethtool -i ens33
driver: e1000
version: 7.3.21-k8-NAPI
firmware-version:
expansion-rom-version:
bus-info: 0000:02:01.0
supports-statistics: yes
supports-test: yes
supports-eeprom-access: yes
supports-register-dump: yes
supports-priv-flags: no
[root@localhost ~]#ethtool -p ens33
#让ens33 网卡快速闪烁
1.12多网卡绑定 bond
将多块网卡绑定同一IP地址对外提供服务,可以实现高可用或者负载均衡。直接给两块网卡设置同一IP地址是不可以的。通过 bonding,虚拟一块网卡对外提供连接,物理网卡的被修改为相同的MAC地址
Bonding 聚合链路工作模式
-
mod=0 ,即:(balance-rr) Round-robin policy(轮询)聚合口数据报文按包轮询从物理接口转发。负载均衡—所有链路处于负载均衡状态,轮询方式往每条链路发送报文这模式的特点增加了带宽,同时支持容错能力,当有链路出问题,会把流量切换到正常的链路上。性能问题—一个连接或者会话的数据包如果从不同的接口发出的话,中途再经过不同的链路,在客户端很有可能会出现数据包无序到达的问题,而无序到达的数据包需要重新要求被发送,这样网络的吞吐量就会下降。Bond0在大压力的网络传输下,性能增长的并不是很理想。需要交换机进行端口绑定。
-
mod=1,即: (active-backup) Active-backup policy(主-备份策略)只有Active状态的物理接口才转发数据报文。容错能力—只有一个slave是激活的(active)。也就是说同一时刻只有一个网卡处于工作状态,其他的slave都处于备份状态,只有在当前激活的slave故障后才有可能会变为激活的(active)。无负载均衡—此算法的优点是可以提供高网络连接的可用性,但是它的资源利用率较低,只有一个接口处于工作状态,在有 N 个网络接口的情况下,资源利用率为1/N。
-
mod=2,即:(balance-xor) XOR policy(平衡策略)聚合口数据报文按源目MAC、源目IP、源目端口进行异或HASH运算得到一个值,根据该值查找接口转发数据报文负载均衡—基于指定的传输HASH策略传输数据包。容错能力—这模式的特点增加了带宽,同时支持容错能力,当有链路出问题,会把流量切换到正常的链路上。性能问题—该模式将限定流量,以保证到达特定对端的流量总是从同一个接口上发出。既然目的地是通过MAC地址来决定的,因此该模式在“本地”网络配置下可以工作得很好。如果所有流量是通过单个路由器,由于只有一个网关,源和目标mac都固定了,那么这个算法算出的线路就一直是同一条,那么这种模式就没有多少意义了。需要交换机配置为port channel
-
mod=3,即:broadcast(广播策略)这种模式的特点是一个报文会复制两份往bond下的两个接口分别发送出去,当有对端交换机失效,感觉不到任何downtime,但此法过于浪费资源;不过这种模式有很好的容错机制。此模式适用于金融行业,因为他们需要高可靠性的网络,不允许出现任何问题。
-
mod=4,即:(802.3ad) IEEE 802.3ad Dynamic link aggregation(IEEE 802.3ad 动态链接聚合)在动态聚合模式下,聚合组内的成员端口上均启用LACP(链路汇聚控制协议)协议,其端口状态通过该协议自动进行维护。负载均衡—基于指定的传输HASH策略传输数据包。默认算法与blance-xor一样。容错能力—这模式的特点增加了带宽,同时支持容错能力,当有链路出问题,会把流量切换到正常的链路上。对比blance-xor,这种模式定期发送LACPDU报文维护链路聚合状态,保证链路质量。需要交换机支持LACP协议
-
mod=5,即:(balance-tlb) Adaptive transmit load balancing(适配器传输负载均衡)在每个物理接口上根据当前的负载(根据速度计算)分配外出流量。如果正在接收数据的物理接口口出故障了,另一个物理接口接管该故障物理口的MAC地址。需要ethtool支持获取每个slave的速率
-
mod=6,即:(balance-alb) Adaptive load balancing(适配器适应性负载均衡)该模式包含了balance-tlb模式,同时加上针对IPV4流量的接收负载均衡,而且不需要任何switch(交换机)的支持。接收负载均衡是通过ARP协商实现的。bonding驱动截获本机发送的ARP应答,并把源硬件地址改写为bond中某个物理接口的唯一硬件地址,从而使得不同的对端使用不同的硬件地址进行通信。mod=6与mod=0的区别:mod=6,先把eth0流量占满,再占eth1,….ethX;而mod=0的话,会发现2个口的流量都很稳定,基本一样的带宽。而mod=6,会发现第一个口流量很高,第2个口只占了小部分流量
mode=0(balance-rr)
表示负载分担round-robin,并且是轮询的方式比如第一个包走eth0,第二个包走eth1,直到数据包发送完毕。
优点:流量提高一倍
缺点:需要接入交换机做端口聚合,否则可能无法使用
mode=1(active-backup)
表示主备模式,即同时只有1块网卡在工作。
优点:冗余性高
缺点:链路利用率低,两块网卡只有1块在工作
常用的模式为 0,1,3,6
mode 1、5、6 不需要交换机设置
mode 0、2、3、4需要交换机设置
active-backup、balance-tlb 和 balance-alb 模式不需要交换机的任何特殊配置。其他绑定模式需
要配置交换机以便整合链接。如:Cisco 交换机需要在模式 0、2 和 3 中使用 EtherChannel,但在模
式4中需要 LACP和 EtherChannel
实际操作
创建bonding设备的配置文件
vim /etc/sysconfig/network-scripts/ifcfg-bond0
vim ifcfg-bond0
NAME=bond0
TYPE=bond
DEVICE=bond0
BOOTPROTO=none
IPADDR=192.168.80.66
NETMASK=255.255.255.0
GATEWAY=192.168.91.2
BONDING_OPTS="mode=1 miimon=100 fail_over_mac=1"
#mode1 :主备切换
#miimon=100: 监视网络链接的频度,单位是毫秒
#fail_over_mac=1: 这个bond0获取mac地址有两种方式,一种是从第一个活跃网卡中获取mac地址,然后其余的SLAVE网卡的mac地址都使用该mac地址;另一种是使用fail_over_mac参数,是bond0使用当前活跃网卡的mac地址,mac地址或者活跃网卡的转换而变。
vim /etc/sysconfig/network-scripts/ifcfg-ens33
BOOTPROTO=static
NAME=ens33
DEVICE=ens33
ONBOOT=yes
MASTER=bond0
SLAVE=yes
vim /etc/sysconfig/network-scripts/ifcfg-ens36
NAME=ens36
DEVICE=bond0
BOOTPROTO=none
MASTER=bond0
SLAVE=yes
PNBOOT=yes
[root@localhost ~]#cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)
Bonding Mode: fault-tolerance (active-backup) (fail_over_mac active)
Primary Slave: None
Currently Active Slave: ens33
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0
Slave Interface: ens33
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:9c:b6:eb
Slave queue ID: 0
查看bond0状态:
/proc/net/bonding/bond0
删除bond0
ifconfig bond0 down
rmmod bonding
nmcli实现bonding
#创建新连接static ,指定静态IP,不自动连接
nmcti con add con-name static ifname eth0 autoconnect no type Ethernet
ipv4.addresses 172.25.X.10/24 ipv4.gateway 172.25.X.254
nmcli connection modify ens33 ipv4.addresses 192.168.91.100/2
nmcli connection up ens33
#添加bonding接口
nmcli con add type bond con-name mybond0 ifname bond0 mode active-backup ipv4.method manual ipv4.addresses 192.168.91.123/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
1.13 tcpdump
网络数据包截获分析工具。支持针对网络层、协议、主机、网络或端口的过滤。并提供and、or、not等逻辑语句帮助去除无用的信息。
语法:
tcpdump [-adeflnNOpqStvx][-c<数据包数目>][-dd][-ddd][-F<表达文件>][-i<网络界面>][-r<
数据包文件>][-s<数据包大小>][-tt][-T<数据包类型>][-vv][-w<数据包文件>][输出数据栏位]
参数说明:
-a 尝试将网络和广播地址转换成名称。
-c<数据包数目> 收到指定的数据包数目后,就停止进行倾倒操作。
-d 把编译过的数据包编码转换成可阅读的格式,并倾倒到标准输出。
-dd 把编译过的数据包编码转换成C语言的格式,并倾倒到标准输出。
-ddd 把编译过的数据包编码转换成十进制数字的格式,并倾倒到标准输出。
-e 在每列倾倒资料上显示连接层级的文件头。
-f 用数字显示网际网络地址。
-F<表达文件> 指定内含表达方式的文件。
-i<网络接口> 使用指定的网络截面送出数据包。
-l 使用标准输出列的缓冲区。
-n 不把主机的网络地址转换成名字。
-N 不列出域名。
-O 不将数据包编码最佳化。
-p 不让网络界面进入混杂模式。
-q 快速输出,仅列出少数的传输协议信息。
-r<数据包文件> 从指定的文件读取数据包数据。
-s<数据包大小> 设置每个数据包的大小。
-S 用绝对而非相对数值列出TCP关联数。
-t 在每列倾倒资料上不显示时间戳记。
-tt 在每列倾倒资料上显示未经格式化的时间戳记。
-T<数据包类型> 强制将表达方式所指定的数据包转译成设置的数据包类型。
-v 详细显示指令执行过程。
-vv 更详细显示指令执行过程。
-x 用十六进制字码列出数据包资料。
-w<数据包文件> 把数据包数据写入指定的文件。
输出格式讲解:
第一列:时分毫秒 11:53:55.288476
第二例:网络协议ip
第三列:发送方IP地址+端口号 ip地址:192.168.91.1 端口号:47496 >表示数据流向
第四列:主机名协议 主机名:localhost.localdomain 协议:ssh
第五列: seq号 ack号 win窗口长度 tcp的标志位
实际操作:host
[root@localhost ~]#tcpdump -D #查看网卡
1.virbr0
2.bond0
3.nflog (Linux netfilter log (NFLOG) interface)
4.nfqueue (Linux netfilter queue (NFQUEUE) interface)
5.usbmon1 (USB bus number 1)
6.usbmon2 (USB bus number 2)
7.ens33
8.ens36
9.any (Pseudo-device that captures on all interfaces)
10.lo [Loopback]
tcpdump
#不指定任何参数,监听第一块网卡上经过的数据包。主机上可能有不止一块网卡,所以经常需要指定网卡。
tcpdump -i ens33
#指定查看ens33 网卡
tcpdump host 192.168.80.66 -i ens33
#监听特定主机,监听主机 192.168.80.66 的通信包,
注意:出、入的包都会被监听。
特定来源、目标地址的通信
tcpdump src host hostname
tcpdump -i ens33 src 192.168.91.101
#特定来源(源地址)
tcpdump dst host hostname
tcpdump -i ens33 dst 192.168.91.101
#特定目标地址 (目标地址)
tcpdump host hostname
#如果不指定src跟dst,那么来源或者目标是hostname的通信都会被监听
#面试题
我想截获 当前主机(192.168.80.66)ping 192.168.80.10 的包, 网卡名称为 ens33 ,且我不想看主机名(域名),我想看主机的ip地址。
tcpdump -i ens33 icmp and src host 192.168.80.66 and dst host 192.168.80.10 -n
[root@localhost ~]#tcpdump ip host 192.168.80.66 and 192.168.80.10 -i ens33
#只抓取 特定主机之间的数据包
#特定端口
tcpdump port 3000
tcpdump tcp port 22 and src host 10.0.0.100 -i ens33
基于端口过滤
port 端口号 tcpdump port 80
[root@localhost ~]#tcpdump -i ens33 port 80
或者
[root@localhost ~]#tcpdump -i ens33 port 80 or port 22
#80 和 22 端口
[root@localhost ~]#tcpdump -i ens33 src port 80 or port 22
[root@localhost ~]#tcpdump -i ens33 dst port 80 or port 22
范围的端口
[root@localhost ~]#tcpdump -i ens33 portrange 80-8080
[root@localhost ~]#tcpdump -i ens33 src portrange 80-8080
[root@localhost ~]#tcpdump -i ens33 dst portrange 80-8080
基于协议
protocal
协议种类:ip arp icmp tcp udp
应用层协议不可以直接抓取
[root@localhost ~]#ping www.baidu.com
[root@localhost ~]#tcpdump -i ens33 icmp
常见参数
-i 指定监听网络监听端口
[root@localhost ~]#tcpdump -i ens33
[root@localhost ~]#tcpdump -i any
-w 将捕获信息保存到文件中,且不分析核打印在屏幕上
[root@localhost ~]#tcpdump -i any -w test.cap
#将文件后缀改成cap 或者pcap形式可以直接用wireshark打开
-r 读取上面存储的文件
[root@localhost ~]#tcpdump -r test
reading from file test, link-type LINUX_SLL (Linux cooked)
01:58:09.960457 IP localhost.localdomain.ssh > 192.168.91.1.16603: Flags [P.], seq 993857661:993857809, ack 1860109721, win 274, length 148
01:58:09.960854 IP 192.168.91.1.16603 > localhost.localdomain.ssh: Flags [.], ack 148, win 4101, length 0
01:58:20.585572 IP 192.168.91.1.16603 > localhost.localdomain.ssh: Flags [P.], seq 1:53, ack 148, win 4101, length 52
-n 不把ip转换成域名,直接显示ip
[root@localhost ~]#tcpdump -i ens33
02:03:27.480712 IP 192.168.91.1.16603 > localhost.localdomain.ssh: Flags [P.], seq 53:105, ack 168336, win 4100, length 52
[root@localhost ~]#tcpdump -i ens33 -n
#主机名变成了IP地址
02:03:57.921893 IP 192.168.91.1.16603 > 192.168.91.100.ssh: Flags [P.], seq 1:53, ack 150592, win 4106, length 52
-nn 直接显示ip和端口号
[root@localhost ~]#tcpdump -i ens33
02:03:27.480712 IP 192.168.91.1.16603 > localhost.localdomain.ssh: Flags [P.], seq 53:105, ack 168336, win 4100, length 52
[root@localhost ~]#tcpdump -i ens33 -n
#ssh 变成了端口号
02:03:57.921893 IP 192.168.91.1.16603 > 192.168.91.100.22: Flags [P.], seq 1:53, ack 150592, win 4106, length 52
-t 在每行的输出中,不显示时间
[root@localhost ~]#tcpdump -i ens33 -t
-tt 输出一个时间戳
时间戳(timestamp),通常是一个字符序列,唯一地标识某一刻的时间。
[root@localhost ~]#tcpdump -i ens33 -tt
-ttt 每行之间的时间间隔
[root@localhost ~]#tcpdump -i ens33 -ttt
-tttt 详细日期
[root@localhost ~]#tcpdump -i ens33 -tttt
-v 产生详细的输出
[root@localhost ~]#tcpdump -i ens33 -v
[root@localhost ~]#tcpdump -i ens33 -vv
[root@localhost ~]#tcpdump -i ens33 -vvv
#v越多 信息越详细
-c 指定收取数据包的数量
[root@localhost ~]#tcpdump -i ens33 -c 20
#指定抓取 20 个包后退出
-C 需要与w 配合使用 指定单个文件的大小 百万字节
[root@localhost data]#tcpdump -i ens33 -C 1 -w test
tcpdump: listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes
[root@localhost data]#yum install epel-release.noarch -y
# 制造流量 模拟环境
-Q 过滤数据包的方向 in out inout
[root@localhost data]#tcpdump -i ens33 -Q in
#只有in方向
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens33, link-type EN10MB (Ethernet), capture size 262144 bytes
02:24:55.547329 IP 192.168.91.1.16603 > localhost.localdomain.ssh: Flags [.], ack 1002982309, win 4105, length 0
02:24:55.591780 IP dns.google.domain > localhost.localdomain.52360: 33034 NXDomain 0/0/0 (45)
02:24:55.636957 IP dns.google.domain > localhost.localdomain.50352: 58856 NXDomain 0/0/0 (43)
02:24:55.678358 IP 192.168.91.1.16603 > localhost.localdomain.ssh: Flags [.], ack 165, win 4104, length 0
02:24:55.682818 IP dns.google.domain > localhost.localdomain.60698: 16333 1/0/0 PTR dns.google. (62)
02:24:55.723179 IP 192.168.91.1.16603 > localhost.localdomain.ssh: Flags [.], ack 617, win 4102, length 0
[root@localhost data]#tcpdump -i ens33 -Q out
#只有out方向
-q 简洁的输出
[root@localhost data]#tcpdump -i ens33 -q
-D 显示所有可用的列表
[root@localhost data]#tcpdump -D
#回环 usb 等接口
1.virbr0
2.nflog (Linux netfilter log (NFLOG) interface)
3.nfqueue (Linux netfilter queue (NFQUEUE) interface)
4.usbmon1 (USB bus number 1)
5.usbmon2 (USB bus number 2)
6.ens33
7.any (Pseudo-device that captures on all interfaces)
8.lo [Loopback]
-s 指定数据包的大小
[root@localhost data]#tcpdump -i ens33 -s 50
02:39:09.016238 IP localhost.localdomain.ssh > 192.168.91.1.16603: [|tcp]
02:39:09.018305 IP 192.168.91.1.16603 > localhost.localdomain.ssh: [|tcp]
02:39:09.018337 IP localhost.localdomain.ssh > 192.168.91.1.16603: [|tcp]
02:39:09.018715 IP 192.168.91.1.16603 > localhost.localdomain.ssh: [|tcp]
[root@localhost data]#tcpdump -i ens33 -s 50 tcp port 53
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens33, link-type EN10MB (Ethernet), capture size 50 bytes
#大小为50
#默认为262144
实际例子:
#查看网卡
[root@centos8 ~]#tcpdump -D
1.eth0 [Up, Running]
2.lo [Up, Running, Loopback]
3.any (Pseudo-device that captures on all interfaces) [Up, Running]
4.bluetooth-monitor (Bluetooth Linux Monitor) [none]
5.nflog (Linux netfilter log (NFLOG) interface) [none]
6.nfqueue (Linux netfilter queue (NFQUEUE) interface) [none]
7.usbmon0 (All USB buses) [none]
8.usbmon1 (USB bus number 1)
9.usbmon2 (USB bus number 2)
#不指定任何参数,监听第一块网卡上经过的数据包。主机上可能有不止一块网卡,所以经常需要指定网卡。
tcpdump
#监听特定网卡
tcpdump -i en0
#监听特定主机,监听主机10.0.0.100 的通信包,注意:出、入的包都会被监听。
tcpdump host 10.0.0.100
#特定来源、目标地址的通信
#特定来源
tcpdump src host hostname
#特定目标地址
tcpdump dst host hostname
#如果不指定src跟dst,那么来源或者目标是hostname的通信都会被监听
tcpdump host hostname
#面试题
[root@centos8 ~]#tcpdump -i eth0 -nn icmp and src host 10.0.0.6 and dst host 10.0.0.7
#特定端口
tcpdump port 3000
#监听TCP/UDP,服务器上不同服务分别用了TCP、UDP作为传输层,假如只想监听TCP的数据包
tcpdump tcp
#来源主机+端口+TCP,监听来自主机10.0.0.100在端口22上的TCP数据包
tcpdump tcp port 22 and src host 10.0.0.100
#监听特定主机之间的通信
tcpdump ip host 10.0.0.101 and 10.0.0.102
#10.0.0.101和除了10.0.0.1之外的主机之间的通信
tcpdump ip host 10.0.0.101 and ! 10.0.0.1
#详细示例
tcpdump tcp -i eth1 -t -s 0 -c 100 and dst port ! 22 and src net 192.168.1.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 192.168.1.0/24 : 数据包的源网络地址为192.168.1.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
二、DHCP
主机获取网络配置可以通过两种方式:
-
指定
-
动态获取
DHCP: Dynamic Host Configuration Protocol,动态主机配置协议
UDP协议,C/S模式,dhcp server: 67/udp,dhcpv4 client :68/udp, dhcpv6 client: 546/udp 主要用途:
-
用于内部网络和网络服务供应商自动分配IP地址给用户
-
用于内部网络管理员作为对所有电脑作集中管理的手段
-
自动化安装系统
当有多个服务器,已客户机先收到谁的 offer报文为准
1.首先客户机加入到当前网络中是没有地址的,他会发送一个dhcp discover 广播报文 来寻找dhcp服务器
2.服务器接收到discover 报文 会回复offer (ip地址(合法地址地址中挑出),子网掩码,dns地址,网关等信息)
3.客户机收到 offer 以后 会发送一个 request 的报文 告诉服务器 我收到了你的 offer,并且我很满意你的地址,我就使用它了,不要再分配给别人了
4.当服务器收到 request 的报文 以后 好了解 会发送一个ack 报文确认消息告诉客户端 你放心使用,不会再给别人分配你的ip地址
DHCP共有八种报文
-
DHCP DISCOVER:客户端到服务器
-
DHCP OFFER :服务器到客户端
-
DHCP REQUEST:客户端到服务器
-
DHCPACK :服务器到客户端
-
.DHCPNAK:服务器到客户端通知用户无法分配合适的IP地址
-
DHCP DECLINE :客户端到服务器,指示地址已被使用
-
DHCP RELEASE:客户端到服务器,放弃网络地地口取消剩余的租约时间
-
DHCP INFORM:客户端到服务器,客户端如果需要从DHCP服务器端获取更为单ffl的配置信息,则 发送Inform报文向服务器进行请求,极少用到
配置文件所在位置: /etc/dhcp/dhcpd.conf
配置文件的相关信息。
#设置全局配置参数
default-lease-time 21600; #默认租约为6小时,单位为秒
max-lease-time 43200; #最大租约为12小时,单位为秒
option domain-name "benet.com"; #指定默认域名
option domain-name-servers 202.106.0.20,202.106.148.1; #指定DNS服务器地址
ddns-update-style none; # 禁用DNS动态更新加快
#subnet网段声明(作用于整个子网段,部分配置参数优先级高于全局配置参数)
subnet 192.168.80.0 netmask 255.255.255.0 { #声明要分配的网段地址
range 192.168.80.10 192.168.80.20; #设置地址池
option routers 192.168.80.254; #指定默认网关地址
}
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.100 192.168.1.200;
option routers 192.168.1.254;
}
subnet 192.168.2.0 netmask 255.255.255.0 {
range 192.168.2.20 192.168.2.30;
option routers 192.168.2.254;
}
#host主机声明( 给单机分配固定的IP地址)
host fantasia { #指定需要分配固定IP地址的客户机名称(不用更改)
hardware ethernet 00:c0:c3:22:46:81; #指定该主机的MAC地址
fixed-address 192.168.80.156; #指定保留给该主机的IP地址
}
配置DHCP 实验
一定要关闭防火墙。
方法一、
systemctl stop firewalld
setenforce 0
方法二、
systemctl disable --now firewalld #防火墙开机不自启
vim /etc/selinux/config
把 SELINUX=enforcing 改为 SELINUX=disabled
过程
[root@localhost ~]#yum install dhcp -y
#安装dhcp服务
[root@localhost ~]#rpm -qc dhcp
#查看配置文件
/etc/dhcp/dhcpd.conf
/etc/dhcp/dhcpd6.conf
/etc/openldap/schema/dhcp.schema
/etc/sysconfig/dhcpd
/var/lib/dhcpd/dhcpd.leases
/var/lib/dhcpd/dhcpd6.leases
[root@localhost ~]#vim /etc/dhcp/dhcpd.conf
#空的
#
# DHCP Server Configuration file.
# see /usr/share/doc/dhcp*/dhcpd.conf.example
# 在此目录下有配置模板
# see dhcpd.conf(5) man page
#
[root@localhost ~]#cd /usr/share/doc
[root@localhost doc]#find -name 'dhcp*'
./dhcp-common-4.2.5
./dhcp-4.2.5
./dhcp-4.2.5/dhcpd.conf.example #就是这个文件。
./dhcp-4.2.5/dhcpd6.conf.example
./dhcp-4.2.5/ldap/dhcp.schema
./dhcp-4.2.5/ldap/dhcpd-conf-to-ldap
[root@localhost ~]#cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
cp:是否覆盖"/etc/dhcp/dhcpd.conf"? y
#将文件拷贝过来覆盖
[root@localhost dhcp]#vim /etc/dhcp/dhcpd.conf
#修改配置文件
#第8行 修改默认的全局dns地址
8 option domain-name-servers 8.8.8.8;
#直接修改27 行
27 subnet 192.168.100.0 netmask 255.255.255.0 {
28 range 192.168.100.128 192.168.100.200;
29 option routers 192.168.100.1;
30 option domain-name-servers 114.114.114.114;
31 }
#验证区域与全局优先级
[root@localhost dhcp]#vim dhcpd.conf
#修改配置文件
#第8行 修改默认的全局dns地址
8 option domain-name-servers 8.8.8.8;
#直接修改27 行
27 subnet 192.168.91.0 netmask 255.255.255.0 {
28 range 192.168.91.128 192.168.91.200;
29 option routers 192.168.91.2;
30 option domain-name-servers 114.114.114.114;
31 }
如何查看是否配置成功?
windows 中查看:
也可以 进入到命令提示符 使用
ipconfig 查看网卡信息
ipcongfig /release 释放地址
ipcongfig /renew 重新获取地址
ipconfig /all 全部信息
linux 中查看:
注意!!!服务端 不要改成 dhcp 。使用另一台虚拟机查看。
vim /etc/sysconfig/netwprk-scripts/ifcfg-ens33
BOOTPROTO =dhcp #改为动态获取
并且 把ip配置全部删除,或注释
systemctl restart network
#重启网卡
ip a #查看网卡信息
时间同步
[root@localhost ~]#date -s '1 year'
2023年 12月 14日 星期四 12:02:02 CST
[root@localhost ~]#ntpdate ntp.aliyun.com
# 阿里云ntp同步
14 Dec 12:02:39 ntpdate[16778]: step time server 203.107.6.88 offset -31536000.001557 sec
chrony软件
[root@localhost ~]#yum install chrony.x86_64 -y
[root@localhost ~]#vim /etc/chrony.conf
server ntp.aliyun.com iburst
server ntp1.aliyun.com iburst
server ntp2.aliyun.com iburst
[root@localhost ~]#chronyc sources -v
210 Number of sources = 1
.-- Source mode '^' = server, '=' = peer, '#' = local clock.
/ .- Source state '*' = current synced, '+' = combined , '-' = not combined,
| / '?' = unreachable, 'x' = time may be in error, '~' = time too variable.
|| .- xxxx [ yyyy ] +/- zzzz
|| Reachability register (octal) -. | xxxx = adjusted offset,
|| Log2(Polling interval) --. | | yyyy = measured offset,
|| \ | | zzzz = estimated error.
|| | | \
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^? 203.107.6.88 2 6 37 9 +8760h[ +8760h] +/- 22ms
[root@localhost ~]#systemctl restart chronyd
[root@localhost ~]#vim /etc/chrony.conf
作为服务端
# Allow NTP client access from local network.
#allow 192.168.0.0/16 允许同步的网段 0.0.0.0/0
allow 192.168.91.0/24
# Serve time even if not synchronized to a time source.
local stratum 10
#断网也可以同步
客户端同步
[root@node2 tftpboot]#ntpdate 192.168.91.100
#手动同步
[root@localhost ~]#vim /etc/chrony.conf
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
server 192.168.91.100 iburst