VPS紀錄(5)

這次講SSH。

架好VPN后,還是覺得不太方便,弄路由表又太麻煩,於是就決定試試SSH。

說實在的,我到現在也不是很明白SSH的原理,SSH協議太強大了……

上網一搜才發現,原來SSH這麽簡單……然後我看到了這個網頁(要翻墻,注意底下的評論),明白了兩件事:1 MyEnTunnel只是個GUI,底層還是用的putty的plink.exe  2 根據MyEnTunnel作者和那幾個網友(上述網頁的評論)的討論,plink.exe的開發版比穩定版要快很多。

既然這樣,我就決定只用plink,還省點資源。

於是我把plink.exe的開發版下下來,搜了一下命令行用法,用我的VPS的root帳號做實驗,連上去了……我爲此專門寫了個bat文件。

然後我裝了個FireFox的AutoProxy插件,然後,就成功了……真是簡單啊……

於是我給我的VPS建立了一個專門用來繙墻的帳號(用root帳號翻實在是大材小用,而且很不安全),後來覺得運行plink在任務攬裏面的那個cmd窗口太討厭,最後還是下了個MyEnTunnel……

昨天我決定在我的上網本裏面也部署這個玩意。爲了節省資源,我的上網本裝的是Chrome,而不是Firefox。而AutoProxy只有Firefox版的……去了AutoProxy的官方網站看了下,裝了個叫“Proxy Switch”的插件,並且設置規則列表為http://autoproxy-gfwlist.googlecode.com/svn/trunk/gfwlist.txt,要注意的是,這個地址本身是被墻了的,所以還是要在AutoProxy裏面設置這個地址本身要用SSH代理來上(這個花了我好長時間,之前由於一直用代理,或者一直用VPN,我一直沒有覺得這個地址被墻,看到網上有這麽個説法我也不以爲然,結果最後實在沒有辦法死馬儅活馬毉了才發現真的如此) ……

嗯。我現在基本上已經感覺不到墻的存在了……

Tags: , , , , , ,

VPS記錄(4)

架好了Wordpress和奶瓶腿之後,我就開始架VPN了。參考了這篇這篇這篇文章。

前兩篇文章我是對照著做的,兩邊一樣的時候我就照做,兩邊不一樣的時候我就不做或者按我的理解看

首先,安裝openswan

1
apt-get install openswan

注意的是,我的是Debian Lenny,這樣子拿下來的openswan是有Bug的,最好還是自己編譯一個(我不確定我的有沒有,因爲我最後的確是編譯了openswan,但是問題在另外一個地方,我不知道用原來的openswan會不會有問題)

1
2
3
4
5
6
aptitude install libgmp3-dev gawk flex bison
wget http://www.openswan.org/download/openswan-2.6.24.tar.gz
tar xf openswan-2.6.24.tar.gz
cd openswan-2.6.24
make programs
make install

在make之前,要先確保系統裏面有開發環境……

然後,配置openswan,後面那篇文章更有條理一些,不同的内容分在不同的文件裏面配置,然後include起來,我開始也是這樣干的,不過後來因爲別的原因一直沒有配好,病急亂投醫,把它們合併在一個文件裏面,等到後來問題解決后就懶得弄回去了。所以我的/etc/ipsec.conf配置文件是這樣子的:(注意縮進)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
config setup
  nat_traversal=yes
  virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12
  protostack=netkey

conn L2TP-PSK-NAT
  rightsubnet=vhost:%priv
  also=L2TP-PSK-noNAT

conn L2TP-PSK-noNAT
  authby=secret
  pfs=no
  auto=add
  keyingtries=3
  rekey=no
  ikelifetime=8h
  keylife=1h
  type=transport
  left=173.255.214.56
  leftprotoport=17/1701
  right=%any
  rightprotoport=17/%any

include /etc/ipsec.d/no_oe.conf

要注意的是,前面那篇文章有一行oe=off,我一開始沒有加進去,發現連不上,我以爲是這裡的問題,加進去后發現更不對了,這應該也是Debian和Ubuntu的小區別吧?

而我的/etc/ipsec.d/no_oe.conf是這樣的:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
conn block
  auto=ignore

conn private
  auto=ignore

conn private-or-clear
  auto=ignore

conn clear-or-private
  auto=ignore

conn clear
  auto=ignore

conn packetdefault
  auto=ignore

這個no_oe是爲了好看而已,沒有也可以的,只是在後面的檢查會有一個非OK的提示而已。

之後是編輯/etc/ipsec.secrets文件,改爲如下内容:

1
YOUR.SERVER.IP.ADDRESS   %any:  PSK "YourSharedSecret"

其中,YOUR.SERVER.IP.ADDRESS是服務器IP地址,YourSharedSecret隨便填寫,我弄了長長的一串隨機字符串。

然後運行以下命令:

1
2
3
4
5
for each in /proc/sys/net/ipv4/conf/*
do
echo 0 > $each/accept_redirects
echo 0 > $each/send_redirects
done

之後運行

1
ipsec verify

正常的話,會出現

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Checking your system to see if IPsec got installed and started correctly:
Version check and ipsec on-path                                 [OK]
Linux Openswan U2.6.24/K2.6.32.16-linode28 (netkey)
Checking for IPsec support in kernel                            [OK]
NETKEY detected, testing for disabled ICMP send_redirects       [OK]
NETKEY detected, testing for disabled ICMP accept_redirects     [OK]
Checking for RSA private key (/etc/ipsec.secrets)               [OK]
Checking that pluto is running                                  [OK]
Pluto listening for IKE on udp 500                              [OK]
Pluto listening for NAT-T on udp 4500                           [OK]
Two or more interfaces found, checking IP forwarding            [OK]
Checking NAT and MASQUERADEing
Checking for 'ip' command                                       [OK]
Checking for 'iptables' command                                 [OK]
Opportunistic Encryption Support                                [DISABLED]

其中,Checking for RSA private key (/etc/ipsec.secrets)可能會失敗,不過不要緊,如果實在想解決(像我一樣- -b),根據第三篇的内容(完全照搬是有問題的,不知道爲什麽,我ipsec newhostkey –help看了看,稍作修改),那麽可以按照如下操作:

1
2
3
ipsec newhostkey --output /root/tmpkey --bits 128
cat /root/tmpkey >> /etc/ipsec.secrets
rm /root/tmpkey

如果沒有做上面那個no_oe的話,還會提示一個DNS什麽的錯誤,其實也是不要緊的。

最後的Opportunistic Encryption Support也是不要緊的。

之後,就可以重啓服務了:

1
/etc/init.d/ipsec restart

然後就是安裝L2TP和ppp了。

1
apt-get install xl2tpd ppp

編輯/etc/xl2tpd/xl2tpd.conf如下:

1
2
3
4
5
6
7
8
9
10
11
12
[global]
ipsec saref = yes

[lns default]
ip range = 10.1.2.2-10.1.2.255
local ip = 10.1.2.1
length bit = yes
refuse chap = yes
refuse pap = yes
require authentication = yes
ppp debug = yes
pppoptfile = /etc/ppp/options.l2tpd

編輯/etc/ppp/options.xl2tpd,如果沒有就建立一個吧。你也可以放在你喜歡的地方起一個你喜歡的名字,只要和上面那配置文件裏面的pppoptfile一致就好

1
2
3
4
5
6
7
8
9
10
11
12
13
14
require-mschap-v2
ms-dns 8.8.8.8
ms-dns 8.8.4.4
asyncmap 0
auth
crtscts
lock
hide-password
modem
debug
name l2tpd
proxyarp
lcp-echo-interval 30
lcp-echo-failure 4

上面的ms-dns我用的是google的DNS……
然後編輯/etc/ppp/chap-secrets,這個用來加VPN賬戶,一行一個賬戶:

1
2
# user      server      password            ip
test        l2tpd       testpassword        *

test是用戶名,自己起,第二項必須是l2tpd,第三項是密碼,第4項是限制這個VPN必須從哪裏連上來,*代表那裏都可以
重啓服務:

1
/etc/init.d/xl2tpd restart

然後執行下列語句:

1
2
iptables -t nat -A POSTROUTING -s 10.1.2.0/255.255.255.0 -o eth0 -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward

要注意的是,所有的教程裏面,第一行都寫成了這樣: iptables –t nat –append POSTROUTING –j MASQUERADE 或者 iptables -–table nat –append POSTROUTING –-jump MASQUERADE
其實是有問題的,這樣子之後,服務器内部的網絡連接就不對了,我的nginx連php5-fpm連不上了,後來我把php5-fpm改爲unix設備之後,php連mysql也連不上了……
我後來認真查了一下這個iptables到底是干嘛的,才決定加上-s 10.1.2.0/255.255.255.0 -o eth0的限制。

設置ipv4轉發,修改/etc/sysctl.conf中的net.ipv4.ip_forward,如果沒有就新增吧

1
net.ipv4.ip_forward=1

运行如下命令:

1
sysctl -p

爲了讓每次服務器重起VPN服務都能順利運行,所以有必要將一些重啓后就丟失的配置寫進啓動自動運行腳本/etc/rc.local裏面(在exit之前):

1
2
3
4
5
6
7
iptables -t nat -A POSTROUTING -s 10.1.2.0/255.255.255.0 -o eth0 -j MASQUERADE
for each in /proc/sys/net/ipv4/conf/*
do
echo 0 > $each/accept_redirects
echo 0 > $each/send_redirects
done
/etc/init.d/ipsec restart

然後為了保險起見,重啓一下服務:

1
2
/etc/init.d/ipsec restart
/etc/init.d/xl2tpd restart

按道理來説應該就沒有問題了。用windows自帶的撥號連接就可以。記得“安全”裏面,要選用L2TP/IPSec,並且它的高級設置裏面記得用密鈅方式,裏面填上在/etc/ipsec.secrets文件裏面設置的YourSharedSecret。協議用Microsoft CHAP 版本2(MS-CHAP v2)就可以。

不過我一直都不行,後來根據第三篇文章的提示,認真看了看/var/log/syslog(/var/log/auth.log沒有發現啥問題),然後發現這麽一行:

1
pppd is unable to open the /dev/ppp device. You need to create the /dev/ppp device node by executing the following command as root: mknod /dev/ppp c 108 0

於是我就運行mknod /dev/ppp c 108 0,然後就好了……我不知道後面兩個參數是不是每個人都一樣,所以如果我下次做,估計還得先看syslog……

然後,就可以了……

Tags: , , , , ,

WordPress的郵件提醒和代碼高亮

給Wordpress添加了回復郵件提醒。以後只要回復了評論,都會給評論者的郵箱發信。

Google了一下,發現這裡有代碼,不用裝插件。只要在function.php裏面添加如下代碼就可以。要注意的是,這個只支持嵌套評論,因爲非嵌套的話,就不知道是回的哪個評論了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
/* comment_mail_notify v1.0 by willin kan. (所有回覆都發郵件) */
function comment_mail_notify($comment_id) {
  $comment = get_comment($comment_id);
  $parent_id = $comment->comment_parent ? $comment->comment_parent : '';
  $spam_confirmed = $comment->comment_approved;
  if (($parent_id != '') && ($spam_confirmed != 'spam')) {
    $wp_email = 'no-reply@' . preg_replace('#^www\.#', '', strtolower($_SERVER['SERVER_NAME'])); //e-mail 發出點, no-reply 可改為可用的 e-mail.
    $to = trim(get_comment($parent_id)->comment_author_email);
    $subject = '您在 [' . get_option("blogname") . '] 的留言有了回應';
    $message = '
      <div style="background-color:#eef2fa; border:1px solid #d8e3e8; color:#111; padding:0 15px; -moz-border-radius:5px; -webkit-border-radius:5px; -khtml-border-radius:5px; border-radius:5px;">
      <p>'
. trim(get_comment($parent_id)->comment_author) . ', 您好!</p>
      <p>您曾在《'
. get_the_title($comment->comment_post_ID) . '》的留言:<br />'
      . trim(get_comment($parent_id)->comment_content) . '</p>
      <p>'
. trim($comment->comment_author) . ' 給您的回應:<br />'
      . trim($comment->comment_content) . '<br /></p>
      <p>您可以點擊 <a href="'
. htmlspecialchars(get_comment_link($parent_id)) . '">查看回應完整內容</a></p>
      <p>歡迎再度光臨 <a href="'
. get_option('home') . '">' . get_option('blogname') . '</a></p>
      <p>(此郵件由系統自動發出, 請勿回覆.)</p>
      </div>'
;
    $from = "From: \"" . get_option('blogname') . "\" <$wp_email>";
    $headers = "$from\nContent-Type: text/html; charset=" . get_option('blog_charset') . "\n";
    wp_mail( $to, $subject, $message, $headers );
    //echo 'mail to ', $to, '<br/> ' , $subject, $message; // for testing
    }
}
add_action('comment_post', 'comment_mail_notify');
// -- END ----------------------------------------

另外,上面的語法高亮是用到了這個插件。唯一不好的地方,就是只能用HTML的方式編輯了,換成可視化方式后就全亂了……

Tags: , ,

VPS記錄(3)

這篇主要寫一些關於Mysql、PHP、Nginx東西。

目前我主要做的優化有兩個,一個是用tcmalloc來給mysql分配内存,看這裡

還有一個是改變Nginx連接PHP的方式,原來PHP在9000端口偵聽,而Nginx去連127.0.0.1:9000,昨天配VPN的時候出了點問題,然後順便把這個優化做了,現在PHP改爲偵聽在一個unix設備上,不走網絡協議了。首先,把nginx的配置裏面,所有的 fastcgi_pass 127.0.0.1:9000; 都換成 fastcgi_pass unix:/dev/shm/php-cgi.sock; 然後編輯/etc/php5/fpm/php5-fpm.conf,將 listen = 127.0.0.1:9000 改爲 listen = /dev/shm/php-cgi.sock。我昨天還想給Mysql也做類似的優化,不過可恥地失敗了……

Tags: , , , , ,

VPS記錄(2)

昨天終于把VPN架好了,剩下的事可以慢慢來,所以抽空把這個坑給填一下。

話説裝好Debian之後,我就開始架Wordpress和奶瓶腿。

我在我的Ubuntu虛擬機上用的是LAMP(Linux Apache Mysql PHP),不過,很明顯的是,LNMP(Linux Nginx Mysql PHP)更好更省資源,於是,我決定配LNMP。

上網搜了好多教程,不過都是什麽非官方的“一鍵配置”版,我還是想自己學一下,參考了好多教程,主要是這個,還有這個也看了一下,這個應該也參考過。

1 Nginx

首先裝的是nginx,就一個web服務器而已。

1
apt-get install nginx

這樣子就裝好了。然後要把服務起起來。

1
/etc/init.d/nginx restart

如果nginx跑起來了,那麽按道理來説,用瀏覽器訪問你的服務器,應該會看到一行字:“Welcome to nginx!”

2 mysql

mysql的安裝也很簡單。

1
apt-get install mysql

中間可能會問你一些問題,例如root密碼之類的。還有一些設置,我都忘了- -b。

然後把mysql啓起來

1
/etc/init.d/mysql restart

3 php

nginx連php有兩种方法,我選擇用php-fpm,感覺上應該效率更高一些。

Debian是以穩定著稱的,換句話說,也就是它更新很慢……目前Debian最新的版本是Lenny,而這個版本的官方軟件安裝源並沒有包括php-fpm,所以要加幾個第三方源:

往/etc/apt/sources.list裏面加入下面三行

1
2
3
deb http://php53.dotdeb.org stable all
deb http://packages.dotdeb.org stable all
deb-src http://packages.dotdeb.org stable all

再更新一下

1
apt-get update

然後就可以安裝了。

1
apt-get install php5-cli php5-common php5-suhosin php5-fpm php5-cgi php5-mysql

如果要裝奶瓶腿,那麽還得加一個php5-curl。

安裝的時候會說你沒有key,問你是否繼續,可以不管,繼續就是了。

然後把php5啓起來:

1
/etc/init.d/php5-fpm restart

這樣子這三個軟件就都裝好了。然後是配置nginx虛擬機測試一下php5。如果很有信心,則可以跳過。

編輯/etc/nginx/sites-available/default:(注意,還有個文件/etc/nginx/sites-enabled/default,這個是/etc/nginx/sites-available/default的符號連接)

這個是nginx的配置文件,一個虛擬機的配置大概是這樣子的(文件裏面以#開頭的是註釋,不要和命令裏面的root權限提示符搞混了),如果這個服務器有多個域名,或者多個二級域名,就寫多幾個好了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
server {
  #端口
  listen   80;
  #地址,可以寫多個server_name,可以用*儅通配符例如*.netson-cn.net,自己改。
  server_name aaa.bbb.com;
  #日誌的地址,自己改吧,也可以不改
  access_log  /var/log/nginx/nginx.access.log;
  #如果有下列錯誤(500 502 503 504,都是php執行錯誤),則轉向50x.html文件
  error_page   500 502 503 504  /50x.html;
  #這個block標記50x.html的位置,可以沒有,這個是nginx的默認值
  location = /50x.html {
    root   /var/www/nginx-default;
  }
  #配置根目錄
  location / {
    root /var/www/nginx-default;
    index index.php;
  }
  #配置php
  location ~ .*\.php$ {
    fastcgi_pass  127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_param SCRIPT_FILENAME /var/www/nginx-default/$fastcgi_script_name;
    include /etc/nginx/fastcgi_params;
  }
}

往/var/www/nginx-default/index.php寫如下内容:

1
<?php phpinfo() ?>

然後重新啓動nginx:

1
/etc/init.d/nginx restart

然後就用瀏覽器訪問吧,如果一切正常,應該是能看到一個很大的頁面,上面有你的虛擬機的各種信息。

接下來是架Wordpress。

先創建mysql數據

1
mysql -u root -p

創建數據庫,數據庫名字是wp

1
mysql>CREATE DATABASE wp;

創建用戶,用戶名是aaa,密碼是bbb

1
mysql>CREATE USER aaa IDENTIFIED BY ‘bbb’;

讓aaa擁有讀取、修改wp數據庫的權限

1
mysql>GRANT ALL ON wp.* TO aaa;

退出mysql

1
mysql>exit

把Wordpress下下來:

1
wget http://cn.wordpress.org/wordpress-3.0.1-zh_CN.tar.gz

然後解壓,例如/var/www/wordpress。

因爲php5和nginx默認是以www-data用戶組裏面的www-data用戶運行的,爲了讓Wordpress正常運行,要讓www-data用戶有足夠的權限去管理wordpress目錄,我的做法就是乾脆讓www-data作爲這個目錄的所有者:

1
chown www-data:www-data -R /var/www/wordpress

然後配置nginx,還是/etc/nginx/sites-available/default文件,參照上面的配置,注意要修改的地方包括:

location / 裏面的root,這裡應該是/var/www/wordpress

location ~ .*\.php$ 裏面的fastcgi_param SCRIPT_FILENAME,應該是/var/www/wordpress/$fastcgi_script_name;

然後用瀏覽器訪問,應該會說看起來沒有了wp-config.php,點擊進去就有個向導填寫配置,主要要配置的是數據庫的名字,就是上面建立的“wp”,數據庫用戶名,就是上面的“aaa”,數據庫密碼,就是上面的“bbb”。

一路填下來應該就Ok了……

然後還可以架個奶瓶腿。

奶瓶腿的架設就很簡單了。而且不用連數據庫,這裡是它的官方頁面。

需要注意的是前幾天推特的API升級了,如果vps服務器不是64位的話,那麽需要做如下的事情:

將twitter.php和naiping.php裏面的 ->id 換成 ->id_str,一共有19個地方;

將twitter.php和naiping.php裏面的->in_reply_to_status_id 換成 ->in_reply_to_status_id_str,一共有4個地方。

還有就是記得用user_oauth.php裏面的内容將user.php給替換掉,這樣就不用翻牆登陸了。

Tags: , , , ,

原來MS的hash_set内部是個list

今天爲了實現一個新功能,爲了不引發效率問題,決定把一個容器從std::list改爲stdext::hash_set。

這個類一開始不是我寫的,那個容器的聲明沒有用typede一個類型來,我接手以後,由於這個容器在代碼裏面要遍歷的點沒幾個,我也懶得重搆了,就一直沒有動它。

這次我就想順便改了,首先改聲明,從list改爲hash_set。然後編譯,準備從編譯錯誤裏面定位遍歷這幾個容器的點。

但是。。。。。居然編譯通過了。。。。一運行,也沒有任何問題……嗯?

後來看了看源代碼,才發現原來Microsoft的STL内部的hash_set居然是用list來實現的!

也就是說,hash_set的insert()、remove()、find()方法,效率不會太高……我特意看了看源代碼,果然如此……無語了……改天還是把hash_set換回set吧……這太不靠譜了……

結論就是,對於Windows API、第三方類庫之類的調用,千萬不要想當然,還是要看看實現(如果有的話),如果沒有的話,看相關文檔……

VPS記錄(1)

10月的時候決定,和偉哥合買一個VPS玩玩,11月執行。

準備工作包括裝了個Ubuntu虛擬機,在上面架了Wordpress,做做主題,調試調試博客搬家之類的。

後來還決定最後操作系統用Debian。上網查了一下,各大免費發行版,用得比較多的也就Ubuntu、CentOS、Debian。而Ubuntu源自Debian,佔的資源是比較多的。首先把它排除。然後就剩下CentOS和Debian了。CentOS是Red Hat系列的,國内很多人用,所以如果踫到問題,應該很容易找到解決辦法,不過比較佔資源,而Debian眾雖然少一點,不過它穩定,佔資源少,還有一點,就是我大愛apt-get……

所以最後,我決定用Debian……

於是2號晚上,用了子寧同學的家屬Blogkid同學推薦,在Linode買了個最便宜的虛擬機,每個月19.95US$,年付9折,兩年付85折,512M的内存,16G硬盤空間,每個月200G流量。我選了年付。只能刷信用卡。之後挑機房的位置,我測了一下,果然還是加州Fremont機房最快……之後選操作系統,分區,不到5分鐘,我就可以拿個term軟件用root帳號登陸了……

最後,上name.com買了這個域名,一年9.99US$。我本來想買netson.net的,不過發現早就沒有了…… .com .info .org全部沒有了…… .me .im .tv還有,不過我不喜歡……然後我想註冊netson_cn,發現域名不能用下劃綫,只能用減號……netson-cn統統都沒有被註冊,於是我就挑了.net,反正我又不開公司,註冊.com名不正言不順的,一點也不好玩……

Tags: , ,

預告

嗯。未來幾天内我會寫這次Blog搬家的相關技術文章……

包括Linux操作系統,php、mysql、nginx等……

不感興趣的可以跳過了……

總算搬家成功

總算搬家過來了……

詳細情況今晚再寫……

立此存照

原文已被和諧。PS:這裡還有湖南公安廳對此文的回應。這個就沒有被和諧了,評論裏面,還有IP為218.75.*.*的網絡評論員的回應,可以去圍觀一下。

湖南公安副厅长杨建农的“牢狱”之灾

9月25日午夜时分,55岁的湖南省公安厅副厅长杨建农在自己的新浪博客里贴出了一篇置顶博文,导语是醒目的蓝色字体——“当我们正在为生活疲于奔命的时候,生活已经离我们而去”。

这个二级警监用约翰·列侬的这句话,注释自己的状态。4天后,他因“涉嫌严重违纪”被湖南省纪委从家中带走。

尽管杨建农声称“面对俗世的是非纷争,唯有在超然物外中追求一种永恒”,但是生活却不能让他遗世独立。9月13日,正在广州参加公安部亚运安保协调的杨建农,心急如焚地赶回了长沙。这天凌晨,他的妻子陈玲从家中被公安带走,家中电脑悉数被抄。

显然,当天的状况令其不安,杨建农径直去了湖南省纪委。2006年,他以湖南省公安厅纪委书记的身份,当选为湖南省纪委委员。

按照杨身边的知情者转述,当日下午,正当杨建农主动找到湖南省纪委主要领导要求汇报情况时,湖南省公安厅主要领导致电湖南省纪委,称已经监控不到杨建农的手机位置,杨有可能畏罪潜逃或者畏罪自杀,公安这边已经发布边防控制,省纪委也应立即启动对杨建农的“双规”。

湖南省纪委则答复说,杨建农正在这儿汇报情况,目前也没有正当的理由可以“双规”他。

这一戏剧化的对峙,在一封请求信里,杨建农说法是,因其手机电源耗尽而自动关机,“结果被执行通信监控的干警误认为我有新情况”。

不过,形势仍按照既定的轨道运行。接近杨建农的人士称,其后湖南省公安厅党委会议上宣布,杨建农不再分管治安总队。

此后,杨建农仍然照常去公安厅上班。对于那些已经听说了他的遭遇,并在其博客上跟帖支持他的网友,他总是及时地回复“谢谢”二字,然后每天很早下班。

比起网友,他更需要体制内的支持。9月16日,前途未卜的杨建农,写下题为《关于请求立即制止湖南省公安厅采取违法办案手段对我施加政治迫害的报告》的请求信,并让其堂弟、中国青年政治学院副教授杨支柱看过。杨支柱称,杨建农托人将此信递交给了湖南省省委书记周强和代省长徐守盛。

在这封请求信中,杨建农认定其夫妇俩的遭遇,皆因其妻陈玲卷入了一个直指湖南省公安厅厅长李江和常务副厅长唐中元的发帖事件。

杨称,“发帖事件于我家庭而言是个无法挽回的错误”,他称愿意为此引咎辞职。这位缺乏安全感的省公安厅副厅长、省纪委委员还抱怨说,“组织调查并非一定要对我和我的家庭动用国家专政工具以及庞大的侦查力量来应对”。

其间,杨建农也奔走于那些老领导之间——湖南省政协原副主席、公安部咨询委员李贻衡及公安厅原副厅长张树海等人,知情者称,“杨认为这些老领导曾在湖南人大、政协工作过,能监管政府工作。”不过,这些领导都已退休多年,前者正致力于湘菜的推广,后者在家勤练书法。

力量的对比使得形势已经无法逆转。杨建农在其博客的结尾克制地写道,“为什么一些人却不能以宽广仁爱之心去包容和善待自己的同类呢?”

他已经在坐等命运之手敲门了。

搅动公安厅的网帖

湖南省公安厅里上一个被省纪委带走的厅级干部是杨建农曾经的同事、原副厅长王东贵。2007年,王东贵趁妻子外出时,与一名女警官在家中幽会,不料被妻子突然回家撞个正着,于是直奔厨房取出菜刀砍断女警官双脚脚筋,致其终生残废。

王东贵被“双规”之际,时为厅党委委员、纪委书记的杨建农负责给干部们进行廉政培训。这一年,网名“静水深流”的他也开通了自己的新浪博客,在首篇博文《向往幸福》中,他写道,“我背弃黑暗,向着太阳,我痛恨暴力,追求光明。”

在暗流汹涌的官场上,阳光没能永远打在他的脸上。

2010年6月8日,当天刚刚注册的ID“进士江湖”在天涯杂谈上发表了题为《吏治腐败正气何在》的帖子,这篇帖子在百度、谷歌快照如今皆不可见,只能通过奇虎显示。快照显示,另一名为“wpm123321”的ID,当晚也在论坛频繁跟发此帖。

帖中爆料称,自2001年以来公安厅多数党委成员利用提拔干部之机大肆收受贿赂,“男民警争相行贿,女民警进行性贿赂”,“谁的贿重票就投给谁”,“为拉有投票权的民警票,参加竞争的民警就要请吃、卡拉ok、洗脚,送现金、送卡、送礼等”。

针对公安厅修建的集资房,帖中谴责三年前“公安厅副厅长王东贵利用当时分管基建的权力将部分工程分包给给其情妇刘某的父亲”,以及大多数党委成员违反规定插手工程,致使和顺苑小区的房子造价越来越高。

参与购房的人士对本刊记者称,2005年,公安厅在长沙市雨花区开始修建集资房时,每平方米为1700元, 后由于插手的领导越来越多,集资房的造价又由每平方米2200元涨到了2800元,5年了还没能交房,当初负责集资房项目的那位警官,也因受不了被同事们骂娘,甩手跑回了交警总队。

此外,由于近年来长沙房价上涨,原本地处偏僻的和顺苑小区所在地段,目前房价每平方米都已达到4000元左右,当年小科员看重的集资房,也逐渐受到厅级领导的青睐,但是后来者不甘心别人买低自己买高,也要求提高集资房的房价,这点又让科员们意见很大。

原帖到底由谁贴出未能得知。在请求信里,杨建农自称,“这篇帖文发出不久,我妻子出于对我近两年遇到不公待遇所带来的困惑及受压抑的心情,伙同其公司的职员张焱对原帖进行了转帖并跟帖,在网上披露了她们所听到的一些未经证实的传闻,其矛头直接指向厅主要领导李江、唐中元同志。”

“他回家经常发牢骚,他老婆记在心上了,才自作主张发了帖。”杨支柱说。

一场轩然大波却由此引发。杨建农在请求信中称,“帖文传到主要领导后,公安厅即召开全厅副处长以上干部会议,帖文中涉及对象李江、唐中元同志在会上自证个人清白”,“会后,立即启动了针对发帖事件的立案侦查工作,由唐中元同志亲自坐镇指挥”,并由“国保、技侦、经侦、纪检等部门以及长沙市公安局,芙蓉、开福、高新等公安分局有关警种组成庞大的专案组”。

厅官们的仕途

1992年, 当湖南省人民警察学校副校长杨建农调任公安厅行财处任副处长时,现任湖南省公安厅常务副厅长的唐中元,已经担任了4年的交警总队队长,位列副厅级了。

与根正苗红的唐中元相比,小他4岁的湖南临湘人杨建农运气差很多。他三岁便随右派父亲下放到了临湘黄盖湖农场,因为无师自通修好了农场的发动机,农场才推荐他去了湖南省农业机械化学校。在学校里,他和同班同学陈玲从相识到相爱。

两年中专毕业后,他被分配到岳阳农机学校任教,工作是教学生开手扶拖拉机。因为要解决和妻子陈玲的两地分居问题,他利用妻子的关系,调入尚在筹建中的湖南省人民警察学校。

知情者称,前湖南省公安厅领导张树海下放到湖南吉首时,陈玲的母亲身为医院院长,对张有救命之恩,两家人也一直保持良好的情谊。

调入警校的杨建农在工地上开大货车,学校招生以后,又教学生开摩托车,从副科员做到了副校长。当他调入湖南省公安厅时,张树海并不十分赞同,他认为杨建农的性格不适合做官。

此时,1951年出生的湖南祁东人唐中元已经在公安厅干了20年。1971年,在韶山毛泽东思想学习班学习了半年后,唐直接进了湖南省人保组、治安组,从时任湖南省委政法委书记董志文的秘书,到预审处副处长,再到交警总队队长,他的仕途顺畅。

1998年,在公安厅历练了6年的杨建农坐上了唐原来坐过的位置,担任湖南省交警总队队长一职。此时的唐中元已升任湖南省公安厅党委委员。

为了创收,杨建农收回了车辆驾驶牌照的特许经营权。知悉交警总队内情的人士称,在唐中元主政时代,牌照是交给私人经营的, 因此,“杨建农干的是得罪人的事情”。

不过,这一举措却让交警总队摆脱了窘况,也使杨博得了下属的好感。杨建农曾对人声称,他离任时,交警总队的账目上至少有2个亿。交警总队的办公楼修得比湖南省公安厅还气派,集资房盖得又便宜又好。2002年,他从交警总队队长升任湖南省公安厅党委委员、纪委书记。

2004年,李江从湖南省委宣传部长调任省委政法委书记、兼任公安厅厅长。接近杨建农的人士赵易(化名)称,杨认为李江刚开始还比较赏识自己。不过,这段蜜月期并没有持续多久。

赵易说,杨建农曾向他谈起跟李江的分歧:李江调任厅长后从严治警,欲把酒后驾驶撞人致死的警员龙绍来树立成反面典型,遂授意纪委书记杨建农去查龙绍来的问题,但是杨建农却没能查出,李江对此并无不满,也留下了杨“会操作”的印象。

两人的工作风格也总处在磨合期。杨支柱说,“杨建农不怎么爱汇报工作,他有点自负,总认为宣传部过来的李江‘不懂业务’,觉得汇报了也没啥用。”

从担任交警总队队长开始到2008年,杨建农已经在副厅级的位置上10年原地不动了。而在2003年,副厅级的湖南省公安厅党委委员唐中元升任厅党委副书记,享受正厅级待遇。

2008年年底,原湖南省公安厅常务副厅长励明安退休,按照排名,唐中元顺利接任了常务副厅长的位置。

赵易称,在公安厅,励明安的威望颇高,被认为“正气”,对人对事都较为直接和公正,而杨建农跟励明安走得也比较近。

在2008年的人事变动中,杨建农本来也有机会升任正厅级。杨支柱透露,李江当时想让杨建农去湖南省国家安全厅担任常务副厅长,“但是杨建农自觉对那边业务不熟,安全厅那边也嫌杨建农年纪稍大,结果就没去成。”于是,公安厅纪委书记杨建农就转任公安厅副厅长。

杨支柱称,这件事情让李江和杨建农的关系更为疏远。其后2年,杨建农的仕途更显不顺。

杨建农于是寄情精神生活,最大的开支便是镜头和音响。见过其摄影器材的人称,“他的镜头应该价值上百万。”他也毫不掩饰自己对摄影的狂热喜爱,为了拍摄各种画面,“或是零下三十多摄氏度的严寒,或是高达五十摄氏度的酷热,或是悬崖,或是深渊,或是高山,或是险壑,我乐此不疲”。

这个称自己在“钢筋混凝土的荆棘般的丛林呆久了就会有一种悲伤”的官员,仍然无法排解自己的郁闷和不平。陈玲在跟帖中列举了厅党委在用人方面存在的问题,杨建农也承认,“她跟帖中既有她从别处听到的议论,也有来自我跟她的私房话”。

做生意的官太太

杨建农不再是曾经的那个右派子女和穷教师,位高名显的他已经不复当年的窘迫。临湘在长沙的老乡会,他是几个埋单者之一;临湘西北襟带长江,每年都发洪水,杨建农每年也都捐款;他还出资二三十万元,给老家的村子里修了个小学。

陈玲在生意场上的成功,令外人推测这个家庭至少有几千万的身家。上世纪90年代初,当杨建农从湖南省人民警察学校调入公安厅时,警校原政治部主任陈玲下海了。她和原警校老师韩克等人一起承包了警校的驾校,第一年上交学校10万元,第二年上交80万元。这段经历让她积累起了第一桶金。

三四年后驾校利润见少,陈玲退出。1996年,个人典当业放开,陈玲又和杨建农的二弟杨建福合作,在湖南省公安厅附近开了家“银剑典当行”,一年半后转手,获利颇丰。

此后陈玲又和杨建福合开过涂料厂,不过并不成功。杨建福又跑去了广西、西藏等地,以私人名义承包公交车路线,陈玲也投资其中,这个业务延续至今。接近陈玲的人士称,仅此一项,陈玲每月就有约50万元左右的进账。

对他们出生于1982年的独子杨略功,这个家庭也不惜重金培养。杨略功还没读完高二,便去了英国留学,在那儿一共呆了9年,两年前才回国。杨略功原定去民生银行工作,但是杨建农觉得“民营公司不保险”,安排儿子去了湖南省移动公司。

当体制内的杨建农抑郁不得志时,生意场上的陈玲却忙着开疆拓土。2008年年底,她又跟人合作创办了湖南极致科技有限公司(以下简称“极致”)。

注册资料显示,“极致”的成立时间为2008年11月13日,注册地址为长沙市麓谷麓景路2号,原定法定代表人为张焱,2008年12月11日法定代表人变更为陈玲,后又变更为杜青。该公司注册资本为300万,吴海和陈玲各出资120万,各占40%的股份,张焱则出资60万;经营范围则包括计算机软件和硬件的研究、通信技术、互联网技术、办公用品、通讯器材、建材、五金交电、电脑及配件的销售,安全技术防范系统的设计、施工、维修等。

根据注册地址,并不能找到“极致”的办公实体。赵易透露,“极致”成立之后仅做了一个湖南省高速公路管理局的项目,应是代理了高管局的某项产品。

知情者称,除了陈玲以及现年33岁负责跑腿的张焱,“极致”背后还有一个神秘女人参与运作。

据了解,在陈玲从家中被带走的第二天,即9月14日,湖南省高管局局长冯伟林的妻子、公安厅警务督察处副处级干部易杏莲因“涉嫌贪污受贿”被湖南省纪委“双规”。

另据与陈玲接近的人士称,易杏莲和陈玲关系密切,在“极致”成立之前,易杏莲本打算用其子冯沛然的名字登记,后被陈玲劝阻。由此推断,该神秘女人应为易杏莲,而注册材料中的吴海,应为易的代理人。

杨建农的稻草

发帖是错误的场合、针对错误的对象作出的没有政治智慧的错误选择,但是杨建农坚决否认作出这个选择的是他本人。当他被当成网帖事件的头号嫌疑人物时,他多次“以党性和人格向组织保证”,自己没有参与发帖。

赵易称,网帖事件后杨建农理所当然地成了焦点,做过厅纪委书记的杨建农,接触过颇多的负面材料,帖中对准的两个领导,又有跟他不和的传言。

张焱的第一次被抓,以及张焱和陈玲的关系,又为这种猜测提供了佐证。“不过,第一次她没招,一天后就放出来了。”张焱的一位亲戚称。

8月中旬,张焱第二次被带走。她与丈夫欧阳德志前去云南旅游,被湖南省公安厅国保总队和长沙市开福区分局的干警通过机场分局将两人强制截下飞机。9月5日,张焱以涉嫌“虚报注册资本罪”被刑事拘留,“没过两天,张焱交代了发帖的具体经过。”杨建农在请求信里称。

根据杨建农的说法,在张焱被抓后,他再次追问陈玲帖子事宜,陈玲才后悔地承认自己参与了转帖、跟帖,杨建农想到了如何规避调查,“悔恨归悔恨,毕竟为三十年夫妻情深想得太多,以致在得知真实情况后,没有第一时间向组织报告”。

在这个转弯的当口,他仍然存留着侥幸心理。尽管他声称“早在从传唤张焱开始,办案民警就明确宣称我们是在‘完成政治任务’,是‘厅领导之间的斗争’”,身处风暴中心的他在9月3日的博客上,还是鼓励自己“尽管有些不愉快的事情,但心情也不至于不好。要相信真理,相信事实,同时更相信自己”。

不过,真理和真实都没帮上他的忙。2010年9月13日凌晨,警方从他家中抄走了多个U盘、笔记本电脑、MP4、上网卡、硬盘、读卡器、手机等电子存储产品。

两天后的中秋节前夕,湖南省公安厅长李江与常务副厅长唐中元在厅机关金穗酒楼设宴,慰问厅机关驻地武警官兵及公安民警。这天,远在北京的杨支柱,接到了堂哥杨建农的电话。这位副厅长让堂弟回长沙一趟,并在电话里问他:“嫂子的事你看怎么办?”

律师肯定是要找的,然而这个在厅纪委书记的位置上任职过六年的官员,比普通人更了解权力运行规则,对自己和妻子能得到程序正义的期盼值并不乐观。因此,妻子陈玲的拘留通知书还没收到,他就动手向湖南省委领导写请求信。

他请求上级有关部门能组成调查组,调查“湖南省公安厅发帖事件专案组在办案过程中的严重违法违纪行为,予以坚决制止和纠正,恢复陈玲人身自由,退还我家被抄财物”。

“查无此人”的陈玲

尽管他称“静夜扪心自问,我求无愧于心”,但是波谲云诡的政治却给不了他希望的“温柔、淡定、平和、宁静”。9月17日下午4点,杨建农终于收到长沙市高新区分局寄来的《拘留通知书》,称陈玲已以涉嫌“虚报注册资本罪”被刑事拘留。陈玲出事是否与帖子有关,至今湖南省警方没有任何公开的说法。

两天后,陈玲的代理律师周泽从北京飞到长沙,和当地律师杨金柱赶到益阳市第二看守所,要求会见陈玲。益阳是湘北的一个地级市,距离长沙约一个多小时车程。1995年,时任湖南省体改委主任李江调到此地担任益阳市代市长,并于2003年由益阳市委书记任上升任湖南省委常委、宣传部长。

益阳市第二看守所的值班民警向律师们演示了查询过程,并告诉他们“查无此人”。 在二顾益阳后,应律师要求,看守所又在之前已经批注过“查无此人”的《拘留通知书》上批注“第二次查无此人”。10月8日,警方对律师杨金柱称,因该案涉及国家秘密,律师不得会见陈玲。

面对着享有查与不查、抓与不抓巨大自由裁量权的权力,杨建农此时在博客中感慨人生的不可知:“人生中有太多的偶然,有太多意料之外的事情的不确定性。人生正如那不计东西的飞鸿找不到归宿,一时间摸不着东西南北。”

在厄运如潮的当口,他还试图抓住最后的机会。在那篇接近4000字的请求信中,他请求省委主要领导给自己做主,“党内不准搞技术侦查”,“对处级及处级以上党政干部采用技术侦查措施,应分别由省委和中央有关领导批准。请求公安部查明,发帖事件专案组是否对我及其家人采用电话监听等非法侦查手段,如有,应严肃追究批准人和相关责任人的法律责任”。

杨支柱称,这封信递交出去以后,“省领导通过别人传达的意思大致是以后厅级干部抄家要经过省委常委的讨论,经济问题要实事求是,不要扩大化。”

其间,杨建农也曾致信中纪委和公安部,“内容大同小异,就是信的主语改了下”,杨支柱说。

老领导张树海劝杨建农要“相信组织”。因此,尽管律师周泽认为“一开始就是满盘皆输的棋,只能不按规则下棋,或许可像《天龙八部》里的虚竹和尚那样获得意外惊喜”,并为此撰写了《紧急情况汇报暨法律意见书》,将陈玲一案与公民的批评、控告、申诉、检举等监督权利相联系,患得患失的杨建农还是没让周泽递出这个文件,也制止了该意见书的公布。

9月29号晚上7点多,杨建农关闭了置顶博客的评论功能。一天后,湖南省监察厅举办的“三湘风纪网”上发布要闻,通报杨建农被立案调查。新华社随后跟发了消息,这篇不到百字的新华社简讯,是目前为止关于杨案的唯一官方通报。至于杨建农因何事被立案调查,至今没有作出具体说明,只是强调“涉嫌严重违纪”。

关于该网贴以及杨建农、陈玲被调查的具体情况,本刊记者向湖南省公安厅宣传科采访核实,但截至10月21日本刊截稿时止,尚未得到回应。

在网络上,“挺杨派”和“倒杨派”激战弥酣。10月3日,网友“我讲真话”、“我要讲真话”、“我要讲真话2010”分别在红网、岳阳论坛和百度贴吧发表了题为《湖南省大贪官杨建农落马,妻子刑拘》的爆料贴,“挺杨派”们则在跟贴中奋力为杨建农的人品作证。

不过,杨建农的家人拒绝出面。杨建农的弟弟、岳阳市公安局装备部部长把接触媒体视为下策。杨支柱称,“他们要‘讲政治’,认为接受媒体采访不符合官场游戏规则”。其子杨略功也拒绝接受采访。

在杨建农被省纪委带走半个月后,现任湖南省公安厅纪委书记谭和平在“规范权力运行制度建设工作推进会”上通报称,湖南省纪委规范权力运行制度建设领导小组评价公安厅“走在省直机关的前列”,唐中元也在该次会议上要求厅属单位“以权力阳光促公开、公平、公正”。

在公安厅的官网“湘警网”上,杨建农仍然名列“领导信息”一栏,但是对他的报道止于8月底他去张家界督导治安工作。那次回来,他在博客上贴出了《永远的边城》一文,文首引用了黄永玉的那句话——“一个士兵要不战死沙场,便是回到故乡。”暂时,他是回不了故乡了。