1 IP地址

1.1 IP地址组成

它们可唯一标识IP网络中的每台设备,每台主机(计算机、网络设备、外围设备)必须具有唯一的地址

IP地址由两部分组成:

  • 网络ID:标识网络,每个网段分配一个网络ID,处于高位
  • 主机ID:标识单个主机,由组织分配给各设备,处于低位

lPv4地址格式:点分十进制记法

1.2 IP地址分类

A类:

0 0000000 - 0 1111111.X.Y.Z: 0-127.X.Y.Z

网络ID位是最高8位,主机ID是24位低位

网络数:126=2^7(可变是的网络ID位数)-2

每个网络中的主机数:2^24-2=16777214

默认子网掩码:255.0.0.0

私网地址:10.0.0.0

例:114.114.114.114,8.8.8.8,1.1.1.1,123.56.174.200,119.29.29.29

B类:

10 000000 - 10 111111.X.Y.Z: 128-191.X.Y.Z

网络ID位是最高16位,主机ID是16位低位

网络数:2^14=16384

每个网络中的主机数:2^16-2=65534

默认子网掩码:255.255.0.0

私网地址:172.16.0.0-172.31.0.0

例:180.76.76.76,172.16.0.1

C类:

110 0 0000 - 110 1 1111.X.Y.Z: 192-223.X.Y.Z

网络ID位是最高24位,主机ID是8位低位

网络数:2^21=2097152

每个网络中的主机数:2^8-2=254

默认子网掩码:255.255.255.0

私网地址:192.168.0.0-192.168.255.0

例: 223.6.6.6,223.5.5.5

D类:组(多)播,1110 0000 - 1110 1111.X.Y.Z: 224-239.X.Y.Z

E类:保留未使用,240-255

1.3 公共和私有IP地址

私有IP地址:不直接用于互联网,通常在局域网中使用

私有地址范围
A 10.0.0.0到10.255.255.255
B 172.16.0.0到172.31.255.255
C 182.168.0.0到192.168.255.255

公共IP地址:互联网上设备拥有的唯一地址

公共IP地址范围
A 1.0.0.0到9.255.255.25511.0.0.0到126.255.255.255
B 128.0.0.0到172.15.255.255172.32.0.0到191.255.255.255
C 192.0.0.0到192.167.255.255.255192.169.0.0到223.255.255.255

1.4 特殊地址

  • 0.0.0.0

0.0.0.0不是一个真正意义上的IP地址。它表示所有不清楚的主机和目的网络

  • 255.255.255.255

限制广播地址。对本机来说,这个地址指本网段内(同一广播域)的所有主

  • 127.0.0.1~127.255.255.254

本机回环地址,主要用于测试。在传输介质上永远不应该出现目的地址为"127.0.0.1"的数据包

  • 224.0.0.0到239.255.255.255

组播地址,224.0.0.1特指所有主机,224.0.0.2特指所有路由器。224.0.0.5指OSPF路由器,地址多用于—些特定的程序以及多媒体程序

  • 169.254.x.X

如果Windows主机使用了DHCP自动分配IP地址,而又无法从DHCP服务器获取地址,系统会为主机分配这样地址

1.5 保留地址

例:

172.16.0.0网络中的两个地址:172.16.0.0 172.16.255.255

2 IP地址配置方法

2.1 IP地址分配方式

  • 静态指定
    ifconfig
    ip
    nmcli
    配置文件

  • 动态分配:DHCP:Dynamic Host Configuration Protocol

2.2 ipconfig命令

来自于net-tools包,建议使用ip代替

[root@centos8 ~]# rpm -qi net-tools
Name        : net-tools
Version     : 2.0
Release     : 0.52.20160912git.el8
Architecture: x86_64
Install Date: Tue 18 May 2021 12:20:34 PM CST
Group       : System Environment/Base
Size        : 964782
License     : GPLv2+
Signature   : RSA/SHA256, Tue 28 Apr 2020 11:49:03 PM CST, Key ID 05b555b38483c65d
Source RPM  : net-tools-2.0-0.52.20160912git.el8.src.rpm
Build Date  : Mon 27 Apr 2020 09:59:47 AM CST
Build Host  : x86-01.mbox.centos.org
Relocations : (not relocatable)
Packager    : CentOS Buildsys <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 [interface]
ifconfig -a
ifconfig IFACE [up|down]
ifconfig interface [aftype] options | address ...
ifconfig IFACE IP/netmask [up]
ifconfig IFACE IP netmask NETMASK

注意:立即生效
启用混杂模式:[-]promisc

[root@centos8 ~]# ifconfig eth0 10.0.0.68 netmask 255.255.0.0

# 清除eth0上的IP地址
[root@centos8 ~]# ifconfig eth0 0.0.0.0

# 启用和禁用网卡
[root@centos8 ~]# ifconfig eth0 down
[root@centos8 ~]# ifconfig eth0 up

# 对一个网卡设置多个IP地址
[root@centos8 ~]# ifconfig eth0:1 172.16.0.8/24
[root@centos8 ~]# ifconfig 
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.0.0.8  netmask 255.255.255.0  broadcast 10.0.0.255
        inet6 fe80::20c:29ff:feef:daa4  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:ef:da:a4  txqueuelen 1000  (Ethernet)
        RX packets 1693  bytes 330824 (323.0 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1059  bytes 154214 (150.5 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eth0:1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.16.0.8  netmask 255.255.255.0  broadcast 172.16.0.255
        ether 00:0c:29:ef:da:a4  txqueuelen 1000  (Ethernet)

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 1000  (Local Loopback)
        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
[root@centos8 ~]# ifconfig eth0:1 down
[root@centos8 ~]# ifconfig 
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.0.0.8  netmask 255.255.255.0  broadcast 10.0.0.255
        inet6 fe80::20c:29ff:feef:daa4  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:ef:da:a4  txqueuelen 1000  (Ethernet)
        RX packets 1743  bytes 336274 (328.3 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1089  bytes 159726 (155.9 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 1000  (Local Loopback)
        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

# 查看所有网卡流量情况
[root@centos8 ~]# ifconfig -s
Iface      MTU    RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0             1500     1791      0      0 0          1118      0      0      0 BMRU
lo              65536        0      0      0 0             0      0      0      0 LRU

# 查看指定网卡流量信息
[root@centos8 ~]# ifconfig -s eth0
Iface      MTU    RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0             1500     1806      0      0 0          1128      0      0      0 BMRU

2.3 ip命令

来自于iproute包,可用于代替ifconfig

2.3.1 配置linux网络属性

ip [OPTINOS] OBJECT { COMMANG | help }

ip命令说明:

OBJECT := {link|addr|route}
ip link - network device configuration
set dev IFACE,可设置属性:up and down:激活或禁用指定接口,相当于ifup/ifdown
show [dev IFACE] [up]:指定接口,up 仅显示处于激活状态的接口

man帮助:ip(8),ip-address(8),ip-link(8),ip-route(8)

查看帮助

[root@centos8 ~]# ip link help
Usage: ip link add [link DEV] [ name ] NAME
                    [ txqueuelen PACKETS ]
                    [ address LLADDR ]
                    [ broadcast LLADDR ]
                    [ mtu MTU ] [index IDX ]
                    [ numtxqueues QUEUE_COUNT ]
                    [ numrxqueues QUEUE_COUNT ]
                    type TYPE [ ARGS ]

        ip link delete { DEVICE | dev DEVICE | group DEVGROUP } type TYPE [ ARGS ]

        ip link set { DEVICE | dev DEVICE | group DEVGROUP }
                        [ { up | down } ]
                        [ type TYPE ARGS ]
                [ arp { on | off } ]
                [ dynamic { on | off } ]
                [ multicast { on | off } ]
                [ allmulticast { on | off } ]
                [ promisc { on | off } ]
                [ trailers { on | off } ]
                [ carrier { on | off } ]
                [ txqueuelen PACKETS ]
                [ name NEWNAME ]
                [ address LLADDR ]
                [ broadcast LLADDR ]
                [ mtu MTU ]
                [ netns { PID | NAME } ]
                [ link-netns NAME | link-netnsid ID ]
                        [ alias NAME ]
                        [ vf NUM [ mac LLADDR ]
                                 [ vlan VLANID [ qos VLAN-QOS ] [ proto VLAN-PROTO ] ]
                                 [ rate TXRATE ]
                                 [ max_tx_rate TXRATE ]
                                 [ min_tx_rate TXRATE ]
                                 [ spoofchk { on | off} ]
                                 [ query_rss { on | off} ]
                                 [ state { auto | enable | disable} ] ]
                                 [ trust { on | off} ] ]
                                 [ node_guid { eui64 } ]
                                 [ port_guid { eui64 } ]
                        [ { xdp | xdpgeneric | xdpdrv | xdpoffload } { off |
                                  object FILE [ section NAME ] [ verbose ] |
                                  pinned FILE } ]
                        [ master DEVICE ][ vrf NAME ]
                        [ nomaster ]
                        [ addrgenmode { eui64 | none | stable_secret | random } ]
                        [ protodown { on | off } ]
                        [ gso_max_size BYTES ] | [ gso_max_segs PACKETS ]

        ip link show [ DEVICE | group GROUP ] [up] [master DEV] [vrf NAME] [type TYPE]

        ip link xstats type TYPE [ ARGS ]

        ip link afstats [ dev DEVICE ]

        ip link help [ TYPE ]

TYPE := { vlan | veth | vcan | vxcan | dummy | ifb | macvlan | macvtap |
           bridge | bond | team | ipoib | ip6tnl | ipip | sit | vxlan |
           gre | gretap | erspan | ip6gre | ip6gretap | ip6erspan |
           vti | nlmon | team_slave | bond_slave | bridge_slave |
           ipvlan | ipvtap | geneve | vrf | macsec | netdevsim | rmnet |
           xfrm }

ip地址管理

ip addr {add|del} IFADDR dev STRING [label LABEL] [scope {global|link|host}] [broadcast ADDRESS]

[label LABEL]:添加地址时指明网卡别名
[scope {global|link|host}]:指明作用域,global:全局可用;link:仅链接可用;host:本机可用
[broadcast ADDRESS]:指明广播地址

ip address show
ip addr flush

例:

ip link set eth0 down       # 禁用网卡
ip link set eth0 name abc   # 网卡改名
ip link set abc up          # 启用网卡
ip addr add 10.0.0.8/24 dev eth0 label eth0:1   # 添加网卡别名
ip addr del 10.0.0.8/24 dev eth0 label eth0:1   # 删除网卡别名
ip addr fulsh dev eth0   # 清楚网络地址,注意:清楚所有地址

增加网卡别名实现一个网卡多个IP

[root@centos8 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:ef:da:a4 brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.8/24 brd 10.0.0.255 scope global noprefixroute ens160
       valid_lft forever preferred_lft forever
    inet6 fe80::aa27:d927:ae26:d310/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
[root@centos8 ~]# ip address add 10.0.0.18/24 dev ens160 label ens160:1
[root@centos8 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:ef:da:a4 brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.8/24 brd 10.0.0.255 scope global noprefixroute ens160
       valid_lft forever preferred_lft forever
    inet 10.0.0.18/24 scope global secondary ens160:1
       valid_lft forever preferred_lft forever
    inet6 fe80::aa27:d927:ae26:d310/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
[root@centos8 ~]# ip address del 10.0.0.18/24 dev ens160 label ens160:1  
[root@centos8 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:ef:da:a4 brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.8/24 brd 10.0.0.255 scope global noprefixroute ens160
       valid_lft forever preferred_lft forever
    inet6 fe80::aa27:d927:ae26:d310/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

修改IP

[root@centos8 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:ef:da:a4 brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.8/24 brd 10.0.0.255 scope global noprefixroute ens160
       valid_lft forever preferred_lft forever
    inet6 fe80::aa27:d927:ae26:d310/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

# 先加新IP,再删除旧的IP
[root@centos8 ~]# ip address add 10.0.0.18/24 dev ens160    
[root@centos8 ~]# ip address del 10.0.0.8/24 dev ens160
[root@centos8 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:ef:da:a4 brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.18/24 scope global ens160
       valid_lft forever preferred_lft forever
    inet6 fe80::aa27:d927:ae26:d310/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

例:

[root@centos8 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:ef:da:a4 brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.8/24 scope global ens160
       valid_lft forever preferred_lft forever
    inet6 fe80::aa27:d927:ae26:d310/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
[root@centos8 ~]# ip address add 10.0.0.18/24 dev ens160   
[root@centos8 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:ef:da:a4 brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.8/24 scope global ens160
       valid_lft forever preferred_lft forever
    inet 10.0.0.18/24 scope global secondary ens160
       valid_lft forever preferred_lft forever
    inet6 fe80::aa27:d927:ae26:d310/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
[root@centos8 ~]# ip address add 10.0.0.18/24 dev ens160
RTNETLINK answers: File exists

[root@centos8 ~]# ip addr change 10.0.0.18/24 dev ens160 preferred_lft 30 valid_lft6
Error: either "local" is duplicate, or "valid_lft6" is a garbage.
[root@centos8 ~]# ip addr change 10.0.0.18/24 dev ens160 preferred_lft 30 valid_lft 6
preferred_lft is greater than valid_lft
[root@centos8 ~]# ip addr change 10.0.0.18/24 dev ens160 preferred_lft 3 valid_lft 10
[root@centos8 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:ef:da:a4 brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.8/24 scope global ens160
       valid_lft forever preferred_lft forever
    inet 10.0.0.18/24 scope global secondary deprecated dynamic ens160
       valid_lft 7sec preferred_lft 0sec
    inet6 fe80::aa27:d927:ae26:d310/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
# 10s后IP地址消失
[root@centos8 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:ef:da:a4 brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.8/24 scope global ens160
       valid_lft forever preferred_lft forever
    inet6 fe80::aa27:d927:ae26:d310/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
[root@centos8 ~]# ip addr change 10.0.0.18/24 dev ens160 preferred_lft 10 valid_lft 20
[root@centos8 ~]# ip addr change 10.0.0.18/24 dev ens160 preferred_lft 20 valid_lft 40
[root@centos8 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:ef:da:a4 brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.8/24 scope global ens160
       valid_lft forever preferred_lft forever
    inet 10.0.0.18/24 scope global secondary dynamic ens160
       valid_lft 39sec preferred_lft 19sec
    inet6 fe80::aa27:d927:ae26:d310/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
# replace 代替现有地址信息
[root@centos8 ~]# ip addr replace 10.0.0.18/24 dev ens160 preferred_lft 30 valid_lft 60 
[root@centos8 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:ef:da:a4 brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.8/24 scope global ens160
       valid_lft forever preferred_lft forever
    inet 10.0.0.18/24 scope global secondary dynamic ens160
       valid_lft 59sec preferred_lft 29sec
    inet6 fe80::aa27:d927:ae26:d310/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
# replace 也可以实现新加IP
[root@centos8 ~]# ip addr replace 10.0.0.28/24 dev ens160 preferred_lft 30 valid_lft 60 
[root@centos8 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:ef:da:a4 brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.8/24 scope global ens160
       valid_lft forever preferred_lft forever
    inet 10.0.0.28/24 scope global secondary dynamic ens160
       valid_lft 46sec preferred_lft 16sec
    inet6 fe80::aa27:d927:ae26:d310/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

2.3.2 管理路由

ip route 用法

# 添加路由:
ip route add TARGET via GW dev IFACE src SOURCE_IP
    TARGET:
        主机路由:IP
        网络路由:NETWORK/MASK
# 添加网关:
ip route add default via GW dev IFACE
# 删除路由
ip route del TARGET
# 显示路由:
ip route show|list
# 清空路由表
ip route flush [dev IFACE] [via PREFIX]

例:

ip route add 192.168.0.0/24 via 172.16.0.1
ip route add 192.168.1.100 via 172.16.0.1
ip route add default via 172.16.0.1
ip route flush dev etho

查看路由过程:

# 查看到达10.0.0.7所使用的路由
[root@centos8 ~]# ip route get 10.0.0.7
10.0.0.7 dev ens160 src 10.0.0.8 uid 0 
    cache
# 查看到达8.8.8.8所使用的路由
[root@centos8 ~]# ip route get 8.8.8.8
8.8.8.8 via 10.0.0.2 dev ens160 src 10.0.0.8 uid 0 
    cache

2.4 配置文件

IP、MASK、GW、DNS相关的配置文件:

/etc/sysconfig/networl-scripts/ifcfc-IFACE

说明参考:

/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 在系统引导时是否激活此设备
USERCTL 普通用户是否可控制此投备
PEERDNS 如果BOOTPROTO的值为"dhcp",YES将允许dhcpserver分配的dns服务器信息直接覆盖至/etc/resolv.conf文件,NO不允许修改resolv.conf
NM_CONTROLLED NM是NetworkManager的简写,此网卡是否接受NM控制

2.5 nmcli

centos7以上版网络配置

CentOS 6之前,网络接口使用连续号码命名: eth0、eth1等,当增加或删除网卡时,名称可能会发生变化,CentOS7以上版使用基于硬件,设备拓扑和设置类型命名

CentOS 8中已弃用network.service,采用NetworkManager(NM)为网卡启用命令。CentOS 8仍可以安装network.service作为网卡服务,只是默认没有安装,具体方法为:dnf install network-scripts,不过官方已明确在下一个大版本中,将彻底放弃network.service,不建议继续使用network.service管理网络。

图形工具:nm-connection-editor

字符配置tui工具:

  • nmtui
  • nmtui-connect
  • nmtui-edit
  • nmtui-hostname

命令行工具:nmcli

以上工具都依赖NetworkManager服务,此服务是管理和监控网络设备的守护进程

nmcli命令

nmcli命令相关术语

  • 设备即网络接口
  • 连接是对网络接口的配置,一个网络接口可有多个连接配置,但同时只有一个连接配置生效

格式:

nmcli [ OPTIONS ] OBJECT { COMMAND | help }
    device - show and manage network interfaces
    nmcli device help
    connection - start,stop,and manage network connections
    nmcli connection help

修改lIP地址等属性:

nmcli connection modify IFACE [+/-]setting.property value
setting.property: ipv4.addresses ipv4.gateway ipv4.dns1 ipv4.method manual|auto

修改配置文件执行生效:

nmcli con re1oad
nmcli con up con-name
nmcli con mod 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 172.16.0.200 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=etho
connection.interface-name eth0 DEVICE=eth0
802-3-ethernet.mac-address . . . HWADDR=...

例:

# 查看帮助
nmcli con add help
# 使用nmcli配置网络
nmcli con show
# 显示所有活动连接
nmcli con show --active
# 显示网络连接配置
nmcli con show "System eth0"
# 显示设备状态
nmcli dev status
# 显示网络接口属性
nmcli dev show eth0
# 常见新连接default,IP自动通过dhcp获取
nmcli con add con-name default type Ethernet ifname eht0
# 删除连接
nmcli con del default
# 创建新连接static ,指定静态IP,不自动连接
nmcli con add con-name static ifname eth0 autoconnect no type Ethernet ipv4.addresses 172.25.X.10/24 ipv4.gateway 172.25.x.254
# 启用static连接配置
nmcli con up static
# 启用default连接配置
nmcli con up default
# 修改连接设置
nmcli con mod "static" connection.autoconnect no
nmcli con mod "static" ipv4.dns 172.25.x.254
nmcli con mod "static" +ipv4.dns 8.8.8.8
nmcli con mod "static" -ipv4.dns 8.8.8.8
nmcli con mod "static" ipv4.addresses "172.16.X.10/24 172.16.x.254"
nmcli con mod "static" +ipv4.addresses 10.10.10.10/16
# DNS设置存放在/etc/resolv.conf,PEERDNS=no表示当IP通过dhcp自动获取时,dns仍是手动设置,不自动获取等价于下面命令
nmcli con mod "system etho" ipv4.ignore-auto-dns yes

2.5.1 使用nmcli实现bonding

#添加bonding接口
nmcli con add type bond con-name mybond0 ifname bond0 mode active-backup
#添加从属接口
nmcli con add type bond-slave ifname ens7 master bond0
nmcli con add type bond-s1ave ifname ens3 master bond0
#注:如无为从属接口提供连接名,则该名称是接口名称加类型构成
#要启动绑定,则必须首先启动从属接口
nmcli con up bond-slave-eth0
nmcli con up bond-slave-eth1
#启动绑定
nmcli con up mybond0