假定你有一台debian vps,上面需要装一些东西来——你懂。你应该装一些什么呢?

基础部分

ssh

没啥好多说,没有ssh,你甚至无法管理机器。不过注意,安全的ssh方式应当只允许使用key登录,禁止一切密码登录。而且对于没必要登录的某些用户,需要在/etc/passwd中将shell改为/bin/false。至于端口改不改,这个不重要,看你心情。

vim

debian默认装的是vim-tiny,很不好用。建议改为vim,改配置的时候让自己舒服点。

安全部分

iptables-persistent

这是debian内用于iptables规则持久化的工具,你可以编辑/etc/iptables/rules.v4来修改防火墙规则。注意,目前debian stable(squeeze)中的版本还没有4/6区分,你可以弄一个testing(wheezy)中的来装。

一般来说,你的规则中至少要包含以下内容:

-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -i tun+ -j ACCEPT
-A INPUT -i ppp+ -j ACCEPT
-A INPUT -p tcp -m multiport --dport 22,xxx,xxx,xxx -j ACCEPT
-A INPUT -p udp -m multiport --dport xxx,xxx,xxx -j ACCEPT

而且强烈建议,先保存一个没问题的iptables,然后直接修改iptables,再保存。这样的好处是,当你脑残改错了导致你自己都无法管理的时候,只要重启就可以恢复vps工作,而不用更麻烦的动作。

denyhosts

这是ssh的连接防御进程,用python编写。如果有人试图尝试你的ssh密码,这个程序就会踢掉他的ip。

如果你已经用了我说的,通过key的连接方式,你可以一次就直接踢掉对方ip。

管理部分

ifstat

ifstat是用于网络流量管理的工具,可以告诉你网络目标的流量是多少。

dnsutils

dnsutils里面包含了不少用于管理dns的工具,包括我们常用的nslookup,还有相对少用的dig。

mtr-tiny

mtr是一个traceroute工具,比后者好用很多。这个工具可以快速跟踪路由。

vnstat

vnstat是用于跟踪网卡流量的工具,尤其对于每个月都有限额的vps,这个工具更有意义。

注意安装完成后需要初始化每个网卡,然后重启服务,而不是马上能够工作。

网络部分

pptp

pptp是一个经典的vpn服务,直接安装pptpd就好。注意,部分手机不支持128bit的mppe,关闭后可以连接。但是windows只支持128bit的mppe,关掉就无法连接。So,自己权衡。

openvpn

openpn是一个非常稳定而强大的vpn程序,他使用udp作为连接协议。其实openvpn有tcp协议模式,但是速度比udp慢很多。

openvpn的配置很长,我也写过,就不赘述了,可以参考这三篇文章(1. 搭建家用的OpenVPN服务器, 2. 说说x509证书链, 3. 再论openvpn的搭建 )。

l2tp

l2tp的配置比openvpn更加繁琐,我配置过多次,始终在部分的设备上可以访问,部分不可以。因此等全部搞定后,会专门写一篇确认一下。

iodine

iodine是一个dns vpn。

ssh

ssh用于翻墙常见两种模式,固定端口转发和动态端口转发。前者使用-R将远程的某个端口映射到本地。通常而言,映射的都是squid或者polipo(推荐后者,内存消耗更小,更好配置)。这样相当于在本地可以访问远程的代理,从而达到翻墙的效果。这个的命令行是ssh -L port:localhost:port ... 而动态端口转发则是使用ssh -D port …,将本地的port端口变成一个支持socks5协议的代理服务器。

相比而言,-D模式更加灵活,提供了全协议的访问,本地可以通过polipo转换为http代理。而-L模式则不能提供socks5代理功能(除非远程的端口上是socks5代理服务,但是这样就回到了-D模式,反而多开了一个服务)。但是有些时候(例如android的ssh翻墙软件)只支持后者的模式。

另外,不要用日常管理帐号翻墙。新开一个翻墙帐号,并且设定独立的key。然后禁用shell,在ssh的时候,使用参数-CNq,这个参数可以不打开shell。如果网络不稳定,可以加上-o ServerAliveInterval 30。

stunnel

stunnel本身没有任何功效,他只是将你的普通连接转换为ssl连接而已。当这个程序搭配其他程序,例如polipo,就可以实现一个ssl级别的代理。

httptunnel

这是一个服务软件,服务器端运行一个httptunnel,客户端运行一个。而后客户端就可以获得一个到服务器端的tcp连接,不受限的。

polipo

polipo常见有两种模式,端口转发模式和ssl模式。两者都在前文有说。端口转发模式配合ssh用,ssl模式配合stunnel用。

以上的服务看似很多,实际上,在128M内存的实例上完全可以运行其中大部分的服务。你可以在一台服务器上运行其中多个,以保证全天候的服务。