一、LINUX 网络
将Linux主机接入到网络,需要配置网络相关设置
一般包括如下内容:
- 主机名
- IP/netmask
- 路由:默认网关
- DNS服务器 主DNS服务器 次DNS服务器 第三个DNS服务器
二、查看网络配置
1.ifconfig查看指定网络接口信息
ifconfig命令来自于net-tools包组(网络工具包,图形化界面已安装,而最小化界面是没有的,需要自己安装。)
[root@localhost network-scripts]# rpm -qi net-tools
Name : net-tools
Version : 2.0
Release : 0.22.20131004git.el7
Architecture: x86_64
Install Date: 2024年02月29日 星期四 00时51分39秒
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 | 查看网卡配置,默认是看所有开启的网卡 。 |
ifconfig 网卡名 | 查看单独的网卡(开启与未开启都能查看) |
ifconfig 网卡名 up | 开启网卡 |
ifconfig 网卡名 down | 关闭网卡 |
ifconfig -a | 显示所有网卡(包括没有开启的) |
ifconfig 网卡名:0 ip/子网 | 设置临时网卡,虚拟网卡 |
ifconfig 网卡名 ip地址/子网 | 临时设置地址 |
ifconfig 网卡名称 0 | 取消网卡设置 |
在不带任何选项和参数执行ifconfig命令时,将显示当前主机中已启用(活动)的网络接口信息。
网卡名称详解:
ens33:第一块以太网的名称详解。
- “en"是”EtherNet"的缩写,表示网卡类型为以太网;
- “s"表示接口,热插拔插槽上的设备(hot-plug Slot);
- 数字“33”表示第一个接口插槽编号。
注意:cones6和cones7混用的情况下就需要用eth0来进行标记了,方便用来统一操作。
[root@localhost network-scripts]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.83.10 netmask 255.255.255.0 broadcast 192.168.83.255
inet6 fe80::28de:fd4a:58c2:c427 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:dd:fc:dc txqueuelen 1000 (Ethernet)
RX packets 15048 bytes 1103979 (1.0 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 7630 bytes 2576301 (2.4 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
ens36: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet6 fe80::b389:ed19:43fc:b0ff prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:dd:fc:e6 txqueuelen 1000 (Ethernet)
RX packets 163 bytes 9963 (9.7 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 111 bytes 18954 (18.5 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 103 bytes 14520 (14.1 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 103 bytes 14520 (14.1 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:3f:c3:53 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
ens33网卡信息每行详细解释:
[root@localhost network-scripts]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
#ens33:网卡名称
#UP:该接口已启用
#BROADCAST:支持广播
#RUNNING:正在允许
#MULTICAST:支持组播
#mtu 1500:网络传输时的最大传输单元,单位字节。这里为1500字节。
inet 192.168.83.10 netmask 255.255.255.0 broadcast 192.168.83.255
#网络接口的IP地址、子网掩码、广播地址
inet6 fe80::28de:fd4a:58c2:c427 prefixlen 64 scopeid 0x20<link>
#IPV6地址、子网长度、作用域(link小时仅该接口有效)
ether 00:0c:29:dd:fc:dc txqueuelen 1000 (Ethernet)
#mac地址、传输队列长度(传输缓存大小)、接口类型
RX packets 15622 bytes 1158147 (1.1 MiB)
#接收报文个数、总字节数
RX errors 0 dropped 0 overruns 0 frame 0
#接收错误个数、丢弃个数、溢出个数、冲突帧数
TX packets 7921 bytes 2603839 (2.4 MiB)
#发送报文个数、总字节数
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
#发送错误个数、丢弃个数、溢出个数、载荷数、冲突数
命令格式:ifconfig 网卡名称
(1)查看ens33网卡
[root@localhost network-scripts]# ifconfig ens33
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.83.10 netmask 255.255.255.0 broadcast 192.168.83.255
inet6 fe80::28de:fd4a:58c2:c427 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:dd:fc:dc txqueuelen 1000 (Ethernet)
RX packets 16002 bytes 1194650 (1.1 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 8081 bytes 2618819 (2.4 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
(2)临时关闭、开启ens33网卡
[root@localhost ~]# ifconfig ens36 down //关闭ens36
[root@localhost ~]# ifconfig ens36 up //开启ens36
关闭的网卡无法在ifconnfig上看到。
ifconfig ens36 //查看指定ens36的网卡信息
ifconfig -a //查看所有的网卡信息(包括关闭的)
(3)设置临时修改ens36 IP地址(重启网络就没有了):
root@localhost ~]# ifconfig ens36 192.168.83.100 //临时修改ens36 IP地址
[root@localhost ~]# ifconfig ens36
ens36: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.83.100 netmask 255.255.255.0 broadcast 192.168.83.255
inet6 fe80::20c:29ff:fedd:fce6 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:dd:fc:e6 txqueuelen 1000 (Ethernet)
RX packets 101 bytes 6660 (6.5 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 98 bytes 15067 (14.7 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
(4)设置临时虚拟网卡(虚拟网卡并追加一个临时地址):
[root@localhost ~]# ifconfig ens36:0 10.0.0.3/24 //设置虚拟网卡
ifconfig ens36:0 down //结束虚拟网卡
(5)取消ens36网卡设置
[root@localhost ~]# ifconfig ens36 0 //取消ens36网卡
[root@localhost ~]# ifconfig
ens36: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet6 fe80::20c:29ff:fedd:fce6 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:dd:fc:e6 txqueuelen 1000 (Ethernet)
RX packets 825 bytes 57664 (56.3 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 380 bytes 44198 (43.1 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
永久设置网络接口参数
静态NAT网络设置
编辑配置文件 : /etc/sysconfig/network-scripts/ifcfg-*
[root@zhubao /]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
BOOTPROTO=static #地址获取方式 静态static、none 动态dhcp
NAME=ens33 #描述 网卡的名称
DEVICE=ens33 #必须和ifconfig命令中网卡名一样
ONBOOT=yes #开机启动(是否开启)
IPADDR=192.168.83.10 #IP地址
NETMASK=255.255.255.0 #子网掩码 另外一种写法PREFIX=24
GATEWAY=192.168.83.2# #网关
DNS1=8.8.8.8 #dns 可以写多个
DNS2=114.114.114.114
实验:双网卡设置
第一步:在虚拟机中添加新的网络适配器
第二步:输入ifconfig命令查看新加入网卡名称为ens36
第三步:编辑配置文件 复制ens33的配置文件给ens36修改配置
[root@zhubao /]# cd /etc/sysconfig/network-scripts/ //切换到配置文件所在目录
[root@zhubao network-scripts]# cp ifcfg-ens33 ifcfg-ens36 //复制ens33的配置文件并改名为ens36
[root@zhubao network-scripts]# vim ifcfg-ens36 //编辑配置文件
BOOTPROTO=static //地址获取方式为静态获取
NAME=ens36 //网卡名称改为ens36
DEVICE=ens36 //将设备改为ens36
ONBOOT=yes //开机自启
IPADDR=11.0.0.1 //设置一个不重复的IP地址
NETMASK=255.255.255.0 //子网掩码
GATEWAY=11.0.0.1 //网关
DNS1=8.8.8.8 //dns
DNS2=144.144.144.144
第四步:重启网络服务,并查看ens36。
[root@zhubao network-scripts]# systemctl restart network //重启网卡服务
[root@zhubao network-scripts]# ifconfig ens36 //输入ifconfig命令查看ens36
三、route查看路由表条目
route -n | 显示路由信息 -n 数字形式显示,也可以查询网关。 |
route add -net 网段gw 网关 | 添加静态路由 |
route del -net 网段 | 删除路由 |
1.打印路由表route
[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
192.168.83.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
2.以数字的形式显示路由信息route -n
[root@localhost ~]# route -n // 以数字形式显示路由信息
Kernel IP routing table
默认路由 网关 子网掩码
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.83.2 0.0.0.0 UG 100 0 0 ens33 //默认路由与网关是绑定的
192.168.83.0 0.0.0.0 255.255.255.0 U 0 0 0 ens36
192.168.83.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
3.向路由表中添加默认网关记录route add default gw 网关地址
[root@localhost ~]# route -n //以数字形式显示路由表
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.83.2 0.0.0.0 UG 100 0 0 ens33
192.168.83.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 default //删除默认路由
[root@localhost ~]# route add default gw 192.168.83.2 //添加默认路由网关
[root@localhost ~]# systemctl restart network //重启
4.添加静态路由
[root@localhost ~]# route add -net 10.0.0.0/8 gw 192.168.83.2 //添加静态路由
[root@localhost ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.83.2 0.0.0.0 UG 100 0 0 ens33
10.0.0.0 192.168.83.2 255.0.0.0 UG 0 0 0 ens33
192.168.83.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
5.删除指定网段的路由记录route del -net
[root@localhost ~]# route del -net 10.0.0.0/8 //删除指定网段的路由记录
[root@localhost ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.83.2 0.0.0.0 UG 100 0 0 ens33
192.168.83.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
6.永添加指定网段的路由记录vim /etc/sysconfig/network-scripts/route-ens33
[root@localhost ~]# vim /etc/sysconfig/network-scripts/route-ens33 //永久添加指定网段的路由记录
[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.83.2 0.0.0.0 UG 100 0 0 ens33
10.0.0.0 0.0.0.0 255.0.0.0 U 100 0 0 ens33
192.168.83.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
四、hostname查看主机名称
查看设置当前主机名:hostname[主机名]
[root@localhost ~]# hostname //查看当前主机名
localhost.localdomain
[root@localhost ~]# hostname zhu //临时修改主机名
[root@localhost ~]# su //刷新
[root@zhu ~]#
永久修改主机名称,修改后重启生效:
- 法一:编辑配置文件
/etc/hostname
,该文件只对第一行生效,只能修改一个无法多个。 - 法二:使用
hostnamectl set-hostname 新主机名
命令,该命令实际是修改了配置文件。
[root@zhu ~]# hostnamectl set-hostname zhubao //永久修改主机名
[root@zhu ~]# su //刷新
[root@zhubao ~]#
[root@zhubao ~]# cat /etc/hostname //重启后可发现主机名文件已发生更改。
zhubao
五、ss(socket statistics)
查看网络连接情况
ss 命令:也可以查看网络连接情况,主要用于获取 socket 统计信息,它可以显示和 netstat 命令类似的输出内容。
但 ss 的优势在于它能够显示更多更详细的有关 TCP 和连接状态的信息,而且比 netstat 更快速更高效。
当服务器的socket连接数量变得非常大时,无论是使用netstat命令还是直接cat /proc/net/tcp,执行速度都会很慢。
ss快的秘诀在于,它利用到了TCP协议栈中tcp_diag。tcp_diag是一个用于分析统计的模块,可以获得Linux 内核中第一手的信息,这就确保了ss的快捷高效 ss命令是Linux CentOS 7中iproute软件包的一部分,默认已经安装。 ss命令用于获取socket(套接字)统计信息。
ss格式:
ss [选项]
选项 | 含义 |
---|---|
-t | tcp协议相关 |
-u | udp协议相关 |
-w | 套接字相关 |
-x | unix sock相关 |
-l | listen状态的连接 |
-a | 所有 |
-n | 数字格式 |
-p | 相关的程序及PID |
-e | 扩展的信息 |
-m | 内存用量 |
-o | 计时器信息 |
-r | --resolve 把 IP 解释为域名,把端口号解释为协议名称 |
测试网络连接
一、测试网络联通性ping
linux中,默认会一直ping下去, 按Ctrl+c 终止。
用法
ping [选项] 目标主机
选项 | 说明 |
---|---|
-w | 超时时间(在 deadline 秒后退出) |
-c | count指定发送报文的次数(ping指定次数后停止ping) |
-i | 指定收发信息的间隔时间 |
-s | 设置数据包的大小 |
-n | 只输出数值 |
-p | 设置填满数据包的范本样式 |
-q | 不显示指令执行过程 |
-R | 记录路由过程 |
-t | 设置存活数值TTL的大小 |
-v | 详细显示指令的执行过程 |
演示:
二、traceroute
跟踪数据包
测试从当前主机到目的主机之间经过的网络节点。
用法
格式:
traceroute 目标主机地址
三、nslookup
域名解析
测试DNS域名解析nslookup 目标主机地址 [DNS服务器地址]
演示:
[root@zhubao ~]# nslookup www.baidu.com //将域名解析为IP地址
;; connection timed out; trying next origin //网络卡顿造成的
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.188
Name: www.a.shifen.com
Address: 180.101.50.242
四、dig
域名解析
可以视为升级版的nskookup
,dig
可以显示出更多详细信息。
dig是一个在类Unix命令行模式下查询DNS包括NS记录,A记录,MX记录等相关信息的工具。
五、tcpdump
抓包工具
命令格式:
tcpdump option proto dir type
选项 协议 数据的方向(原地址与目标地址) 抓取数据类型
-
proto (协议)
- tcp 、 udp 、 icmp
- ip 、 ipv6
- arp
-
dir 方向
- src (只抓取源地址是91.100 )
- dst (只抓取目的地址是92.101 )
- src and dst ( 只抓100 - 101之间的 )
-
type 类型
- host 主机
- net 网段
- port 端口
- port range 端口范围
[root@zhubao data]# tcpdump -i ens33 //-i为指定网卡
00:49:50.845237 IP 192.168.83.1.62411 > zhubao.ssh: Flags [.], ack 188, win 4100, length 0
第一列:时分毫秒 00:49:50.845237
第二例:网络协议ip
第三列:发送方IP地址+端口号 ip地址:192.168.83.1 端口号:62411 >表示数据流向
第四列:主机名协议 主机名:zhubao 协议:ssh
第五列: seq号 ack号 win窗口长度 tcp的标志位
六、bond 多网卡绑定
将多块网卡绑定同一IP地址对外提供服务,可以实现高可用或者负载均衡。直接给两块网卡设置同一IP地址是不可以的。通过 bonding,虚拟一块网卡对外提供连接,物理网卡的被修改为相同的MAC地址。
1. Bonding 聚合链路工作模式
- mod=0 ,即:(balance-rr) Round-robin policy(轮询)聚合口数据报文按包轮询从物理接口转发,减轻单个网卡的负担。
- mod=1,即: (active-backup) Active-backup policy(主-备份策略)只有Active状态的物理接口才转发数据报文。
- mod=2,即:(balance-xor) XOR policy(平衡策略)
- mod=3,即:broadcast(广播策略)
- mod=4,即:(802.3ad) IEEE 802.3ad Dynamic link aggregation(IEEE 802.3ad 动态链接聚合)
- mod=5,即:(balance-tlb) Adaptive transmit load balancing(适配器传输负载均衡)在每个物理接口上根据当前的负载(根据速度计算)分配外出流量。
- mod=6,即:(balance-alb) Adaptive load balancing(适配器适应性负载均衡)该模式包含了balance-tlb模式,同时加上针对IPV4流量的接收负载均衡,而且不需要任何switch(交换机)的支持。
2.bond实验流程
新增网络适配器
[root@zhubao ~]# cd /etc/sysconfig/network-scripts/ //切换到配置文件所在目录
[root@zhubao network-scripts]# cp ifcfg-ens33 ifcfg-bond0
[root@zhubao network-scripts]# vim ifcfg-bond0 //创建bond配置文件
NAME=bond0 //描述名字
TYPE=bond // 类型
DEVICE=bond0 //网卡为bond0
BOOTPROTO=none //静态获取IP地址
IPADDR=10.0.0.100 //bondIP地址
PREFIX=8 //子网掩码
BONDING_OPTS="mode=1 miimon=100 fail_over_mac=1"
#miimon指定链路监测时间间隔。如果miimon=100,那么系统每100ms 监测一次链路连接状态,如果有一条线路不通就转入另一条线路
#fail_over_mac=1" 永远使用活着的 网卡的mac地址
NAME=bond0 //描述名字
TYPE=bond //类型
DEVICE=bond0 //网卡为bond0
BOOTPROTO=none //静态获取地址
IPADDR=192.168.83.22 //IP地址
NETMASK=255.255.255.0 //子网掩码
GATEWAY=192.168.83.2 //网关
DNS1=8.8.8.8 //DNS
BONDING_OPTS="mode=1 miimon=100 fail_over_mac=1"
[root@zhubao network-scripts]# vim ifcfg-ens33 //编辑ens33配置文件
BOOTPRTO=static
NAME=ens33
DEVICE=ens33
ONBOOT=yes
MASTER=bond0
SLAVE=yes
[root@zhubao network-scripts]# vim ifcfg-ens36 //编辑ens36配置文件
BOOTPROTO=static
NAME=ens36
DEVICE=ens36
ONBOOT=yes
MASTER=bond0
SLAVE=yes
[root@localhost network-scripts]# systemctl restart network //重启网络服务
Socket error Event: 32 Error: 10053.
Connection closing...Socket close.
Connection closed by foreign host.
Disconnected from remote host(C7-3) at 16:49:55.
Type `help' to learn how to use Xshell prompt.
[C:\~]$ ssh 192.168.83.22 //登录到bond0网卡
[root@localhost ~]# cat /proc/net/bonding/bond0 //查看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: ens36
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:0a:5c:2d
Slave queue ID: 0
Slave Interface: ens36
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 00:0c:29:0a:5c:37
Slave queue ID: 0
实验步骤:
1.为虚拟机增添网络适配器。
2.输入ifconfig查看所有网卡,包括未开启的新增网卡。
3.转到配置文件目录下,对bond0进行配置。
![]()
![]()
3.对ens33进行编辑配置文件
![]()
4.对ens36进行编辑配置文件
![]()
5.重启网络服务,登录bond网卡,查看登录情况
6.查看bond状态
直接输入命令 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