一个专业运维
技术分享网站!

CentOS7 安装远程桌面

Jack.Liu阅读(4)

yum 源使用是阿里的:https://opsx.alibaba.com/mirror?lang=zh-CN

rm -rf /etc/yum.repos.d/*
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

一、桌面环境

首先安装桌面环境,这里安装 GNOME。

yum -y groups install “GNOME Desktop”

关于桌面环境相关命令

# 从命令行切换到桌面环境
startx

# 获取当前启动模式
systemctl get-default

# 修改启动模式为图形化
systemctl set-default graphical.target

# 修改启动模式为命令行
systemctl set-default multi-user.target

默认启动桌面环境后以 root 用户自动登录

# 修改配置文件
vi /etc/gdm/custom.conf
# 增加如下配置
AutomaticLoginEnable=True AutomaticLogin=root

二、远程服务设置

# Windows 远程登录需要安装 Xrdp,需要 epel 源
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum install -y xrdp

# Xrdp 会调用 VNC,安装 tigervnc-server
yum install -y tigervnc-server

# 修改 Xrdp 最大连接数
vim /etc/xrdp/xrdp.ini
max_bpp=32

# 启动 Xrdp 并设置开机启动
systemctl start xrdp
systemctl enable xrdp

# 开放 3389 端口,或者关闭防火墙
firewall-cmd --permanent --zone=public --add-port=3389/tcp
firewall-cmd --reload
# 关闭防火墙
systemctl stop firewalld
# 禁止防火墙开机启动
systemctl disable firewalld

打开 Windows 的远程桌面

输入系统用户名密码即可连接

三、VNC 登录设置

用 VNC 客户端连接登录还需做一些设置

VNC 客户端下载:https://www.realvnc.com/en/connect/download/viewer/

# 为当前用户设置 VNC 密码,不然服务无法启动。此密码和系统密码不一样,这是使用 vnc viewer 登陆时使用的密码
vncpasswd

# 复制服务设置的模板
cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:1.service
# 修改配置,以 root 用户为例,每个用户都需要单独设置
vim /etc/systemd/system/vncserver@\:1.service

# 将 <USER> 换成用户名,[Service] 下增加 User=root
[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target

[Service]
Type=forking
User=root

# Clean any existing files in /tmp/.X11-unix environment
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'
ExecStart=/usr/sbin/runuser -l root -c "/usr/bin/vncserver %i"
PIDFile=/root/.vnc/%H%i.pid
ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :'

[Install]
WantedBy=multi-user.target



# 让服务文件修改生效
systemctl daemon-reload

# 启动服务
systemctl start vncserver@:1
# 设为开机启动
systemctl enable vncserver@:1

# 查看服务端口,用于客户端连接地址
netstat -lnpt|grep Xvnc

# 放行连接端口,每个用户端口不同。也可直接关闭防火墙
firewall-cmd --add-port=5901/tcp --permanent
firewall-cmd --reload

输入地址加端口

输入密码即可连接

Centos K8s安装与部署

Jack.Liu阅读(6)

环境

系统 : Amazon Linux
node-cidr: 10.0.0.0/24
service-cidr: 10.96.0.0/12
pod-cidr: 10.244.0.0/16
cluster: 一台master 两台node

① · K8s镜像仓库

cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
setenforce 0
systemctl enable kubelet && systemctl start kubelet

② · 安装docker、kubelet、kubeadm、kubecli。

yum install kubectl kubeadm kubecli -y --nogpgcheck
yum install docker -y

③ · 配置部署docker

启动docker之前先添加一个环境变量(国内加速器,如VPs在国外不需要添加此变量)

vim /usr/lib/systemd/docker.service
##添加    Environment="HTTPS_PROXY=http://www.ik8s.io:10080"
##添加    Environment="NO_PROXY=127.0.0.0/8,172.20.0.0/16"

更改完使用

##重载docker文件
systemctl daemon-reload
##检查docker配置是否成功
docker info     

④ · 配置iptables

##检查下面两个文件内容是否为 “1”
/proc/sys/net/bridge/bridge-nf-call-iptables
/pron/sys/net/bridge/brideg-nf-call-ip6tables

⑤ · 初始化kubeadm

5.1 查看kubelet配置文件路径

rpm -ql kubelet
vim /etc/sysconfig/kubelet
##开启swap可能会导致报错,所以此处增加额外参数,屏蔽swap错误信息。
##内容改为  KUBELET_EXTRA_ARGS="--fail-swap-on=false"

5.2 初始化kubelet

kubeadm init --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12 --ignore-preflight-errors=Swap
##也可添加 --kubernetes-version=v1.xx  指定特定的k8s版本信息

5.3.1 完成初始化——-如果未成功

如果kubeadm init未成功,如可能由于docker未启动成功,可使用重置命令

kubeadm reset   

5.3.2 完成初始化—启动成功

##启动成功后,根据最后面的提示完成最后一步
mkdir ~/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
##安装flannel网络
##安装的过程中会需要一些时间拉去镜像 使用  docker image ls  查看flannel镜像就绪后即可
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

##并将成功后提示的秘钥复制到已经完成安装部署的其他NODE节点上完成加入集群

5.4 查看master和node就绪情况,当你看到如下信息,k8s集群配置就成功啦

CentOS7 Nginx安装

Jack.Liu阅读(12)

1.安装Nginx所需依赖

yum -y install make zlib zlib-devel gcc-c++ libtool  openssl openssl-devel

2.首先要安装 PCRE

wget http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz

3.解压PCRE 安装 编译

#解压
tar zxvf pcre-8.35.tar.gz
#进入解压后Pcre的目录
cd pcre-8.35
#执行 
./configure
#再执行  
make && make install
#查询版本,有版本号 就是安装成功
pcre-config --version

4.下载nginx

wget http://nginx.org/download/nginx-1.16.1.tar.gz

5.解压后进入nginx编译安装

./configure --prefix=/software/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=/software/pcre-8.35

6.执行 make && make install

7.在主配置文件中引入子配置文件

8.修改子配置文件gogs.conf

  listen 443 ssl;

#星号替换自己的域名
    server_name www.*.com;
#星号位置替换自己的ssl 文件名
    ssl_certificate  /ssl/*.pem;
    ssl_certificate_key /ssl/*.key;
    ssl_session_timeout 5m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    location / {
      proxy_pass http://localhost:8080;
    }
}
server {
    listen 80;
#星号替换自己的域名
    server_name www.*.com;
    rewrite ^(.*)$ https://www.*.com:443/$1 permanent;
}

9.进入nginx安装目录下sbin 文件夹执行 ./nginx -t 检测配置文件,如果有错,根据报错信息修改如果没有错,则执行./nginx 启动 nignx

10.设置开机启动,在系统服务目录里创建nginx.service文件

vim /lib/systemd/system/nginx.service

拷贝一下内容进去 (重点!!!!)拷贝一下代码记得修改代码中启动文件的位置,和nginx配置文件位置

[Unit]

Description=nginx

After=network.target

  

[Service]

Type=forking

ExecStart=/software/nginx/sbin/nginx

ExecReload=/software/nginx/sbin/nginx -s reload

ExecStop=/software/nginx/sbin/nginx -s quit

PrivateTmp=true

  

[Install]

WantedBy=multi-user.target

11.设置开机启动

启动nginx服务
systemctl start nginx.service 

设置开机自启动

systemctl enable nginx.service

停止开机自启动

systemctl disable nginx.service

查看服务当前状态

systemctl status nginx.service

重新启动服务

systemctl restart nginx.service 

查看所有已启动的服务
systemctl list-units --type=service

CentOS电源管理关闭笔记本合盖睡眠待机

Jack.Liu阅读(18)

充分利用计算资源,将家里的老HP6325的笔记本装成了Linux CentOS 7.0准备做成远程控制的下载机。碰到一个问题就是CentOS 7.0电源管理默认将笔记本合上就睡眠待机了,FTP、SSH都访问不了了,除非人工唤醒或远程通过网络唤醒。这就意味着笔记本永远都不能合上盖子。。。

有没有办法像window一样的通过电源管理来取消将笔记本合上就睡眠待机呢?

Linux这么牛X的操作系统当然具备这样的能力。

可以通过 /etc/systemd 能够定义的电源管理

动作包括:
HandlePowerKey:按下电源键后的动作
HandleSleepKey:按下挂起键后的动作
HandleHibernateKey: 按下休眠键后的动作
HandleLidSwitch:合上笔记本盖后待机

这些动作的值可以是
ignore(什么都不做)
poweroff(关机)
reboot(重新启动)
halt(关机,和poweroff有什么区别,需要手动断开电源?)
suspend(待机挂起)
hibernate(休眠)
默认情况是,当我合上笔记本屏幕的时候,系统会待机。
如果我不想让系统在我合上笔记本的时候待机,怎么办呢?

用vi编辑器打开 /etc/systemd/logind.conf

去掉HandleLidSwitch前面的注释符号#,并把它的值从suspend修改为ignore。
[Login]

NAutoVTs=6
ReserveVT=6
KillUserProcesses=no
KillOnlyUsers=
KillExcludeUsers=root
InhibitDelayMaxSec=5
HandlePowerKey=poweroff
HandleSuspendKey=suspend
HandleHibernateKey=hibernate

HandleLidSwitch=ignore

HandleLidSwitchDocked=ignore
PowerKeyIgnoreInhibited=no
SuspendKeyIgnoreInhibited=no
HibernateKeyIgnoreInhibited=no
LidSwitchIgnoreInhibited=yes
IdleAction=ignore
IdleActionSec=30min
RuntimeDirectorySize=10%
RemoveIPC=no

~                  

然后systemctl restart systemd-logind,使更改生效。再合上笔记本盖子,也不会待机了。

curl与wget高级用法

Jack.Liu阅读(18)

curl(文件传输工具)

常用参数如下:

使用示例:
例1:抓取页面到指定文件,如果有乱码可以使用iconv转码

12# curl -o baidu.html www.baidu.com# curl –s –o baidu.html www.baidu.com |iconv -f utf-8 #减少输出信息

例2:模拟浏览器头(user-agent)

1# curl -A “Mozilla/4.0 (compatible;MSIE 6.0; Windows NT 5.0)” www.baidu.com

例3:处理重定向页面

1# curl –L http://192.168.1.100/301.php #默认curl是不处理重定向

例4:模拟用户登陆,保存cookie信息到cookies.txt文件,再使用cookie登陆

12# curl -c ./cookies.txt -F NAME=user -F PWD=***URL #NAME和PWD是表单属性不同,每个网站基本都不同# curl -b ./cookies.txt –o URL

例5:获取HTTP响应头headers

12# curl -I http://www.baidu.com# curl -D ./header.txt http://www.baidu.com #将headers保存到文件中

例6:访问HTTP认证页面

1# curl –u user:pass URL

例7:通过ftp上传和下载文件

12# curl -T filename ftp://user:pass@ip/docs #上传# curl -O ftp://user:pass@ip/filename #下载

wget(文件下载工具)

常用参数如下:

使用示例:
例1:下载单个文件到当前目录下,也可以-P指定下载目录

1# wgethttp://nginx.org/download/nginx-1.8.0.tar.gz

例2:对于网络不稳定的用户可以使用-c和–tries参数,保证下载完成

1# wget –tries=20 -c http://nginx.org/download/nginx-1.8.0.tar.gz

例3:下载大的文件时,我们可以放到后台去下载,这时会生成wget-log文件来保存下载进度

1# wget -b http://nginx.org/download/nginx-1.8.0.tar.gz

例4:可以利用—spider参数判断网址是否有效

1# wget –spider http://nginx.org/download/nginx-1.8.0.tar.gz

例5:自动从多个链接下载文件

1234# cat url_list.txt #先创建一个URL文件http://nginx.org/download/nginx-1.8.0.tar.gzhttp://nginx.org/download/nginx-1.6.3.tar.gz# wget -i url_list.txt

例6:限制下载速度

1# wget –limit-rate=1m http://nginx.org/download/nginx-1.8.0.tar.gz

例7:登陆ftp下载文件

1# wget –ftp-user=user –ftp-password=pass ftp://ip/filenam

KVM环境下创建虚拟机

Jack.Liu阅读(15)

之前文章有写了篇《CentOS 7下如何配置KVM虚拟化环境》,环境配置好了,接下去就可以创建虚拟机使用了,在KVM环境上创建虚拟机有两种方式:qcow2镜像和ISO镜像

0x01  使用qcow2镜像

如果有现成的qcow2镜像,则可以通过修改XML文件->《vps.xml》快速创建虚拟机
需要修改的地方:

1、Name\memory\vcpu,根据实际情况修改

KVM环境下创建虚拟机

2、source file替换成qcow2所在目录

KVM环境下创建虚拟机

3、如果使用br0桥接的方式,这边就不需要更改

KVM环境下创建虚拟机

4、VNC的配置,创建好后就可以通过vnc访问6205端口即可

KVM环境下创建虚拟机

5、加载虚拟机

$ virsh define vps.xml

6、查看虚拟机

$ virsh list --all 查看虚拟机是否有加载上

7、启动虚拟机

$ virsh start vps

0x02  使用ISO镜像

如果只有ISO镜像,则不能通过上述的加载xml文件创建虚拟机

1、创建硬盘(创建一个名为VPS.qcow2,大小为20G的硬盘)

$ qemu-img create -f qcow2 /opt/VPS.qcow2 20G

2、安装系统

命令中的参数根据实际情况修改

virt-install \ --virt-type kvm \ --name VPS \ --ram 2048 \ --cdrom=/opt/images/CentOS-7.1_x86_64.iso \ --disk /opt/VPS.qcow2 \ --network network=default \ --graphics vnc,listen=0.0.0.0,port=6205 \ --os-variant=linux

命令运行后,即可通过vnc连接6205端口进行安装

0x03  添加网卡

给一台运行中的虚拟机添加网卡

1、停止虚拟机

$ virsh destroy VPS

2、取消加载虚拟机

$ virsh undefine VPS

3、修改xml文件,需要几块网卡就添加几个interface,需要修改的地方有source bridge和function

KVM环境下创建虚拟机

4、加载虚拟机

$ virsh define VPS.xml

5、启动虚拟机

$ virsh start VPS

0x04  添加硬盘

给一台运行中的虚拟机添加硬盘

1、停止虚拟机

$ virsh destroy VPS

2、取消加载虚拟机

$ virsh undefine VPS

3、创建新硬盘

$ qemu-img create -f qcow2 /opt/VPS1.qcow2 20G   ##20G为创建硬盘大小

4、修改xml文件,需要几块硬盘就添加几个disk。需要修改的地方有source file和target dev

KVM环境下创建虚拟机

5、加载虚拟机

$ virsh define VPS.xml

6、启动虚拟机

$ virsh start VPS

CentOS 7下如何配置KVM虚拟化环境

Jack.Liu阅读(12)

KVM是一个开源的虚拟化模块,是基于硬件的完全虚拟化,所以需要硬件的支持。废话不多说,操作步骤如下:

0x01  硬件检测

$ egrep '(vmx|svm)' /proc/cpuinfo   ##检测CPU是否支持虚拟化

如果输出的结果包含vmx,则是Intel处理器虚拟机技术标志;如果包含SVM,则是AMD处理器虚拟机技术的标志;如果什么都没有,则需要在BISO中开启VT(Virtual Technolege)功能。

0x02 软件包安装

$ yum -y install kvm python-virtinst libvirt tunctl bridge-utils virt-manager qemu-kvm-tools virt-viewer qemu-kvm

安装完成后,检查kvm模块有没有加载上

$  lsmod |grep kvm   ##有输出类似下面结果则正常 kvm_intel 148081 0 kvm 461126 1 kvm_intel

0x03  创建网桥

1、创建br0文件

$ cp ifcfg-eth0 ifcfg-br0  ##如果管理IP配置再eth0,则这就复制一个br0即可

2、编辑br0

TYPE=Bridge BOOTPROTO=static DEFROUTE=yes PEERDNS=yes PEERROUTES=yes DEVICE=br0 ONBOOT=yes IPADDR=192.168.2.10 NETMASK=255.255.255.0 GATEWAY=192.168.2.1

3、编辑eth0

TYPE=Ethernet BOOTPROTO=none NM_CONTROLLED=no NAME=eth0 DEVICE=eth0 BRIDGE=br0 ONBOOT=yes

配置完成后重启下机器,查看下网桥状态

$ brctl show bridge name bridge id STP enabled interfaces br0 8000.90b11c5a7c89 no eth0 virbr0 8000.5254000908ac yes virbr0-nic

至此,KVM环境配置完成。可以创建虚拟机尽情玩耍了。

CentOS7 普通用户绕过root登录

persimmon_lz阅读(24)

正常环境中我们的服务器都会使用一个普通用户跳转到root进行操作,如果root用户的密码不记得只知道普通用户密码,设备又不方便进行开关机破密码时,我们就可以用到以下方法登陆设备。

pkexec :可以直接以root权限执行命令

       输入pkexec su –

        输入当前用户密码后,就可以登录root进行配置了。

当然这样后门大开是非常危险的操作,我们也可以关上这个后门

      vi /etc/polkit-1/rules.d/50-default.rules

      将unix-group:wheel改成unix-group:root

      再次使用普通用户测试发现需要输入的用户密码已经变为root

以上就是绕过root登陆并且加固的方法了

CentOS8的web终端-cockpit,通过Cockpit管理KVM虚拟机

Jack.Liu阅读(19)

概述


CentOS使用的web console是一个名为Cockpit的开源项目,它提供了对用户有好的web接口,允许用户远程管理服务,在CentOS8中对应的包已经在base库里面了。可以直接安装到操作系统,在非最小化安装的时候,会自动安装web控制台,并且自动打开控制台的防火墙端口

环境

安装

默认已经安装了,如果没有安装执行下面命令安装

1dnf install cockpit -y

启动

1systemctl  start cockpit 

默认情况下,虚拟机模块不包括在标准的Cockpit安装中。

然后,我们需要从cockpit-machines软件包开始安装一些其他软件包,该软件包可以从Web控制台管理虚拟机:

1yum install cockpit-machines -y

查看端口是否打开

1ss -nltp | grep 9090

登录

下一步是打开Web浏览器, cockpit使用9090端口,例如:

要访问cockpit Web控制台示例:https:// <host-ip>:9090

 使用根帐户或另一个用户帐户登录到Web控制台。

登录后,单击左侧菜单中的“虚拟机”选项。

网页输入 http://IP:9090 此处ip为服务器IP

登录成功之后就可以对服务器进行管理和监控等,比较方便

总结

cockpit在CentOS8非最小化安装默认会安装此开源软件,可以用来帮助用户管理操作系统。运维web化非常好的一个工具。

Linux双网卡绑定实现高可用

Jack.Liu阅读(17)

一、用bond方式
 (1)bond几种主要模式介绍
第一种模式:mod=0 ,即:(balance-rr) Round-robin policy(平衡抡循环策略)
特点:传输数据包顺序是依次传输(即:第1个包走eth0,下一个包就走eth1….一直循环下去,直到最后一个传输完毕),此模式提供负载平衡和容错能力;但是我们知道如果一个连接或者会话的数据包从不同的接口发出的话,中途再经过不同的链路,在客户端很有可能会出现数据包无序到达的问题,而无序到达的数据包需要重新要求被发送,这样网络的吞吐量就会下降

第二种模式:mod=1,即: (active-backup) Active-backup policy(主-备份策略)
特点:只有一个设备处于活动状态,当一个宕掉另一个马上由备份转换为主设备。mac地址是外部可见得,从外面看来,bond的MAC地址是唯一的,以避免switch(交换机)发生混乱。此模式只提供了容错能力;由此可见此算法的优点是可以提供高网络连接的可用性,但是它的资源利用率较低,只有一个接口处于工作状态,在有 N 个网络接口的情况下,资源利用率为1/N

第三种模式:mod=2,即:(balance-xor) XOR policy(平衡策略)
特点:基于指定的传输HASH策略传输数据包。缺省的策略是:(源MAC地址 XOR 目标MAC地址) % slave数量。其他的传输策略可以通过xmit_hash_policy选项指定,此模式提供负载平衡和容错能力

第四种模式:mod=3,即:broadcast(广播策略)
特点:在每个slave接口上传输每个数据包,此模式提供了容错能力

第五种模式:mod=4,即:(802.3ad) IEEE 802.3ad Dynamic link aggregation(IEEE 802.3ad 动态链接聚合)
特点:创建一个聚合组,它们共享同样的速率和双工设定。根据802.3ad规范将多个slave工作在同一个激活的聚合体下。
外出流量的slave选举是基于传输hash策略,该策略可以通过xmit_hash_policy选项从缺省的XOR策略改变到其他策略。需要注意的 是,并不是所有的传输策略都是802.3ad适应的,尤其考虑到在802.3ad标准43.2.4章节提及的包乱序问题。不同的实现可能会有不同的适应 性。
必要条件:
条件1:ethtool支持获取每个slave的速率和双工设定
条件2:switch(交换机)支持IEEE 802.3ad Dynamic link aggregation
条件3:大多数switch(交换机)需要经过特定配置才能支持802.3ad模式

第六种模式:mod=5,即:(balance-tlb) Adaptive transmit load balancing(适配器传输负载均衡)
特点:不需要任何特别的switch(交换机)支持的通道bonding。在每个slave上根据当前的负载(根据速度计算)分配外出流量。如果正在接受数据的slave出故障了,另一个slave接管失败的slave的MAC地址。
该模式的必要条件:ethtool支持获取每个slave的速率。

第七种模式:mod=6,即:(balance-alb) Adaptive load balancing(适配器适应性负载均衡)
特点:该模式包含了balance-tlb模式,同时加上针对IPV4流量的接收负载均衡(receive load balance, rlb),而且不需要任何switch(交换机)的支持。接收负载均衡是通过ARP协商实现的。bonding驱动截获本机发送的ARP应答,并把源硬件地址改写为bond中某个slave的唯一硬件地址,从而使得不同的对端使用不同的硬件地址进行通信。

二、配置bond
(1)实验环境
物理网口:eth0,eth1
绑定后虚拟口:bond0
IP地址:192.168.128.13
网关:192.168.128.2
掩码:255.255.255.0
DNS:202.96.128.166

(2)查看并加载bound

[root@localhost ~]# modprobe –first-time bonding
[root@localhost ~]# lsmod|grep bonding           

bonding               132885  0 

加载成功后,可以查看到bond0 端口

[root@localhost ~]# ip a
1: lo: mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:94:b5:29 brd ff:ff:ff:ff:ff:ff
    inet 192.168.128.13/24 brd 192.168.128.255 scope global eth0
    inet6 fe80::20c:29ff:fe94:b529/64 scope link 
       valid_lft forever preferred_lft forever
3: eth1: mtu 1500 qdisc noop state DOWN qlen 1000
    link/ether 00:0c:29:94:b5:33 brd ff:ff:ff:ff:ff:ff
4: bond0: mtu 1500 qdisc noop state DOWN 
    link/ether 66:51:2f:37:a2:31 brd ff:ff:ff:ff:ff:ff

(3)配置虚拟端口bound0

在/etc/sysconfig/network-scripts/目录下,创建ifcfg-bond0文件

vim /etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
BOOTPROTO=none
ONBOOT=yes
IPADDR=192.168.128.13
NETMASK=255.255.255.0
GATEWAY=192.168.128.2
DNS1=202.96.128.166

(4)配置物理网卡eth0,eth1

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

vi /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
BOOTPROTO=none
MASTER=bond0

SLAVE=yes

(5)修改modprobe相关设定文件

vim /etc/modprobe.d/bonding.conf
alias bond0 binding

options bond0 miimon=100 mode=0   //模式0,miimon是用来进行链路监测的,后面指定的是检查的间隔时间,单位是ms

(6)重启并测试

[root@localhost network-scripts]# ip a
1: lo: mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: mtu 1500 qdisc pfifo_fast master bond0 state UP qlen 1000
    link/ether 00:0c:29:94:b5:29 brd ff:ff:ff:ff:ff:ff
3: eth1: mtu 1500 qdisc pfifo_fast master bond0 state UP qlen 1000
    link/ether 00:0c:29:94:b5:29 brd ff:ff:ff:ff:ff:ff
4: bond0: mtu 1500 qdisc noqueue state UP 
    link/ether 00:0c:29:94:b5:29 brd ff:ff:ff:ff:ff:ff
    inet 192.168.128.13/24 brd 192.168.128.255 scope global bond0
    inet6 fe80::20c:29ff:fe94:b529/64 scope link tentative dadfailed 

       valid_lft forever preferred_lft forever

查看bonud工作状况:

[root@localhost bonding]# cat /proc/net/bonding/bond0 
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)
Bonding Mode: load balancing (round-robin)
MII Status: up
MII Polling Interval (ms): 200
Up Delay (ms): 0
Down Delay (ms): 0

Slave Interface: eth0
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 1
Permanent HW addr: 00:0c:29:94:b5:29
Slave queue ID: 0

Slave Interface: eth1
MII Status: down
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 1
Permanent HW addr: 00:0c:29:94:b5:33
Slave queue ID: 0