Category Archives: Tools

使用GPG进行加密和签名

GNU Privacy Guard (GnuPG or GPG)是一个GPL许可证的软件加密工具,和PGP比较类似。
与许多非对称加密方法一样,GPG和PGP使用一个密钥对——公钥和私钥——来加密数据。公钥可被广泛传播,甚至保存在公共密匙数据库中以被其他用户查阅。私钥属于私密信息,不会泄漏给其他人。公匙和私匙相互作用对数据进行加密及解密。被公匙加密的数据只能被私匙解密,被私匙加密的数据也只能被一个公匙解密。这样就可以实现双重认证。
当用户想发送关键信息给其他人时,首先用户使用他的私匙来加密信息,然后发送给有公钥的其他人。因为只有使用发送者的公钥才能对接收信息进行解密,这样接收者就能确信信息的确来自某个人。Redhat的RPM软件包签名 就是使用一组 GPG 密钥对来验证软件包的合法性。
下面实际演练一下GPG中生成并管理密钥对、加密和解密、签名和验证等操作。 Continue reading

Posted in Ops, Tools.

SaltStack之初窥门径

salt是一个用Python编写的配置管理及远程执行命令行工具,比puppet轻量、灵活得多。源代码托管于 GitHub 上,简单来说也是一个Client(minion)/Server(master)架构。官方已经提供了中文的文档和知识库:
http://www.saltstack.cn/projects/cssug-kb/wiki
http://docs.saltstack.cn/

安装salt

Salt官方推荐用Salt Bootstrap来安装,该项目是一个以在各平台下能够正确的自动完成Salt安装为目标的shell脚本,会自动判断系统类型并用对应的软件包管理器来进行salt的安装和配置:
wget -O install_salt.sh https://bootstrap.saltstack.com
sh install_salt.sh git develop
这里使用3台CentOS 6.5的虚拟机,可以用epel来安装salt,主服务器安装salt-master,而客户端只安装salt-minion; salt是master和minion的基础依赖,而python-halite是salt的一个web管理界面,后面将介绍。(这里为了方便测试,master也安装minion)

# 检查服务开机启动

2. 启动服务

设置master配置文件,salt使用YAML格式作为配置文件,注意YAML格式的key冒号后需要有一个空格(可以通过http://yaml-online-parser.appspot.com/ Online YAML Parser来验证YAML的格式)

salt需要使用加密信道来保证master/minion的通信,需要在master端认证客户端的minion来保证该通信是可信的。
minion生成key pair,然后用id值命名的pub key发送给 master ,直到接受为止;
master认证完成后,会将minion 端发送来的,以ID值命名的公钥存放在 /etc/salt/pki/master/minions 目录中;
master将自身的公钥发送给 minion,minion保存的路径为 /etc/salt/pki/minion/minion_master.pub.

minion_id 信息:

查看Key

或者使用salt-key -a OS2来逐一认证。移除一个Key:
salt-key -d OS04
连接测试
测试ping:测试master到minion的通信链路

测试执行命令(显示IP地址)

salt -E 根据正则表达式匹配id来执行:

根据id列表来执行:

在master服务器批量为其他服务器批量推送文件是一个常见的运维需求。SaltStack内置了号称史上最快的消息队列服务ZeroMQ来传输文件(http://zeromq.org/),可以用于大文件传输,开销很低,而在传输大量小文件时也非常有效。文件服务器主要用来在state系统中推送文件到客户端,也可以用于其他文件的传输。(参考文档
http://docs.saltstack.com/en/latest/ref/file_server/file_roots.html)
Continue reading

Posted in Linux, Ops, Tools.

使用Kickstart实现CentOS自动化安装

在配置好DHCP和PXE后,本文将在前文的基础上完成自动安装和配置的工作。自动安装的过程主要使用了两个工具:Anaconda和kickstart。前者(Linux安装程序Anaconda分析)是Red Hat、CentOS、Fedora等Linux的安装管理程序。它可以提供文本、图形等安装管理方式,并支持Kickstart等脚本提供自动安装的功能。此外,其还支持许多启动参数,熟悉这些参数可为安装带来很多方便。该程序是把位于光盘或其他源上的数据包,根据设置安装到主机上的一个程序;为实现该定制安装,其提供一个定制界面,可以实现交互式界面供用户选择配置(如选择语言,键盘,时区等信息)Anaconda支持的管理模式:
a). Kickstart提供的自动化安装
b). 对一个RedHat实施upgrade
c). Rescuse模式对不能启动的系统进行故障排除
Continue reading

Posted in Ops, Tools.

DNSmasq – 配置PXE

PXE(Preboot eXecution Environment)预启动执行环境提供了一种使用网络接口(Network Interface)启动计算机的引导方式。这种机制让计算机的启动可以不依赖本地数据存储设备(如硬盘)或本地已安装的操作系统。PXE server服务通过dhcp和tftp两个服务提供—DHCP Server来取得IP位址,通过TFTP来获得kernel image等文件。而PXE client通过PXE protocol和NBP(network bootstrap program)来完成通过网络的引导。
Continue reading

Posted in Ops, Tools.

DNSmasq – 配置DNS和DHCP

​DNSmasq是一个小巧且方便地用于配置DNS和DHCP的工具,适用于小型网络。它提供了DNS功能和可选择的DHCP功能可以取代dhcpd(DHCPD服务配置)和bind等服务,配置起来更简单,更适用于虚拟化和大数据环境的部署。
Continue reading

Posted in Ops, Tools.

DHCPD服务配置

DHCP(Dynamic Host Configuration protocol, DHCP) 是一个局域网的网络协议,使用UDP进行数据传输(服务器UDP端口67,客户端UDP端口 68)。主要功能是将内部网络或ISP的IP资源分配给用户。DHCP通常配置在网关路由器或者三成交换机上,也可以配置在服务器上。
DHCP运行分为四个步骤:
(1). 请求IP租约(discover)
客户端采用广播的形式去寻找DHCP服务器。如果这个网段内有多个DHCP服务器,那么最先响应的DHCP服务器将先进行DHCP服务。
(2). 提供IP租约(offer)
DHCP在地址池中挑选一个未被使
用的IP地址给客户端使用。
(3). 选择IP租约(request)
当客户端收到一个IP租约提供时,它必须广播来所有DHCP服务器它已经接受了一个租约offer。因此,该客户会发送一个DHCPREQUEST消息,其中包含提供租约的服务器的IP。当其他DHCP服务器收到了该消息后,它们会收回该的租约。并将IP地址重新放回到可用地址池中。
(4). 确认IP租约(ack)
当DHCP服务器收到来自客户端的DHCPREQUEST消息后,它就开始了配置过程的最后阶段。这个响应阶段包括发送一个DHCPACK包给客户。这个包包含租期和客户可能请求的其他所有配置信息(如DNS服务器等)
Continue reading

Posted in Linux, Ops, Tools.

使用ZModem Protocol(rzsz)在Windows-Linux之间传输文件

Zmodem协议是一个稳定的和快速的数据传输协议。它使用32位循环冗余校验(CRC)来确保数据流(streaming)的无差错数据传输。ZModem协议是XModem的增强版,不仅能传输更大的数据,而且错误率更小。包含一种名为检查点重启的特性,如果通信链接在数据传输过程中中断,能从断点处而不是从开始处恢复传输,是目前很流行的文件传输协议。
Linux中,RZSZ包提供了实现的Zmodem协议的主要工具。其他相关协议,如Xmodem协议和YMODEM,也由属于RZSZ包的一部分命令的支持。 Windows端需要支持ZModem协议的telnet/ssh客户端工具—SecureCRT。使用SecureCRT登陆到Unix/Linux主机(telnet或ssh),直接执行sz/rz命令就直接(批量)接收/发
送文件,而不需要后台服务来监听端口的支持。

rz/sz有几个常用的参数:
-e escape 转义所有控制字符,XON, XOFF, DLE, CR-@-CR,和 Ctrl-X等
-b binary 用binary的方式上传下载
-a --ascii 用ascii的方式上传下载
-+, --append 将追加到一个文件的结尾
-p, --protect (ZMODEM) 如果目标文件存在,则跳过.
-q, --quiet 不输出详细信息.
-a causes the receiver to convert Unix newlines to PC-DOS carriage returns and linefeeds.

1. 使用secureCRT+rz批量上传文件

登录到目标主机,打开需要上传文件的目录,直接输入rz。这时需要选择文件,可以一次性add多个文件:
1

2. 使用secureCRT+sz批量下载文件

同样的,sz后面可以加多个文件名作为参数,下面以-b(binary)方式传输二进制文件。

传输到secureCRT端的Download目录中(这个目录的Options – Session Options – XModem/YModem/ZModem中设置)
2
另外,sz可以和find -exec组合使用,可以做到批量下载文件的操作。

^^
参考:
man sz
wikimedia

Posted in Ops, Tools.