IP地址是Internet赖以工作的基础。IP地址用来在网络中唯一标识一台计算机或网络设备的接口,是一个逻辑地址,以此来屏蔽物理地址的差异。 这里主要介绍IPv4地址的结构。
IP地址长度为32位二进制数,通常使用点分十进制数表示IPv4地址,每个十进制数由8位二进制数构成。为了便于寻址和层次化构造网络,IP地址由网络地址和主机地址两部分组成,对于同一网络中的所有设备,IPv4地址中网络部分必须完全一致,而IPv4地址中主机部分必须唯一。配置IP地址时,还需要配置子网掩码,子网掩码不能单独存在,它必须结合IP地址一起使用。子网掩码只有一个作用,就是将某个IP地址划分成网络地址和主机地址两部分。 与IPv4地址一样,子网掩码的长度也是32位二进制数,用子网掩码和IPv4地址进行逻辑与运算的结果表示网络地址,用IPv4地址减去网络地址表示主机地址。
传统IP地址运行方式,以等级来划分,共划分为五个等级:A类、B类、C类、D类、E类,一般常用到的是A、B、C类这三种等级的IP地址,适用于大、中、小型网络。
A类
网络地址的长度为8bits,最左边的bit(称为前导位)必须为0。A类地址的网络地址可从00000000(二进制)至01111111(二进制),总共有2^7=128个。由于A类的网络地址长度为8bits,因此主机地址长度为32-8=24bits,即每个A类网络可用的主机地址有2^24=16777216个。只有国家(或一些特殊单位)会分配到A类的IP地址。
B类
网络地址的长度为16bits,最左边的2bits为前导位,必须为10,因此B类的IP地址必然介于128.0.0.0与191.255.255.255之间。每个B类网络可用的主机地址有2^16=65536个,通常用来分配给一些跨国企业或ISP使用。
C类
网路地址的长度为24bits,最左边的3bits为前导位,必须为110,因此C类的IP地址必然介于192.0.0.0与223.255.255.255之间。每个C类网络可用的主机地址有2^8=256个,通常用来分配给一些小型企业。
D类
D类的地址前导位为1110,后面的28bits为组播地址。主要用于组播,D类地址被分配给指定的通信组,当通信组被分配一个D类地址后,该组中的每一个主机都会在正常的单播地址的基础上增加一个组播地址。
E类
E类地址只有一块,它是保留地址。E类地址的最后一个(255.255.255.255)用作一个特殊地址。
实际应用中,有一些不使用的特殊IP地址,如下图所示:
网络号 | 主机号 | 含义 |
---|---|---|
0 | 0 | 在本网络上的本主机 |
0 | 主机号 | 在本网络上的某个主机 |
全1 | 全1 | 只在本网络上进行广播(路由器不进行转发) |
网络号 | 全0 | 表示一个网络 |
网络号 | 全1 | 对网络号标明的网络的所有主机进行广播 |
127 | 任何数 | 用作本地软件的回送地址 |
ifconfig格式:
仅执行ifconfig命令,不带任何参数时,表示显示当前激活的接口。
ifconfig [-a][-s][interface]
ifconfig [interface] [options] | [address]
说明:
-a:表示显示所有接口配置信息,包括状态为down的接口
-s:显示接口的简短列表,等同于netstat -i
interface:指定的接口名称,例如eth0
options:
up:激活接口,等同于ifup命令
down:禁用接口,等同于ifdown命令
address:
IP/NETMASK[up]:设定ip地址和掩码
IP netmask NETMASK:设定ip地址和掩码
例子:
ifconfig eth0 1.1.1.1/24 up 或者
ifconfig eth0 1.1.1.1 netmask 255.255.255.0 up 配置eth0网卡地址为1.1.1.1/24
ifconfig eth0 up 激活eth0接口
ifconfig eth0 down 临时down掉eth0
ip命令来自于iproute包,可用于替代ifconfig。ip命令是一个命令集,功能强大,几乎所有网络信息显示和管理的相关操作都可以使用ip命令来完成。
ip命令格式:
[root@centos7 ~]# ip --help
Usage: ip [ OPTIONS ] OBJECT { COMMAND | help }
ip [ -force ] -batch filename
where OBJECT := { link | address | addrlabel | route | rule | neigh | ntable |
tunnel | tuntap | maddress | mroute | mrule | monitor | xfrm |
netns | l2tp | fou | macsec | tcp_metrics | token | netconf | ila |
vrf }
OPTIONS := { -V[ersion] | -s[tatistics] | -d[etails] | -r[esolve] |
-h[uman-readable] | -iec |
-f[amily] { inet | inet6 | ipx | dnet | mpls | bridge | link } |
-4 | -6 | -I | -D | -B | -0 |
-l[oops] { maximum-addr-flush-attempts } | -br[ief] |
-o[neline] | -t[imestamp] | -ts[hort] | -b[atch] [filename] |
-rc[vbuf] [size] | -n[etns] name | -a[ll] |?-c[olor]}
其中OBJECT是ip命令的操作对象,常用的是link、address、route这三个操作对象。
link:和接口相关的管理操作,主要是操作链路层信息;
address:和ip地址相关的管理操作;
route:和路由相关的管理操作。
使用ip OBJECT help
可以获取该object的语法帮助,例如:
[root@centos7 ~]# ip address help
在ip命令中,任何object都可以写全名,也可以写缩写,例如address可以缩写为addr,也可以只写一个字母a。
[root@centos7 ~]# ip a help 等价于ip address help和ip addr help
虽然还有一个a开头的object为addrlable,但ip会从上述语法给出的object顺序从前往后匹配,例如ip m
将匹配到ip maddress
。如果想匹配别的,如addrlable
,可以写成ip addrl
。
ip link用法
ip link
用于查看网卡链路层信息。
用法 | 含义 |
---|---|
ip link show [DEVICE] | 查看网络接口信息 |
ip link set DEVICE up | down | 启用或禁用接口 |
例子:
ip link set dev eth0 up 启用eth0接口
ip link show eth0 查看eth0接口信息
ip address用法
ip addr
用于管理网卡的IP地址。
用法 | 含义 |
---|---|
ip addr show | 查看IP地址 |
ip addr {add|del} IP/NETMASK dev IFACE [label LABEL] | 配置添加或者删除接口ip地址 |
说明:
add:添加地址;
del:删除地址;
IP/NETMASK:设定的ip地址和子网掩码;
IFACE:指定设备接口名称;
LABEL:添加地址时指明网卡别名。
例子:
ip addr show 或者 ip a s 查看所有ip地址
ip addr show eth0 查看eth0接口的ip地址
ip addr add 1.1.1.1/24 dev eth0 配置eth0接口的ip地址为1.1.1.1/24
ip addr del 1.1.1.1/24 dev eth0 删除eth0接口的ip地址
ip a a 1.1.1.1/24 dev eth0 label eth0:0 设置eth0别名eth0:0,并配置ip为1.1.1.1/24
ip route用法
ip route
用于管理路由,支持查看路由、添加路由、删除路由、清空路由、备份和恢复路由等。
用法 | 含义 |
---|---|
ip route add default via GW dev IFACE | 添加默认路由 |
ip route {show | list} | 查看路由 |
ip route flush [dev IFACE] | 清空路由表 |
ip route save > FILE | 备份路由表 |
ip route restore < FILE | 恢复路由表 |
ip route {add | del} TARGET via GW | 添加或删除路由 |
说明:
add:添加路由;
del:删除路由;
TARGET:路由目标:可以是主机路由的ip,也可以是网络路由NETWORK/MASK;
GW:网关。
例子:
ip route add default via 172.16.0.1 添加网关172.16.0.1
ip route show 显示路由信息
ip route flush dev eth0 清空eth0接口的路由。若不指定接口,则清空所有的路由表记录。
ip route save > /tmp/route.txt 保存当前路由表
ip route restore < /tmp/route.txt 恢复路由表
ip r add 192.168.0.0/24 via 172.16.0.1 添加网络路由192.168.0.0/24,下一跳是172.16.0.1
ip route add 192.168.1.13 via 172.16.0.1 添加主机路由192.168.1.13,下一跳是172.16.0.1
说明:要显示指定主机路由的掩码,则为32位,如:
ip route add 192.168.1.13/32 via 172.16.0.1
在/etc/sysconfig/network-scripts/
目录下有一类ifcfg开头的文件为网卡配置文件,所有ifcfg开头的文件在启动网络服务时都会被加载读取,具体的文件名ifcfg-xx的xx可以随意命名,推荐以类似eth0这样的接口命名。通过网卡配置文件可设定IP地址、子网掩码、默认网关、DNS且永久生效。配置说明可参考:/usr/share/doc/initscripts-*/sysconfig.txt
可用配置 | 说明 |
---|---|
TYPE | 接口类型,常见的有Ethernet、Bridge |
NAME | 此配置文件应用到的设备 |
DEVICE | 设备名 |
HWADDR | 对应的设备的MAC地址 |
UUID | 设备唯一标识 |
BOOTPROTO | 激活此设备时使用的地址配置协议,常用的有dhcp、static、none、bootp |
IPADDR | 指明IP地址 |
NETMASK | 子网掩码,如:255.255.255.0 |
PREFIX | 网络ID的位数,如24 |
GATEWAY | 默认网关 |
DNS1 | 第一个DNS服务器地址 |
DNS2 | 第二个DNS服务器地址 |
DOMAIN | 主机不完整时,自动搜索的域名后缀 |
ONBOOT | 在系统引导时是否激活此设备 |
PEERDNS | 如果BOOTPROTO的值为dhcp,YES将允许dhcp server分配的dns服务器信息直接覆盖至/etc/resolv.conf文件,NO不允许修改resolv.conf |
NM_CONTROLLED | NM是Network Manager的缩写,此网卡是否受NM控制 |
多网卡绑定(bonding):将多块网卡绑定同一ip地址对外提供服务,可以实现高可用或者负载均衡。默认情况下,无法给不同网卡配置同一个ip地址。通过bonding,创建一个虚拟网卡(Master角色)对外提供连接,然后在此虚拟网卡上绑定多块物理网卡(Slave角色),它们将共用MAC地址。这样一来,流量将以master虚拟网卡为导向分配给各slave物理网卡,从而实现流量的负载均衡或高可用。
bonding工作模式:有7种bonding模式,每一种都有一个字符名称代号,也有对应的数值代号,两种代号可互用。
介绍nmcli命令之前,先介绍下NetworkManager服务,NetworkManager是2004年Red Hat启动的项目,旨在能够让Linux用户更轻松地处理现代网络需求,尤其是无线网络,能够自动发现网卡并配置ip地址。虽然初衷是针对无线网络,但在服务器领域,NetworkManager已经大获成功。
nmcli和nmtui是NetworkManager服务提供的网络管理工具,nmtui是文本图形界面,类似于古老的setup命令,nmcli是命令管理行工具。在RHEL7上,同时支持network.service和NetworkManager.service(简称NM)两个网络服务,默认情况下,这2个服务都有开启,但许多人会将NM禁掉。但是在RHEL8上,默认没有安装network.service,只安装了NM,因此只能通过NM进行网络配置,也就是说在RHEL8上,必须开启NM,否则无法使用网络。NM也是未来的趋势。
了解nmcli之前,还必须理解一个重要概念:connection。在NetworkManager中,网卡设备可以认为是网络接口,connection(连接)是接口的配置,由一组设置组成,如连接类型、设备名、ip地址、DNS等。同一设备可能存在多个connection,但一次只能有一个保持活动状态。每个connection都有一个名称con-name(也称为ID),还有系统为此connection自动分配的UUID。它们都可以用来表示某个connection。事实上,每新增一个connection,NetworkManager会自动创建一个/etc/sysconfig/network-scripts/ifcfg-NAME
的配置文件。所以使用nmcli connection命令要注意,它会修改配置文件,修改会永久生效。
nmcli格式:
[root@Centos8 ~]# nmcli --help
Usage: nmcli [OPTIONS] OBJECT { COMMAND | help }
OPTIONS
-a, --ask ask for missing parameters
-c, --colors auto|yes|no whether to use colors in output
-e, --escape yes|no escape columns separators in values
-f, --fields <field,...>|all|common specify fields to output
-g, --get-values <field,...>|all|common shortcut for -m tabular -t -f
-h, --help print this help
-m, --mode tabular|multiline output mode
-o, --overview overview mode
-p, --pretty pretty output
-s, --show-secrets allow displaying passwords
-t, --terse terse output
-v, --version show program version
-w, --wait <seconds> set timeout waiting for finishing operations
OBJECT
g[eneral] NetworkManager‘s general status and operations
n[etworking] overall networking control
r[adio] NetworkManager radio switches
c[onnection] NetworkManager‘s connections
d[evice] devices managed by NetworkManager
a[gent] NetworkManager secret agent or polkit agent
m[onitor] monitor NetworkManager changes
nmcli命令使用方法类似于ip命令,OBJECT是nmcli的操作对象,最常用的两个操作对象是connection、device。
connection:译作连接,可理解为配置文件,相当于ifcfg-ethX。可以简写为nmcli c。对connection做操作的时需要指定标识,标识可以是con-name、UUID,也可以使用ifcfg的完整路径,即/etc/sysconfig/network-scripts/ifcfg-ethX。
device:译作设备,可理解为实际的网卡(包括物理网卡和虚拟网卡)。可以简写为nmcli d。
nmcli device用法
用法 | 含义 |
---|---|
nmcli device [disconnect | connect] IFACE | 启用或禁用网卡接口 |
nmcli dev show IFACE | 显示网络接口属性 |
nmcli dev status | 显示所有设备状态 |
例子:
nmcli device disconnect eth0 禁用eth0接口
nmcli device connect eth0 启用eth0接口
nmcli device show eth0 显示eth0接口属性信息
nmcli connection用法
查看connection的配置语法格式:
nmcli connection show con-name
例:查看con-name为eth0-office的connection配置
nmcli connection show eth0-office
新建和删除connection配置语法格式:
nmcli connection add type ethernet con-name NAME ifname IFCE
nmcli connection delete con-name
例:
新增一个connection,指定其类型为ethernet,con-name为eth0-office,接口(设备)为eth0
nmcli connetion add type ethernet con-name eth0-office ifname eth0
删除con-name为eth0-office的connection
nmcli connection delete eth0-office
激活或down掉connection的语法格式:
nmcli connection up | down con-name
例:激活eth0-office
nmcli connection up eth0-office
更改connection的配置语法格式:
nmcli connection modify con-name [+|-]setting.property value
说明:
+:表示在con-name上添加配置
-:表示在con-name上移除配置
setting.property:可以从nmcli con show中查看所有可设置项
value:对应配置项的值
例:
添加eth0-office的ipv4.addresses为1.1.1.1/24
nmcli connection modify eth0-office +ipv4.addresses 1.1.1.1/24
删除eth0-office的ipv4.addresses
nmcli connection modify eth0-office -ipv4.addresses 1.1.1.1/24
修改eth0-office的ipv4.addresses为2.2.2.2/24
nmcli connection modify eth0-office ipv4.addresses 2.2.2.2/24
添加eth0-office的ipv4.dns为8.8.8.8
nmcli connection modify eth0-office +ipv4.dns 8.8.8.8
nmcli con modify的可设置项和值 | 对应的ifcfg文件的选项 |
---|---|
ipv4.method manual | BOOTPROTO=none |
ipv4.method auto | BOOTPROTO=dhcp |
ipv4.addresses 192.168.2.1/24 | IPADDR=192.168.2.1 PREFIX=24 |
ipv4.gateway 192.0.2.254 | GATEWAY=192.0.2.254 |
ipv4.dns 8.8.8.8 | DNS0=8.8.8.8 |
ipv4.dns-search example.com | DOMAIN=example.com |
ipv4.ignore-auto-dns true | PEERDNS=no |
connection.autoconnect yes | ONBOOT=yes |
connection.id eth0 | NAME=eth0 |
connection.interface-name eth0 | DEVICE=eth0 |
802-3-ethernet.mac-address ... | HWADDR= . . . |
1.通过ip命令查看本机网络设备和ip地址
2.把ens192和ens224进行绑定,首先创建master角色
创建完成后可以查看一下由nmcli con
命令自动生成的网卡配置文件
3.添加slave到此master上
查看自动生成的slave网卡配置文件如下
注意:添加slave时若没有指定con-name,则网卡配置文件会默认以bond-slave-IFNAME命名。
4.启动bond,要求先启动slave,最后再激活master
5.启动bond后,查看网络接口,发现ens192和ens224已经没有ip地址,且新增一个bond0接口,而且这三个接口的MAC地址一致
6.查看bond信息和模式可以通过如下方式
原文:https://blog.51cto.com/u_15092752/2820302