Linux网络命令与DHCP
LINUX 网络
将Linux主机接入到网络,需要配置网络相关设置
一般包括如下内容:
- 主机名
- IP/netmask
- 路由:默认网关
- DNS服务器
- 主DNS服务器
- 次DNS服务器
- 第三个DNS服务器
1. 网络配置命令
1.1 ifconfig
来自于net-tools包
[root@localhost ~]#rpm -qi net-tools
Name : net-tools
Version : 2.0
Release : 0.22.20131004git.el7
Architecture: x86_64
Install Date: 2021年08月06日 星期五 20时58分47秒
Group : System Environment/Base
Size : 938986
License : GPLv2+
Signature : RSA/SHA256, 2017年08月11日 星期五 02时30分02秒, Key ID 24c6a8a7f4a80eb5
Source RPM : net-tools-2.0-0.22.20131004git.el7.src.rpm
Build Date : 2017年08月03日 星期四 17时17分34秒
Build Host : c1bm.rdu2.centos.org
Relocations : (not relocatable)
Packager : CentOS BuildSystem <http://bugs.centos.org>
Vendor : CentOS
URL : http://sourceforge.net/projects/net-tools/
Summary : Basic networking tools
Description :
The net-tools package contains basic networking tools,
including ifconfig, netstat, route, and others.
Most of them are obsolete. For replacement check iproute package.
基础用法
在不带任何选项和参数执行 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 -a #表示显示所有网卡包括没有启动的网卡
ifconfig 网卡名称 [up|down] #表示开启或关闭网卡
ifconfig 网络接口 ip地址 [netmask 子网掩码]
ifconfig 网络接口 ip地址[/子网掩码长度]
ifconfig ens33:0 地址 #表示虚拟网卡
[root@localhost ~]#ifconfig ens37 down
#关闭
[root@localhost ~]#ifconfig ens37 up
#开启
[root@localhost ~]#ifconfig ens37:0 192.168.91.200
#设置临时虚拟网卡
[root@localhost ~]#ifconfig ens37:0
ens37:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.91.200 netmask 255.255.255.0 broadcast 192.168.91.255
ether 00:0c:29:fe:e5:c9 txqueuelen 1000 (Ethernet)
[root@localhost ~]#ifconfig ens37:0 down
#关闭虚拟网卡
[root@localhost ~]#ifconfig -a
#查看所有网卡包括为开启的
[root@localhost ~]#ifconfig -s
#网络通讯情况
Iface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
ens33 1500 7491 0 0 0 2617 0 0 0 BMRU
lo 65536 86 0 0 0 86 0 0 0 LRU
virbr0 1500 0 0 0 0 0 0 0 0 BMU
/etc/sysconfig/network-scripts
TYPE=Ethernet
#接口类型
BOOTPROTO=static
#地址获取方式 手动配置 dhcp 动态获取
NAME=ens37
#网卡名称
DEVICE=ens37
#网卡
ONBOOT=yes
#开机是否自启 开启
IPADDR=192.168.91.10
#地址
NETMASK=255.255.255.0
#子网掩码
GATEWAY=192.168.91.2
#网关
DNS1=8.8.8.8
#将ip地址转换成 域名
ip a
#先加新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
1.2 hostname
查看或设置当前主机名
hostname [主机名]
[root@localhost ~]#hostname
localhost.localdomain
#临时生效
通过修改/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@localhost ~]#route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default gateway 0.0.0.0 UG 100 0 0 ens33
default gateway 0.0.0.0 UG 101 0 0 ens37
192.168.91.0 0.0.0.0 255.255.255.0 U 0 0 0 ens37
192.168.91.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33
192.168.91.0 0.0.0.0 255.255.255.0 U 101 0 0 ens37
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
[root@localhost ~]#route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.91.2 0.0.0.0 UG 100 0 0 ens33
0.0.0.0 192.168.91.2 0.0.0.0 UG 101 0 0 ens37
192.168.91.0 0.0.0.0 255.255.255.0 U 0 0 0 ens37
192.168.91.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33
192.168.91.0 0.0.0.0 255.255.255.0 U 101 0 0 ens37
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地址
删除指定网段的路由记录
route del -net 网段地址
向路由表中添加默认网关记录
route add default gw IP地址
删除路由表中默认的网关记录
route del default gw IP地址
[root@localhost ~]#route add -net 192.168.100.0/24 gw 192.168.91.2 #给192.168.100.0/24段添加静态路由 [root@localhost ~]#route -n | grep 192.168.100.0 192.168.100.0 192.168.91.2 255.255.255.0 UG 0 0 0 ens33 [root@localhost ~]#route del -net 192.168.100.0/24 #删除添加路由 [root@localhost ~]#route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.91.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33 192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0 [root@localhost ~]#route del -net 192.168.100.0/24 #删除默认路由 [root@localhost ~]#route -n #查看 Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.91.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33 192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0 [root@localhost ~]#route add default gw 192.168.91.2 #重新添加路由 [root@localhost ~]#systemctl restart network #需要重启服务后才能看到 [root@localhost ~]#route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.91.2 0.0.0.0 UG 100 0 0 ens33 192.168.91.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33 192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
路由文件的配置
/etc/sysconfig/network-scripts/route-IFACE #文件名为网卡名 两种风格: (1) TARGET via GW 如:10.0.0.0/8 via 172.16.0.1 (2) 每三行定义一条路由 ADDRESS#=TARGET NETMASK#=mask GATEWAY#=GW [root@gsx network-scripts]#vim route-ens33 192.168.100.0/24 via 192.168.91.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软件包的一部分,默认已经安装。
#选项: -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
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@kgc ~]#traceroute 192.168.91.101 traceroute to 192.168.91.101 (192.168.91.101), 30 hops max, 60 byte packets 1 192.168.91.101 (192.168.91.101) 0.752 ms 0.644 ms 0.635 ms
1.8 nslookup
域名解析 nslookup
格式:
nslook 域名
[root@kgc ~]#nslookup www.baidu.com Server: 8.8.8.8 Address: 8.8.8.8#53
dig 可以显示出更多详细信息
[root@kgc ~]#dig www.baidu.com ; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.5 <<>> www.baidu.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 40371 ;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 512 ;; QUESTION SECTION: ;www.baidu.com. IN A ;; ANSWER SECTION: www.baidu.com. 390 IN CNAME www.a.shifen.com. www.a.shifen.com. 30 IN A 14.215.177.39 www.a.shifen.com. 30 IN A 14.215.177.38 ;; Query time: 77 msec ;; SERVER: 8.8.8.8#53(8.8.8.8) ;; WHEN: 四 9月 23 22:02:04 CST 2021 ;; MSG SIZE rcvd: 101
1.9永久修改网络相关配置文件
网卡
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 BOOTPROTO=static //网卡获取地址模式 ONBOOT=yes //开机是否自启动 IPADDR=192.168.91.105 //配置你自己的IP地址子网网关还有dns服务器 NETMASK=255.255.255.0 GATEWAY=192.168.91.2 DNS1=8.8.8.8 [root@localhost ~]# systemctl restart network //重启网卡服务 [root@localhost ~]# ping 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.871 ms 64 bytes from 192.168.91.1: icmp_seq=2 ttl=128 time=0.487 ms 64 bytes from 192.168.91.1: icmp_seq=3 ttl=128 time=0.347 ms #TYPE:接口类型;常见有的Ethernet, Bridge #PROXY_METHOD:此配置文件应用到的设备 #BROWSER_ONLY: #BOOTPROTO:激活此设备时使用的地址配置协议,常用的dhcp, static, none, bootp #DEFROUTE: #IPV4_FAILURE_FATAL: #IPV6INIT: #IPV6_AUTOCONF: #IPV6_DEFROUTE: #IPV6_FAILURE_FATAL: #IPV6_ADDR_GEN_MODE: #NAME:此配置文件应用到的设备 #UUID:设备的惟一标识 #DEVICE:设备名 #ONBOOT:在系统引导时是否激活此设备 #IPADDR:: #NETMASK: #GATEWAY: #DNS1:
红帽修改网络地址
[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
主机名
/etc/hostname文件来修改主机名
需要重启后生效,而且只识别第一行
[root@localhost ~]# vi /etc/hostname kgc [root@localhost ~]#reboot [root@localhost ~]#su [root@kgc ~]#
域名解析配置文件
本地主机映射文件
/etc/resolv.conf
保存的是你DNS服务器的地址
/etc/hosts 文件 保存主机名与IP地址的映射记录
[root@localhost ~]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4. 192.168.91.100 www.yun.com [root@kgc ~]#ping www.yun.com PING www.yun.com (192.168.91.100) 56(84) bytes of data. 64 bytes from www.yun.com (192.168.91.100): icmp_seq=1 ttl=64 time=0.047 ms 64 bytes from www.yun.com (192.168.91.100): icmp_seq=2 ttl=64 time=0.065 ms 64 bytes from www.yun.com (192.168.91.100): icmp_seq=3 ttl=64 time=0.067 ms 64 bytes from www.yun.com (192.168.91.100): icmp_seq=4 ttl=64 time=0.062 ms 64 bytes from www.yun.com (192.168.91.100): icmp_seq=5 ttl=64 time=0.071 ms 64 bytes from www.yun.com (192.168.91.100): icmp_seq=6 ttl=64 time=0.130
hosts文件和DNS服务器的比较
- 默认情况下,系统首先从 hosts 文件查找解析记录
- hosts 文件只对当前的主机有效
- hosts 文件可减少 DNS 查询过程,从而加快访问速度
1.10 scp
远程同步
[root@kgc opt]#scp /opt/passwd root@192.168.91.101:/opt/passwd 命令字 本地文件地址 对方用户名@地址冒号对面地址 [root@kgc opt]#scp root@192.168.91.101:/opt/passwd /opt/ 命令字 对方用户名@地址冒号对面地址 本地地址
1.11多网卡绑定
将多块网卡绑定同一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个口只占了小部分流量
常用的模式为 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设备的配置文件
/etc/sysconfig/network-scripts/ifcfg-bond0 NAME=bond0 TYPE=bond DEVICE=bond0 BOOTPROTO=none IPADDR=10.0.0.100 PREFIX=8 BONDING_OPTS="mode=1 miimon=100 fail_over_mac=1" #miimon指定链路监测时间间隔。如果miimon=100,那么系统每100ms 监测一次链路连接状态,如果有一条线路不通就转入另一条线路 /etc/sysconfig/network-scripts/ifcfg-ens33 NAME=eth0 DEVICE=eth0 BOOTPROTO=none MASTER=bond0 SLAVE=yes ONBOOT=yes /etc/sysconfig/network-scripts/ifcfg-ens36 NAME=eth1 DEVICE=eth1 BOOTPROTO=none MASTER=bond0 SLAVE=yes ONBOOT=yes ################################################################# vim ifcfg-bond0 NAME=bond0 TYPE=bond DEVICE=bond0 BOOTPROTO=none IPADDR=192.168.91.22 NETMASK=255.255.255.0 GATEWAY=192.168.91.2 BONDING_OPTS="mode=1 miimon=100 fail_over_mac=1" vim ifcfg-ens33 BOOTPROTO=static NAME=ens33 DEVICE=ens33 ONBOOT=yes MASTER=bond0 SLAVE=yes vim ifcfg-ens36 NAME=ens36 DEVICE=bond0 BOOTPROTO=none MASTER=bond0 SLAVE=yes PNBOOT=yes [root@localhost network-scripts]#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:fe:e5:bf 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.12 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<数据包文件> 把数据包数据写入指定的文件。
实际操作:
[root@centos7 ~]#tcpdump -D #查看网卡 tcpdump #不指定任何参数,监听第一块网卡上经过的数据包。主机上可能有不止一块网卡,所以经常需要指定网卡。 tcpdump -i ens33 #指定查看ens33 网卡 tcpdump host 192.168.91.100 -i ens33 #监听特定主机,监听主机10.0.0.100 的通信包,注意:出、入的包都会被监听。 #特定来源、目标地址的通信 tcpdump src host hostname #特定来源 tcpdump dst host hostname #特定目标地址 tcpdump host hostname #如果不指定src跟dst,那么来源或者目标是hostname的通信都会被监听 [root@localhost ~]#tcpdump -i ens33 -nn icmp and src host 192.168.91.101 and dst host 192.168.91.100 #面试题 [root@localhost ~]#tcpdump ip host 192.168.91.100 and 192.168.91.101 -i ens33 #只抓取 特定主机之间的数据包 #特定端口 tcpdump port 3000 tcpdump tcp port 22 and src host 10.0.0.100 -i ens33
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报文向服务器进行请求,极少用到
配置文件的
#设置全局配置参数 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.100192.168.1.200; option routers 192.168.1.254; } subnet 192.168.2.0 netmask 255.255.255.0 { range 192.168.2.20192.168.2.30; option routers 192.168.2.254; } #host主机声明( 给单机分配固定的IP地址) host hostname{ #指定需要分配固定IP地址的客户机名称 hardware ethernet 00:c0:c3:22:46:81; #指定该主机的MAC地址 fixed-address 192.168.100.45; #指定保留给该主机的IP地址
关闭防火墙 和selinux
[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 ~]#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 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 全部信息
保留地址
#查找关键字fixed #先查找mac地址ipconfig /all 77 host fantasia { 78 hardware ethernet 00:0C:29:69:9B:97;(注意分隔符) 79 fixed-address 192.168.91.199; 80 }
dhcp中继
info-center source ds channel 0 log state off trap state off //4095 Undo ter m //4096 华为打断配置 创建vlan sys //视图模式 show vlan //查看VLAN vlan batch 10 20 100 //创建vlan display vlan //查看vlan int e0/0/2 port link-type access Port default vlan 10 q int e0/0/3 port link-type access Port default vlan 20 q int e0/0/4 port link-type access Port default vlan 100 q int e0/0/1 port link t port trunk allow-pass vlan all 三层 vlan batch 10 20 100 //新建vlan dhcp enable //开启dhcp华为默认关闭 int g0/0/1 //进入接口 port link trunk // 接口类型 port trunk allow-pass vlan all //允许所有vlan通过 int vlan 10 ip add 192.168.10.1 24 //配置网关地址 dhcp select relay // 配置中继 dhcp relay server 192.168.100.100 //宣告服务器地址 dis this int vlan 20 ip add 192.168.20.1 24 dhcp select relay dhcp relay server 192.168.100.100 dis this int vlan 100 ip add 192.168.100.1 24 dhcp select relay dhcp relay server 192.168.100.100 dis this
文件共享服务
1.FTP
yum info vsftpd 查看信息 FTP(File Transfer Protocol: 文件传输协议)作用:Internet 上用来传送文件的协议。 VSFTP全称 (very secure FTP) VSFTP模式: C/S模式 FTP服务器默认使用TCP协议的20、21端口与客户端进行通信 20端口用于建立数据连接,并传输文件数据 21端口用于建立控制连接,并传输FTP控制命令 FTP数据连接分为主动模式和被动模式 主动模式:服务器主动发起数据连接 被动模式:服务器被动等待数据连接
yum install -y vsftpd cd /etc/vsftpd/ cp vsftpd.conf vsftpd.conf.bak
设置匿名用户访问的FTP服务(最大权限) #修改配置文件
vim /etc/vsftpd/vsftpd.conf anonymous_enable=YES #开启匿名用户访问。默认已开启 write_enable=YES #开放服务器的写权限(若要上传,必须开启)。默认已开启 anon_umask=022 #设置匿名用户所上传数据的权限掩码(反掩码)。 anon_upload_enable=YES #允许匿名用户.上传文件。默认已注释,需取消注释 anon_mkdir_write_enable=YES #允许匿名用户创建(上传)目录。默认已注释,需取消注释 anon_other_write_enable =YES #允许删除、重命名、覆盖等操作。需添加 chmod 777 /var/ftp/pub/ #为匿名访问ftp的根目录下的pub子目录设置最大权限,以便匿名用户.上传数据
#开启服务,关闭防火墙和增强型安全功能 systemctl start vsftpd systemctl stop firewalld setenforce 0 #匿名访问测试 在Windows系统打开开始菜单,输入cmd 命令打开命令提示符 #建立ftp连接 ftp 192.168.80.10 #匿名访问,用户名为ftp,密码为空,直接回车即可完成登录 ftp> pwd #匿名访问ftp的根目录为Linux系统的/var/ftp/目录 ftp> ls #查看当前目录 ftp> cd pub #切换到pub目录ftp> get文件名 #下载文件到当前Windows本地目录 ftp> put 文件名 #上传文件到ftp目录 ftp> quit #退出
重启服务 systemctl restart vsftpd
ftp 192.168.10.12
ftp://zhangsan@192.168.10.12 修改匿名用户、本地用户登录的默认根目录 anon_root=/var/www/html #anon_root 针对匿名用户 local_root=/var/www/html #local_root针对系统用户
使用user_list用户列表文件 vim /etc/vsftpd/user_list //末尾添加zhangsan用户 zhangsan
vim /etc/vsftpd/vsftpd.conf userlist_enable=YES #启用user_list用户列表文件 userlist_deny=NO #设置白名单,仅允许user_list用户列表文件的用户访问。默认为YES,为黑名单,禁用
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南