OpenBSD中的网络管理

这些天我花了一些时间研究了一下OpenBSD中的系统/网络监控软件,走了不少弯路,在这里跟与诸位分享一些心得体会。

一开始,我直奔主题,花了不少精力尝试了大量网管软件,考察的对象包括:Munin、Monit、collectd、nagios/icinga和symon。

OpenNTPd on OpenBSD

计算机时间是否同步是一个简单但很重要的命题,因为很多应用都要求计算机之间的时间一致,譬如VPN的构建、AD域的认证,log日志的排错等均需要时间同步,因此,早在1985年就诞生了NTP协议,它的全称是network time protocol(网络时间协议),被广泛用于计算机时间同步。它是一个协议,任何人都可以根据这个协议开发时间同步的软件,最著名的实现是ntp.org维护的同名套件,然而OpenBSD的开发人员对这个套件并不感冒,于是他们另起炉灶,重新开发了OpenNTPd,它旨在实现:

unbound on OpenBSD

2013-03-05 更新几条kill的正确用法和客户端排错说明
{: class=“info” }

一提起DNS,大家一般都会想到BIND。2000年的时候,Oreilly的《DNS and BIND》是最著名的也是唯一的一本关于DNS的书籍,现在已经更新到第5版。然而,时光流逝,美人迟暮,BIND的代码越来越臃肿,每向前迈一步都很困难,不少后起之秀都在觊觎BIND的地位,nsd/unbound便是其中之一,目前已有3台根域名服务器跑的就是nsd。

nsd/unbound是NLnet Labs开发的一套DNS daemon,其中nsd作为authorative DNS,unbound负责recursive和caching,旨在为用户提供一套安全、简洁、高效的DNS解决方案。ubuntu和OpenBSD均计划在下一版本中将unbound作为默认的DNS解释器。
今天仅介绍unbound,以后有机会再讲nsd。

fail2ban on OpenBSD

自部署OpenBSD以来,经常发现有script kid使用暴力破解的方式试探SSH的密码,一直以来都不以为然,最近总部下发的通报让我痛下决心,非解决这个问题不可。

解决方式有两种:

  1. 将密码验证更改为证书认证;
  2. 实时监控/var/log/authlog,一旦发现非法IP,就列入黑名单,使用pf对黑名单进行过滤。

vim和markdown

可以选择自己喜欢的编辑器是使用octopress的一大优势,我就挑选了gVim,相对于其它编辑器,它有几大好处:

欢迎你,octopress!(下)

欢迎你,octopress!(上)中提到,octopress的部署分为本地环境和博客平台这两个部分。

一、本地环境

本地环境主要是指octopress。octopress采用ruby脚本语言编写,源代码放在github上,因此,只要OS支持git和ruby就可以安装octopress。本文针对的是windows。

1.1 git

在windows中,我选择的是msysgit这个软件包。该软件包基于MSys/MinGW,它将linux中常用的命令和git打包在一起。octopress对git的版本没有要求,因此用户下载最新的版本安装即可。

1.2 ruby

在windows中,octopress的正常安装和运行依赖于以下两个组件:

安装完毕后,首先ruby.exe添加到windows操作系统的环境变量中,这样就可以在当前目录中直接使用ruby命令。

环境变量配置

接着修改gem source,因为默认的rubygems.org对于国内用户来说速度太慢,建议替换成淘宝的源:

$ gem sources --remove http://rubygems.org/
$ gem sources --a http://ruby.taobao.org/

最后安装rdocbundler这两个gem

$ gem install rdoc bundler

1.3 octopress

1.3.1 安装

$ mkdir /d/octopress
$ cd /d/octopress
$ git clone git://github.com/imathis/octopress.git
$ bundle install

1.3.2 配置

octopress的配置文件是_config.yml,用户通过它来配置博客的基本信息和第三方插件,详见octopress官方文档

1.3.3 第一篇文章

$ rake new_post["octopress on heroku"]

执行ls -al就会发现在d:\octopress\source\_posts中已经生成2012-04-08-octopress-on-heroku.markdown文档。接下来用户就可以用自己喜欢的编辑器来编辑这篇文章了。

1.3.4 预览&生成

编辑完文档后,先在本地预览一下,查看排版是否满意

$ rake preview

该命令将启动内置的网页服务器,监听端口为4000,用户可通过浏览器访问http://localhost:4000进行预览。最后生成静态网站:

$ rake generate

二、博客平台

博客平台既可以采用免费的github/heroku,也可以用VPS。我选择的是heroku。

$ gem install heroku

2.1 申请帐号

用户可在www.heroku.com上申请一个新的帐号,过程很简单,就不累述了,详情可参考heroku的官方文档。

2.2 创建一个新应用

$ heroku create linuxabc

linuxabc指的是应用名称
{: class=“info” }

至此,创建了一个基于heroku的博客平台,最后步骤就是将静态网站部署到博客平台上:

$ git add .
$ git commit -m 'site updated'
$ git push heroku master

大功告成!

三、更新博客

如何更新博客呢?

$ rake generate
$ git add .
$ git commit -m 'add <new-post-title>'
$ git push heroku master

建议将这四条语句放在一个bash脚本中,简化操作。
{: class=“info” }

四、排错

  1. 无法终止rake preview

    启用rake preview后,直接按ctrl+c无法正常终止该进程,老提示终止批处理操作吗(Y/N)?,这时候可以另开一个Git Bash窗口,使用ps aux | grep ruby命令找出pid(第一个数值),然后执行kill <pid>来停止该进程。

五、tips

  1. git restore

    我不小心将一篇source/_post/2012-04-xx-xx-xx.markdown的内容覆盖掉了,而该blog已经git push过一次,接着可以通过git checkout -- source/_post/2012-04-xx-xx-xx.markdown来恢复该文件。

ipt_NETFLOW on CentOS

VPS提供商会在一个物理主机中提供多个VPS,该物理主机的资源将被这些VPS所分享,CPU、RAM、硬盘和带宽是四种最常见的资源。本文讨论的是如何为每台VPS划分一定的带宽;

每个VPS用户都希望能用尽他所能使用的带宽,这就导致带宽争抢的问题,经常有用户抱怨网速过慢,那如何保证每个VPS都能独占一定的带宽呢?首先,我们要能分拣出每个VPS的带宽利用率,然后利用iptables对VPS进行限速。本文解决的是第一个问题,使用netflow对每个VPS的流量进行监控。

如何查看文件系统类型

在xen hyperviso中创建domU的时候,经常要跟镜像文件或lvm打交道,尤其是文件系统,目前linux中用得最多的是:ext2、ext3、ext4,这三种文件系统各有优缺点。