linux网络配置

网络配置

基本网络配置

将Linux主机接入到网络,需要配置网络相关设置

一般包括如下内容:

  • 主机名
  • IP/netmask
  • 路由:默认网关
  • DNS服务器

    主DNS服务器
    次DNS服务器
    第三个DNS服务器

CentOS 6 之前版本网卡名称

接口命名方式:CentOS 6
以太网:eth[0,1,2,…]
ppp:ppp[0,1,2,…]
网络接口识别并命名相关的udev配置文件:
/etc/udev/rules.d/70-persistent-net.rules
查看网卡:
dmesg |grep –i eth
ethtool -i eth0
卸载网卡驱动:
modprobe -r e1000
rmmod e1000
装载网卡驱动:
modprobe e1000

网络配置命令

网络配置方式
  • 静态指定:
    ifconfig, route, netstat
    ip: object {link, addr, route}, ss, tc
    system-config-network-tui,setup
    配置文件
  • 动态分配:DHCP: Dynamic Host Configuration Protocol
ifconfig命令
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/0

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

[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.0.0.0  broadcast 10.255.255.255
        inet6 fe80::20c:29ff:fe45:a8a1  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:45:a8:a1  txqueuelen 1000  (Ethernet)
        RX packets 813  bytes 75898 (74.1 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 563  bytes 76262 (74.4 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:45:a8:a1  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 2  bytes 140 (140.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 2  bytes 140 (140.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.0.0.0  broadcast 10.255.255.255
        inet6 fe80::20c:29ff:fe45:a8a1  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:45:a8:a1  txqueuelen 1000  (Ethernet)
        RX packets 864  bytes 80572 (78.6 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 601  bytes 81681 (79.7 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 2  bytes 140 (140.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 2  bytes 140 (140.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   673005      0      0 0        672688      0      0      0 BMRU
lo              65536       70      0      0 0            70      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   673011      0      0 0        672694      0      0      0 BMRU
route命令

路由表管理命令

路由表主要构成:

  • Destination: 目标网络ID,表示可以到达的目标网络ID,0.0.0.0/0 表示所有未知网络,又称为默认路由,优先级最低
  • Genmask:目标网络对应的netmask
  • Iface: 到达对应网络,应该从当前主机哪个网卡发送出来
  • Gateway: 到达非直连的网络,将数据发送到临近(下一个)路由器的临近本主机的接口的IP地址,如果是直连网络,gateway是0.0.0.0
  • Metric: 开销cost,值越小,路由记录的优先级最高

查看路由表:

route
route -n

范例:

[root@centos8 ~]#route 
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         _gateway        0.0.0.0         UG    100    0        0 eth0
10.0.0.0        0.0.0.0         255.255.255.0   U     100    0        0 eth0
[root@centos8 ~]#route  -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.0.0.2        0.0.0.0         UG    100    0        0 eth0
10.0.0.0        0.0.0.0         255.255.255.0   U     100    0        0 eth0

添加:route add

route add  [-net|-host|default]  target [netmask Nm] [gw GW] [[dev] If]

删除:route del

route del [-net|-host] target [gw Gw] [netmask Nm] [[dev] If]

范例:

#目标:192.168.1.3  网关:172.16.0.1
route add -host 192.168.1.3 gw 172.16.0.1 dev eth0

#目标:192.168.0.0 网关:172.16.0.1
route add -net 192.168.0.0 netmask 255.255.255.0 gw 172.16.0.1 dev eth0
route add -net 192.168.0.0/24 gw 172.16.0.1 dev eth0
route add  -net 192.168.8.0/24 dev eth1 metric 200

#默认路由,网关:172.16.0.1
route add -net 0.0.0.0 netmask 0.0.0.0 gw 172.16.0.1
route add default gw 172.16.0.1

#目标:192.168.1.3  网关:172.16.0.1
route del -host 192.168.1.3

#目标:192.168.0.0 网关:172.16.0.1
route del -net 192.168.0.0 netmask 255.255.255.0

范例:实现静态路由

环境:

四台主机:
A主机:eth0 NAT模式
R1主机:eth0 NAT模式,eth1 仅主机模式
R2主机:eth0 桥接模式,eth1 仅主机模式
B主机:eth0 桥接模式

linux网络配置插图

#配置A主机
ifconfig eth0 10.0.0.123/8
route add -net 10.0.0.0/8 dev eth0
route add default gw 10.0.0.200 dev eth0

#配置R1
ifconfig eth0 10.0.0.200/8
ifconfig eth1 192.168.0.200/24
route add -net 10.0.0.0/8 dev eth0
route add -net 192.168.0.0/24 dev eth1
route add -net 172.16.0.0/16 gw 192.168.0.201 dev eth1 
echo 1 > /proc/sys/net/ipv4/ip_forward 

#配置R2
ifconfig eth0 172.16.0.200/16
ifconfig eth1 192.168.0.201/24
route add -net 192.168.0.0/24 dev eth1
route add -net 172.16.0.0/16 dev eth0
route add -net 10.0.0.0/8 gw 10.0.0.200 dev eth1 
echo 1 > /proc/sys/net/ipv4/ip_forward 

#配置B
ifconfig eth0 172.16.0.123/16
route add -net 172.16.0.0/16 dev eth0
route add default gw 172.16.0.200 dev eth0
配置动态路由

通过守护进程获取动态路由
安装quagga包,通过命令vtysh配置
支持多种路由协议:RIP、OSPF和BGP

netstat命令

显示网络连接:

netstat [--tcp|-t] [--udp|-u] [--raw|-w] [--listening|-l] [--all|-a] [--numeric|-n] [--extend|-e[--extend|-e]]  [--program|-p]

常用选项

-t: tcp协议相关
-u: udp协议相关
-w: raw socket相关
-l: 处于监听状态
-a: 所有状态
-n: 以数字显示IP和端口
-e:扩展格式
-p: 显示相关进程及PID

常用组合:

-tan, -uan, -tnl, -unl

显示路由表:

netstat  {--route|-r} [--numeric|-n]
-r: 显示内核路由表
-n: 数字格式
显示接口统计数据
netstat  {--interfaces|-I|-i} [iface] [--all|-a] [--extend|-e] [--program|-p] [--numeric|-n] 
netstat -i
netstat –I=IFACE
ifconfig -s IFACE

范例:

[root@centos8 ~]#netstat -Ieth0
Kernel Interface table
Iface             MTU    RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0             1500     4660      0      0 0          2460      0      0      0 BMRU
[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     4745      0      0 0          2518      0      0      0 BMRU
[root@centos8 ~]#netstat -nt
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0     52 10.0.0.8:22             10.0.0.1:4927           ESTABLISHED
ip命令

来自于iproute包,代替ifconfig

配置Linux网络属性
ip [ OPTIONS ] OBJECT { COMMAND | help }

ip 命令说明:

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

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 eth1 down

#网卡改名
ip link set eth1 name wangnet  

#启用网卡
ip link set wangnet up

#网卡别名
ip addr add 172.16.100.100/16 dev eth0 label eth0:0
ip addr del 172.16.100.100/16 dev eth0 label eth0:0

#清除网络地址
ip addr flush dev eth0 
管理路由

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 eth0
ss 命令

netstat 通过遍历 /proc来获取 socket信息,ss 使用 netlink与内核 tcp_diag 模块通信获取 socket 信息

格式:

ss [OPTION]... [FILTER]

选项:

-t: tcp协议相关
-u: udp协议相关
-w: 裸套接字相关
-x:unix sock相关
-l: listen状态的连接
-a: 所有
-n: 数字格式
-p: 相关的程序及PID
-e: 扩展的信息
-m:内存用量
-o:计时器信息

格式说明

FILTER :  [ state TCP-STATE ] [ EXPRESSION ]
TCP的常见状态:
    tcp finite state machine:
        LISTEN: 监听
        ESTABLISHED:已建立的连接
        FIN_WAIT_1
        FIN_WAIT_2
        SYN_SENT
        SYN_RECV
        CLOSED
EXPRESSION:
    dport = 
    sport = 

常用组合:

-tan, -tanl, -tanlp, -uan

范例:常见用法

#显示本地打开的所有端口
ss -l 

#显示每个进程具体打开的socket
ss -pl 

#显示所有tcp socket
ss -t -a 

#显示所有的UDP Socekt
ss -u -a 

#显示所有已建立的ssh连接
ss -o state established '( dport = :ssh or sport = :ssh )' 

#显示所有已建立的HTTP连接
ss -o state established '( dport = :http or sport = :http )' 
[root@centos8 ~]#ss -no state established '( dport = :21 or sport = :21 )' 
Netid               Recv-Q                Send-Q                                    Local Address:Port                                    Peer Address:Port                 
tcp                 0                     0                                     [::ffff:10.0.0.8]:21                                 [::ffff:10.0.0.7]:46638                 timer:(keepalive,119min,0)

#列出当前socket详细信息
ss -s 

网络配置文件

网络基本配置文件

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

/etc/sysconfig/network-scripts/ifcfg-IFACE

说明参考:

/usr/share/doc/initcripts-*/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将允许dhcp server分配的dns服务器信息直接覆盖至/etc/resolv.conf文件,NO不允许修改resolv.conf
NM_CONTROLLED NM是NetworkManager的简写,此网卡是否接受NM控制
配置当前主机的主机名
#centos6 之前版本
/etc/sysconfig/network
HOSTNAME=

#centos7 以后版
/etc/hostname 
HOSTNAME
本地主机名数据库和IP地址的映射

优先于使用DNS前检查
getent hosts 查看/etc/hosts 内容

/etc/hosts
DNS域名解析
/etc/resolv.conf
nameserver DNS_SERVER_IP1
nameserver DNS_SERVER_IP2
nameserver DNS_SERVER_IP3
search DOMAIN
修改 /etc/hosts和DNS的优先级
/etc/nsswitch.conf 
hosts:  files dns
路由相关的配置文件:
/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

网卡别名

将多个IP地址绑定到一个NIC上

每个IP绑定到独立逻辑网卡,即网络别名,命名格式: ethX:Y,如:eth0:1 、eth0:2、eth0:3

范例:ifconfig命令

ifconfig eth0:0 192.168.1.100/24 up 
ifconfig eth0:0 down

范例:ip命令

ip addr add 172.16.1.1/16 dev eth0
ip addr add 172.16.1.2/16 dev eth0 label eth0:0
ip addr del 172.16.1.2/16 dev eth0 label eth0:0
ip addr flush dev eth0 label eth0:0

为每个设备别名生成独立的接口配置文件,格式为:ifcfg-ethX:xxx

范例:

[root@centos8 ~]#cat /etc/sysconfig/network-scripts/ifcfg-eth0:1
DEVICE=eth0:1
IPADDR=10.0.0.100
PREFIX=8

[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:fe09:f5b  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:09:0f:5b  txqueuelen 1000  (Ethernet)
        RX packets 2320  bytes 200266 (195.5 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1891  bytes 279736 (273.1 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eth0:1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.0.0.100  netmask 255.0.0.0  broadcast 10.255.255.255
        ether 00:0c:29:09:0f:5b  txqueuelen 1000  (Ethernet)

注意:

  • 建议 CentOS 6 关闭 NetworkManager 服务
  • 网卡别名必须使用静态联网

多网卡 bonding

将多块网卡绑定同一IP地址对外提供服务,可以实现高可用或者负载均衡。直接给两块网卡设置同一IP地址是不可以的。通过bonding,虚拟一块网卡对外提供连接,物理网卡的被修改为相同的MAC地址

Bonding工作模式

共7种模式:0-6 Mode

  • Mode 0 (balance-rr): 轮询(Round-robin)策略,从头到尾顺序的在每一个slave接口上面发送数据包。本模式提供负载均衡和容错的能力
  • Mode 1 (active-backup): 活动-备份(主备)策略,只有一个slave被激活,当且仅当活动的slave接口失败时才会激活其他slave.为了避免交换机发生混乱此时绑定的MAC地址只有一个外部端口上可见
  • Mode 3 (broadcast):广播策略,在所有的slave接口上传送所有的报文,提供容错能力

说明:

active-backup、balance-tlb 和 balance-alb 模式不需要交换机的任何特殊配置。其他绑定模式需要配置交换机以便整合链接。如:Cisco 交换机需要在模式 0、2 和 3 中使用 EtherChannel,但在模式4中需要 LACP和 EtherChannel

Bonding配置

详细帮助:

/usr/share/doc/kernel-doc- version/Documentation/networking/bonding.txt
https://www.kernel.org/doc/Documentation/networking/bonding.txt

创建bonding设备的配置文件

/etc/sysconfig/network-scripts/ifcfg-bond0
TYPE=bond
DEVICE=bond0
BOOTPROTO=none
IPADDR=10.0.0.100
PREFIX=8
#miimon指定链路监测时间间隔。如果miimon=100,那么系统每100ms 监测一次链路连接状态,如果有一条线路不通就转入另一条线路
BONDING_OPTS="mode=1 miimon=100"

/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=none
MASTER=bond0
SLAVE=yes
ONBOOT=yes

/etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
BOOTPROTO=none
MASTER=bond0
SLAVE=yes
ONBOOT=yes

查看bond0状态:

/proc/net/bonding/bond0

删除bond0

ifconfig bond0 down
rmmod bonding

CentOS 7 以上版网络配置

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

网卡命名机制

systemd对网络设备的命名方式

  1. 如果Firmware或BIOS为主板上集成的设备提供的索引信息可用,且可预测则根据此索引进行命名,如:eno1
  2. 如果Firmware或BIOS为PCI-E扩展槽所提供的索引信息可用,且可预测,则根据此索引进行命名,如:ens1
  3. 如果硬件接口的物理位置信息可用,则根据此信息命名,如:enp2s0
  4. 如果用户显式启动,也可根据MAC地址进行命名,如:enx2387a1dc56
  5. 上述均不可用时,则使用传统命名机制

基于BIOS支持启用biosdevname软件

内置网卡:em1,em2  
pci卡:pYpX    Y:slot ,X:port 

网卡组成格式

en: Ethernet 有线局域网
wl: wlan 无线局域网
ww: wwan无线广域网
o<index>: 集成设备的设备索引号
s<slot>: 扩展槽的索引号
x<MAC>: 基于MAC地址的命名
p<bus>s<slot>: enp2s1

使用传统命名方式:
(1) 编辑/etc/default/grub配置文件

GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"

(2) 为grub2生成其配置文件

grub2-mkconfig -o /etc/grub2.cfg

(3) 重启系统

主机名

配置文件:

/etc/hostname 

默认没有此文件,通过DNS反向解析获取主机名,主机名默认为:localhost.localdomain

设置主机名

hostnamectl set-hostname centos7.magedu.com

删除文件/etc/hostname,恢复主机名localhost.localdomain

显示主机名信息

hostname
hostnamectl status
网络配置工具nmcli

图形工具:nm-connection-editor

字符配置tui工具:

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

命令行工具:nmcli

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

nmcli命令

参考文档:https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/configuring_and_managing_networking/configuring-networking-with-nmcli_configuring-and-managing-networking

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

修改IP地址等属性:

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

修改配置文件执行生效:

nmcli con reload
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=eth0
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 eth0

#删除连接
nmcli con del default

#创建新连接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

#启用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 eth0” ipv4.ignore-auto-dns yes
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-slave ifname ens3 master bond0
#注:如无为从属接口提供连接名,则该名称是接口名称加类型构成

#要启动绑定,则必须首先启动从属接口
nmcli con up bond-slave-eth0
nmcli con up bond-slave-eth1

#启动绑定
nmcli con up mybond0
网络组Network Teaming

网络组:是将多个网卡聚合在一起方法,从而实现冗错和提高吞吐量
网络组不同于旧版中bonding技术,提供更好的性能和扩展性
网络组由内核驱动和teamd守护进程实现

多种方式 runner

  • broadcast
  • roundrobin
  • activebackup
  • loadbalance
  • lacp (implements the 802.3ad Link Aggregation Control Protocol)

网络组特点

  • 启动网络组接口不会自动启动网络组中的port接口
  • 启动网络组接口中的port接口总会自动启动网络组接口
  • 禁用网络组接口会自动禁用网络组中的port接口
  • 没有port接口的网络组接口可以启动静态IP连接
  • 启用DHCP连接时,没有port接口的网络组会等待port接口的加入
#创建网络组接口
nmcli con add type team con-name CNAME ifname INAME [config JSON]

CNAME 连接名
INAME 接口名 
JSON 指定runner方式,格式:'{"runner": {"name": "METHOD"}}'
METHOD 可以是broadcast, roundrobin, activebackup, loadbalance, lacp

#创建port接口
nmcli con add type team-slave con-name CNAME ifname INAME master TEAM

CNAME   连接名,连接名若不指定,默认为team-slave-IFACE
INAME   网络接口名
TEAM    网络组接口名 

#断开和启动
nmcli dev dis INAME
nmcli con up CNAME

INAME  设备名 CNAME 网络组接口名或port接口

网络组示例

nmcli con add type team con-name myteam0 ifname team0 config '{"runner": {"name": "loadbalance"}}' ipv4.addresses 192.168.1.100/24 ipv4.method manual
nmcli con add con-name team0-eth1 type team-slave ifname eth1 master team0
nmcli con add con-name team0-eth2 type team-slave ifname eth2 master team0
nmcli con up myteam0
nmcli con up team0-eth1
nmcli con up team0-eth2

teamdctl team0 state
ping -I team0 192.168.0.254
nmcli dev dis eth1
teamdctl team0 state
nmcli con up team0-port1
nmcli dev dis eth2
teamdctl team0 state
nmcli con up team0-port2
teamdctl team0 state

管理网络组配置文件

/etc/sysconfig/network-scripts/ifcfg-team0
DEVICE=team0
DEVICETYPE=Team
TEAM_CONFIG="{/"runner/": {/"name/": /"broadcast/"}}"
BOOTPROTO=none
IPADDR0=172.16.0.100
PREFIX0=24
NAME=team0
ONBOOT=yes

管理网络组配置文件

/etc/sysconfig/network-scripts/ifcfg-team0-eth1
DEVICE=eth1
DEVICETYPE=TeamPort
TEAM_MASTER=team0
NAME=team0-eth1
ONBOOT=yes

删除网络组

nmcli connection down team0
teamdctl team0 state
nmcli connection show
nmcli connectioni delete team0-eth0
nmcli connectioni delete team0-eth1
nmcli connection show

网桥

桥接原理

桥接:把一台机器上的若干个网络接口“连接”起来。其结果是,其中一个网口收到的报文会被复制给其他网口并发送出去。以使得网口之间的报文能够互相转发。网桥就是这样一个设备,它有若干个网口,并且这些网口是桥接起来的。与网桥相连的主机就能通过交换机的报文转发而互相通信。

linux网络配置插图(1)

主机A发送的报文被送到交换机S1的eth0口,由于eth0与eth1、eth2桥接在一起,故而报文被复制到eth1和eth2,并且发送出去,然后被主机B和交换机S2接收到。而S2又会将报文转发给主机C、D

配置实现网桥

工具包:bridge-utils,目前CentOS 8无此包

yum install bridge-utils

#查看网桥       
brctl  show

#查看CAM(content addressable  memory内容可寻址存储器)表    
brctl  showmacs br0

#添加和删除网桥        
brctl addbr | delbr br0 

#添加和删除网桥中网卡     
brctl addif | delif br0 eth0

#默认br0 是down,必须启用
ifconfig br0 up 

注意:NetworkManager只支持以太网接口接口连接到网桥,不支持聚合接口

nmcli命令创建软件网桥

nmcli con add con-name mybr0 type bridge ifname br0
nmcli con modify mybr0 ipv4.addresses 192.168.0.100/24 ipv4.method manual
nmcli con add con-name br0-port0 type bridge-slave  ifname eth0 master br0

查看配置文件

cat  /etc/sysconfig/network-scripts/ifcfg-br0
cat  /etc/sysconfig/network-scripts/ifcfg-br0-port0

范例:

#1创建网桥
nmcli con add type bridge con-name br0 ifname br0
nmcli connection modify br0 ipv4.addresses 192.168.0.100/24 ipv4.method manual
nmcli con up br0

#2加入物理网卡
nmcli  con add type bridge-slave con-name br0-port0 ifname eth0 master br0
nmcli  con add type bridge-slave con-name br0-port1 ifname eth1 master br0
nmcli  con up br0-port0
nmcli  con up br0-port1

#3查看网桥配置文件
cat  /etc/sysconfig/network-scripts/ifcfg-br0
DEVICE=br0
STP=yes
TYPE=Bridge
BOOTPROTO=static
IPADDR=192.168.0.100
PREFIX=24

cat /etc/sysconfig/network-scripts/ifcfg-br0-port0
TYPE=Ethernet
NAME=br0-port0
DEVICE=eth0
ONBOOT=yes
BRIDGE=br0
UUID=23f41d3b-b57c-4e26-9b17-d5f02dafd12d

#4安装管理软件包:
yum install bridge-utils
brctl show

#5删除br0
nmcli con down br0
rm /etc/sysconfig/network-scripts/ifcfg-br0*
nmcli con reload

网络测试诊断工具

  • 测试网络连通性
    ping
  • 显示正确的路由表
    ip route
  • 跟踪路由
    traceroute
    tracepath
    mtr
  • 确定名称服务器使用
    nslookup
    host
    dig
  • 抓包工具

    tcpdump

    wireshark

  • 安全扫描工具

    nmap

    netcat :网络界的瑞士军刀

  • 流量控制工具

    tc

    范例:

    tc qdisc add dev eth0 root netem loss 50%
    tc qdisc add dev eth0 root netem delay 1000ms
    tc qdisc show dev eth0
    tc qdisc del  

本文链接:http://www.yunweipai.com/33931.html

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/52429.html

(0)
上一篇 2021年8月6日
下一篇 2021年8月6日

相关推荐

发表回复

登录后才能评论