念念不忘,必有回响

Zabbix 图像集中展示 Graphtrees

最近准备把公司的监控平台从 Cacti + Nagios 过度到更为高大上的 Zabbix 。但是发现一个很蛋疼的问题,zabbix 图形展示不能够像 cacti 图表那样直观。对于用惯了 cacti ,这点简直不能忍。

google 了一下网上还是有很多解决方法的,可以使用 Graphtree。

Graphtree 功能概述

  • 集中展示所有分组设备
  • 集中展示一个分组图像
  • 集中展示一个设备图像
  • 展示设备下的Application
  • 展示每个Application下的图像
  • 展示每个Application下的日志
  • 对原生无图的监控项进行绘图

安装 Graphtree

zabbix 版本要求 3.0.1/3.0.2/3.0.3

cd Zabbix-WEB目录
wget https://raw.githubusercontent.com/OneOaaS/graphtrees/master/graphtree3-0-1.patch
yum install -y patch
patch  -Np0 <graphtree3-0-1.patch

实现效果

使用 virt-what 检测VPS虚拟化架构

Linux 系统使用 virt-what 检测VPS虚拟化架构。virt-what 可以检查到以下虚拟化创建的 VPS:VMware、Hyper-V、VirtualPC、VirtualBox、OpenVZ / Virtuozzo、Linux-VServer、UML、IBM PowerVM Lx86 Linux/x86 emulator、Hitachi Virtualization Manager (HVM) Virtage logical 、partitioning、IBM SystemZ、Parallels、Xen、QEMU/KVM

安装

ubuntu/debian系统安装 virt-what

apt-get install virt-what

centos系统安装 virt-what

yum install virt-what -y

运行

# virt-what 
vmware

实验机使用的 vmware 虚拟化架构

PPTP VPN服务器上配置 FreeRADIUS+daloRADIUS

前置条件

首先要保证使用 chap-secrets 验证的 PPTP 服务能够正常使用。关于配置简单 PPTP VPN 的方法不在本文的范围之内,请参考《CentOS 6配置VPN服务PPTP》

其次,你需要在服务器上安装好 HTTP+PHP+MySQL 环境,本例中使用 Apache 作为 Web 服务器。此外 PHP需要安装 PEAR。

pear的安装

wget http://pear.php.net/go-pear.phar | php
php go-pear.phar

配置FreeRADIUS

1. 登入终端后,首先安装 FreeRAIUS

yum install freeradius freeradius-mysql freeradius-utils

2. 安装完后,我们编辑 /etc/raddb/users ,在文件开头加上:

testing Cleartext-Password := "password"

3. 启动 radiusd,第一次启动会生成密钥,稍等片刻即可。使用-X参数可以让调试信息直接输出屏幕:

radiusd -X

4. 新打开一个SSH终端,测试服务器是否连通:

radtest testing password 127.0.0.1 0 testing123

如果看到 Access-Accept 就说明连接成功了。如果看到类似“Ignoring request to authentication address * port 1812 from unknownclient”的文字,可能需要去修改 /etc/raddb/clients.conf ,将 client localhost 段下的 ipaddr 改为服务器的IP,而不是127.0.0.1。

测试连接成功后,我们可以把 users 里临时加上去的第一行删除。

5. 下载 ppp 源码,因为要用到其中的配置文件:

wget https://download.samba.org/pub/ppp/ppp-2.4.5.tar.gz
tar zxvf ppp-2.4.5.tar.gz
cp -R /root/ppp-2.4.5/pppd/plugins/radius/etc/ /usr/local/etc/radiusclient

 6. 编辑 /usr/local/etc/radiusclient/servers ,加上一组服务器和密钥,本例中为“radius”:

localhost radius

7. 编辑 /usr/local/etc/radiusclient/dictionary ,将最后一行改为:

INCLUDE /usr/local/etc/radiusclient/dictionary.microsoft

可以再添加一行:

INCLUDE /usr/local/etc/radiusclient/dictionary.merit

8. 编辑 /etc/raddb/clients.conf ,把 client localhost 段下的 secret 改成刚才指定的密钥。

secret = radius

9. 编辑 /etc/raddb/radiusd.conf ,找到 $INCLUDE sql.conf,去掉前面的 #;找到 $INCLUDE sql/mysql/counter.conf,去掉前面的 #

$INCLUDE sql.conf
$INCLUDE sql/mysql/counter.conf 

10. 添加 MySQL 用户及数据库,可以使用现成的 phpMyAdmin 等工具,也可以在终端下操作。本例中,创建了radius的用户和同名的数据库:

CREATE USER 'radius' @ 'localhost' IDENTIFIED BY '***' ;
CREATE DATABASE IF NOT EXISTS `radius` ;
GRANT ALL PRIVILEGES ON `radius` . * TO 'radius' @ 'localhost' ;

11. 编辑 /etc/raddb/sql.conf ,配置 login(用户名),password(密码),radius_db(数据库名)等字段,并找到 readclients 一行,设为yes并去掉注释符号#

12. 编辑  /etc/raddb/sites-enabled/default ,根据下面的说明注释或取消注释相应的行:

  • authorize段,关掉files,打开sql,也可以把unix关掉
  • preacct段,关掉files
  • accounting段,打开sql,也可以把unix关掉
  • session段,打开sql
  • post-auth段,打开sql
  • pre-proxy段,关掉files

到这一步,我们的FreeRADIUS就算配置好了,用户信息都将保存在MySQL数据库中。至于数据库中的表,我们在后面统一导入。

配置DaloRADIUS

13. 首先下载并安装daloRADIUS,其中需要安装一个 Pear-DB 的包:

wget http: //sourceforge.net/projects/daloradius/files/daloradius/daloradius-0.9-8/daloradius-0.9-8.tar.gz
pear install DB
mkdir /usr/share/daloRadius
tar zxvf daloradius-0.9-8.tar.gz
mv daloradius-0.9-8/* /usr/share/daloRadius/
rm -r daloradius-0.9-8

14. 这时我们将 daloRADIUS 中附带的 sql 文件导入数据库:

mysql -uroot -p radius < /usr/share/daloRadius/contrib/db/fr2-mysql-daloradius-and-freeradius .sql

15. 编辑 /usr/share/daloRadius/library/daloradius.conf.php ,这是daloRADIUS的配置文件。首先是MySQL登录信息: 

$configValues [ 'CONFIG_DB_HOST' ] = 'localhost' ;
$configValues [ 'CONFIG_DB_USER' ] = 'radius' ;
$configValues [ 'CONFIG_DB_PASS' ] = '***' ; // 设为自己的密码
$configValues [ 'CONFIG_DB_NAME' ] = 'radius' ;

下面有一个daloRADIUS的bug,默认配置中有一个表名和我们导入的不一样,把它改过来:

$configValues [ 'CONFIG_DB_TBL_RADUSERGROUP' ] = 'radusergroup' ;

然后修改daloRADIUS的路径:

$configValues [ 'CONFIG_PATH_DALO_VARIABLE_DATA' ] ='/usr/share/daloRadius/var' ;

16. 添加Apache虚拟主机,如果有Web控制面板什么的自然就方便多了,不然就编辑 /etc/httpd/conf/httpd.conf ,加入:

Alias /vpn "/usr/share/daloRadius/"
<Directory "/usr/share/daloRADIUS">
</Directory>

17. 重启重启Apache和MySQL:

service httpd restart
service mysqld restart

18. 打开浏览器,进入 daloRADIUS 的管理页面(本例中为http://your.domain/vpn),使用默认用户名 administrator 和密码 radius 登录。

在 Management 中添加一个新用户,注意密码类型选择 Cleartext-Password。

19. 在终端里再次启动radius -X,同时在另一个终端中用 radtest username password localhost 0 radius 测试一下,看看现在是不是还能正常接通,如果没问题就OK,让我们把这套系统接驳到PPP上。

配置Pppd

20. 编辑 /etc/ppp/options.pptpd ,里面已经有许多配置选项了,我们要保证有下面的几行,如果没有就添加上去,为了保障用户登录的安全我们限制只使用 MS-CHAPv2:

refuse-pap
refuse-chap
refuse-mschap
require-mppe-128
require-mschap-v2

在配置文件最后加上3行:

plugin radius.so
plugin radattr.so
radius-config-file /usr/local/etc/radiusclient/radiusclient.conf

启动服务

21. 一切完成后我们不需要使用debug模式启动radiusd了:

service radiusd start

22. 把 radiusd 和 pptpd 设为开机启动服务:

chkconfig radiusd on
chkconfig pptpd on

至此,PPTP+FreeRADIUS+MySQL+daloRADIUS 全部配置完毕,我们在本机上使用添加的用户名和密码拨入 VPN,可以正常使用。在 daloRADIUS 中,还可以看到各个用户每次连接的时长,上传和下载的数据量统计等。

故障排错

无法启动 radiusd -X,报错如下

rlm_sql (sql): database query error, SELECT id, nasname, shortname, type, secret, server FROM nas: Unknown column 'server' in 'field list'
... ...
/etc/raddb/sql.conf[22]: Instantiation failed for module "sql"
/etc/raddb/sites-enabled/default[177]: Failed to load module "sql".
/etc/raddb/sites-enabled/default[69]: Errors parsing authorize section.

手动在数据库的nas里添加一个server字段就搞定了(这个server字段无实际作用)

修改 administrator 的登录密码

DaloRADIUS 是一个在线管理 freeradius 服务器的工具,安装完后默认管理员用户名 administrator ,密码radius,很多朋友想修改密码却不知道在哪修改,其实很简单。

选择 Config-Operators,在 Edit Operator 下面输入 administrator:


Fancy Index

Synopsis

The Fancy Index module makes possible the generation of file listings, like the built-in autoindex module does, but adding a touch of style. This is possible because the module module allows a certain degree of customization of the generated content:

  • Custom headers (either local or stored remotely).
  • Custom footers (either local or stored remotely).
  • Add you own CSS style rules.
  • Allow choosing to sort elements by name (default), modification time, or size; both ascending (default), or descending (new in 0.3.3).

Building

  1. Unpack the NGINX sources.
    $ gunzip -c nginx-?.?.?.tar.gz | tar -xvf -
  1. Download the latest version using Git.
    $ git clone https://github.com/aperezdc/ngx-fancyindex.git ngx-fancyindex
  1. Change to the directory which contains the NGINX sources, run the configuration script with the desired options and be sure to put an  --add-module flag pointing to the directory which contains the source of the fancy indexing module.
    $ cd nginx-?.?.?
    $ ./configure --add-module=../ngx-fancyindex  [extra desired options]
  1. Build and install the software.
    $ make
    $ sudo make install
  1. Configure NGINX by using the modules’ configuration directives.

Example Enable

You can test the default built-in style by adding the following lines into a server section in your NGINX configuration file:

location / {
  fancyindex on;              // Enable fancy indexes.
  fancyindex_exact_size off;  // Output human-readable file sizes.
}

CentOS 7 安装配置 shadowsocks

CentOS 7 开始默认使用Systemd作为开启启动脚本的管理工具,Shadowsocks则是当前比较受欢迎的科学上网工具,本文将介绍如何在 CentOS 下安装和配置 Shadowsocks 服务。

安装 pip

pip 是 python 的包管理工具。在本文中将使用 python 版本的 shadowsocks,此版本的 shadowsocks 已发布到 pip 上,因此我们需要通过 pip 命令来安装。

在控制台执行以下命令安装 pip:

# curl "https://bootstrap.pypa.io/get-pip.py" -o "get-pip.py"
# python get-pip.py

安装配置 shadowsocks

在控制台执行以下命令安装 shadowsocks:

# pip install --upgrade pip
# pip install shadowsocks

安装完成后,需要创建配置文件 /etc/shadowsocks.json ,内容如下:

{
  "server": "0.0.0.0",
  "server_port": 8388,
  "password": "uzon57jd0v869t7w",
  "method": "aes-256-cfb"
}

说明:

  • method为加密方法,可选aes-128-cfb, aes-192-cfb, aes-256-cfb, bf-cfb, cast5-cfb, des-cfb, rc4-md5, chacha20, salsa20, rc4, table
  • server_port为服务监听端口
  • password为密码,可使用密码生成工具生成一个随机密码

以上三项信息在配置 shadowsocks 客户端时需要配置一致。

配置自启动

新建启动脚本文件 /etc/systemd/system/shadowsocks.service ,内容如下:

[Unit]
Description=Shadowsocks
[Service] TimeoutStartSec=0 ExecStart=/usr/bin/ssserver -c /etc/shadowsocks.json
[Install] WantedBy=multi-user.target

执行以下命令启动 shadowsocks 服务:

# systemctl enable shadowsocks
# systemctl start shadowsocks

为了检查 shadowsocks 服务是否已成功启动,可以执行以下命令查看服务的状态:

# systemctl status shadowsocks -l