Linux下配置VPN

1、检查服务器是否有必要的支持.如果检查结果没有这些支持的话,是不能安装pptp的,执行指令:
#modprobe ppp-compress-18 && echo ok
这条执行执行后,显示”ok”则表明通过.不过接下来还需要做另一个检查,输入指令:
#cat /dev/net/tun
如果这条指令显示结果为下面的文本,则表明通过:
cat: /dev/net/tun: File descriptor in bad state
上述两条均通过,才能安装pptp.否则就只能考虑openvpn,或者请你的服务商来解决这个问题.
2、安装ppp和iptables(iptables可选).默认情况下,完整的CentOS是带有这两个组件的,但是精简版的系统可能没有.我们输入下面的命令来确认,如果没有则进行安装,有的话系统不会做任何动作:
#yum install -y ppp iptables
3、安装pptp.这个软件在yum源里是没有的,我们需要手动下载,我们先切换到tmp目录:
#cd /tmp
然后执行下面的命令来下载pptp安装包:
#wget http://***********************
#rpm -ivh pptpd************.rpm
4、配置pptp.首先我们要编辑/etc/pptpd.conf文件:
#vim /etc/pptpd.conf
找到”locapip”和”remoteip”这两个配置项,将前面的”;”注释符去掉,更改为你期望的IP段值.localip表示服务器的IP,remoteip表示分配给客户端的IP地址,可以设置为区间.这里我们使用pptp默认的配置:
localip 192.168.0.1
remoteip 192.168.0.234-238,192.168.0.245
注意,这里的IP段设置,将直接影响后面的iptables规则添加命令.请注意匹配的正确性,如果你嫌麻烦,建议就用本文的配置,就可以一直复制命令和文本使用了.
接下来我们再编辑/etc/ppp/options.pptpd文件,为VPN添加Google DNS:
#vim /etc/ppp/options.pptpd
在末尾添加下面两行:
ms-dns 8.8.8.8
ms-dns 8.8.4.4
5、设置pptp VPN账号密码.我们需要编辑/etc/ppp/chap-secrets这个文件:
#vim /etc/ppp/chap-secrets
在这个文件里面,按照”用户名 pptpd 密码 *”的形式编写,一行一个账号和密码.比如添加用户名为test,密码为1234的用户,则编辑如下内容:
test pptpd 1234 *
6、修改内核设置,使其支持转发.编辑/etc/sysctl.conf文件:
#vim /etc/sysctl.conf
将”net.ipv4.ip_forward”改为1,变成下面的形式.
net.ipv4.ip_forward=1
保存退出,并执行下面的命令来生效它:
#sysctl -p
7、添加iptables转发规则.经过前面的6个步骤,我们的VPN已经可以拨号了,但是还不能访问任何网页.最后一步就是添加iptables转发规则了,输入下面的指令:
#iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE

iptables -A FORWARD -p tcp --syn -s 192.168.2.0/24 -j TCPMSS --set-mss 1356   设置mtu,否则有些网站无法打开,例如百度;
需要注意的是,这个指令中的”192.168.0.0/24″是根据之前的配置文件中的”localip”网段来改变的,比如你设置的”10.0.0.1″网段,则应该改为”10.0.0.0/24″.此外还有一点需要注意的是eth0,如果你的外网网卡不是eth0,而是eth1(比如SoftLayer的服务器就是这样的情况),那么请记得将eth0也更改为对应的网卡编号,不然是上不了网的.
然后我们输入下面的指令让iptables保存我们刚才的转发规则,以便重启系统后不需要再次添加:
#/etc/init.d/iptables save
然后我们重启iptables:
#/etc/init.d/iptables restart
8、重启pptp服务.输入下面的指令重启pptp:
#/etc/init.d/pptpd restart
现在你已经可以连接自己的VPN并浏览网页了.不过我们还需要做最后的一步.
9、设置开机自动运行服务.我们最后一步是将pptp和iptables设置为开机自动运行,这样就不需要每次重启服务器后手动启动服务了,当然你不需要自动启动服务的话可以忽略这一步,输入指令:
#chkconfig pptpd on
#chkconfig iptables on
这样就大功告成了,赶快到Windows下建立一个VPN连接,IP填写自己的服务器IP,用户名和密码填写自己设置好的用户名和密码,点击”连接”,成功后就可以使用服务器去浏览网页啦.

Linux下安装mod_bw和mod_limitipconn限制apache并发连接和下载速度

mod_limitipconn,这个是Apache的一个非官方模块,根据同一个来源IP进行并发连接控制,Bw_mod,它可以根据来源IP进行带宽限制,它们都是apache的第三方模块。
1.下载: wget http://dominia.org/djao/limit/mod_limitipconn-0.22.tar.gz wget http://bwmod.sourceforge.net/files/mod_bw-0.7.tgz
2.安装#tar -zxvf mod_limitipconn-0.22.tar.gz
#cd mod_limitipconn-0.22
#vi Makefile
修改:apxs = “/usr/local/apache2/bin/apxs” # 这里是自己apache的apxs路径,加载模块或者#/usr/local/apache2/bin/apxs -i -c -a mod_limitipconn.c 来加载模块
#make
#make install#tar -xvf mod_bw-0.7.tgz
#cd mod_bw
#/usr/local/apache2/bin/apxs -i -c -a /home/kenami/mod_bw/mod_bw.c下面用vi打开apache 的配置文件 httpd.conf发现了以下两行:LoadModule limitipconn_module modules/mod_limitipconn.so

LoadModule bw_module modules/mod_bw.so
3.配置
<IfModule mod_limitipconn.c>
<Location /home/bo@phpddt.com/attachments/month _*> #需要控制的路径
MaxConnPerIP 3 #限制的线程数
NoIPLimit index.htm #对此文件不做限制
</Location>
</IfModule>在虚拟主机配置文件下面加上: BandwidthModule On
ForceBandWidthModule On
Bandwidth all 10000 #限速10K
MinBandwidth all -1
配置参数说明如下:
a. BandWidthModule On|Off//是否开启mod_bw的带宽限制功能。
b. BandWidth [From] [bytes/s] 设置指定客户机最大带宽,0表示不限制 BandWidth u:[User-Agent] [bytes/s]
c. MinBandWidth [From] [bytes/s] 设置指定客户机带宽的最小值,为0表示每个客户端带宽最大为256bytes/s,为-1表示最大为BandWith的值
d. LargeFileLimit [Type] [Minimum Size] [bytes/s] 设置访问超出特定大小的某种文件的最大带宽,文件类型大小单位为kbytes
e. MaxConnection [From] [Max] 设置指定客户机的最大并发连接数
f. ForceBandWidthModule [On|Off] 默认bw模块将应用所有请求,On可设置过滤类型关于From,即客户端来源可分以下几种情况:IP指定单一主机192.168.1.22指定网段192.168.1.0/24或192.168.1.0/255.255.255.0域名单一主机Client1.phpddt.com域名指定范围.phpddt.com所有客户端all以上配置既可以针对所有客户端,也可以对某个虚拟主机进行配置实例一:BandWidthModule OnBandWidth all 307200BandWidth 192.168.1.2 102400BandWidth “u:^Mozilla/5(.*)” 102400BandWidth “u:wget” 204800ForceBandWidthModule OnLargeFileLimit .avi 600 204800MaxConnection all 100MaxConnnection 192.168.1.2 5以上的配置含义:开启mod_bw, 限制所有文件类型也开启了所有客户端最大带宽为300k,最大并发连接为100192.168.1.2的最大带宽为100k,最大并发连接为5使用FireFox的客户端最大带宽为100k使用wget的客户端最大带宽为200k对超过600k的avi格式的文件最大带宽为200kbyte/s实例二:<Virtualhost *> BandwidthModule On ForceBandWidthModule On LargeFileLimit .avi 1 20000 LargeFileLimit .mpg 1 20000 Servername www.phpddt.com</Virtualhost>该实例对虚拟主机进行了限制,指定的文件类型avi和mpg最大带宽为20K,ForceBandWidthModule On必须有。实例三:<Virtualhost *> BandwidthModule On AddOutputFilterByType MOD_BW text/html text/plain Bandwidth all 5000 Servername www.phpddt.com </Virtualhost>

 

ProFTPd服务器中配置虚拟用户

在Windows下FTPD以某一个帐号运行,所有的FTP用户权限管理全部由FTPD来完成与系统帐号无关。但是在xNix下则不同,FTPD只允许那些系统帐号登陆。但是我们往往希望FTPD用户和系统帐号分离方便管理。这样就需要使用ProFTPD的虚拟用户功能。

首先在proftpd.conf中添加:

AuthOrder mod_auth_file.c mod_auth_unix.c

AuthUserFile /usr/local/etc/ftpd.passwd

#AuthGroupFile /usr/local/etc/ftpd.group

然后重启portftpd服务

service proftpd restart

AuthOrder为FTP用户身份验证顺序。mod_auth_file.c是ProFTPD的虚拟用户验证,虚拟用户和组的信息存储在下面的AuthUserFile和AuthGroupFile指定的文件中,不过我想搞简单点所以就不要虚拟组了。mod_auth_unix.c是系统用户身份验证,即/etc/passwd。

然后使用添加如下命令添加一个新的虚拟用户:

ftpasswd --passwd --file=/usr/local/etc/ftpd.passwd --name=test --uid=1002 --home=/usr/local/ftp/test --shell=/usr/sbin/nologin

–passwd指定建立一个新的虚拟用户,–group则建立一个虚拟组;

–file指定存储虚拟用户的文件;

–name指定此虚拟用户的用户名,密码会在命令执行时要求输入;

–uid指定此虚拟用户对应的系统用户UID,此虚拟用户将以此系统UID的身份读写文件;

–home指定此虚拟用户的根目录,就是其登陆FTP后的根目录;

–shell指定此虚拟用户的shell,为了安全当然指定一个不可登陆的shell了。

如果是源码安装的proftpd ,服务项proftpd以及命令ftpasswd分别在如下两个目录

ftpasswd :源码包目录/contrib/ftpasswd

proftpd服务程序:源码包目录/contrib/dist/rpm/proftpd.init.d

加上可执行权限。然后将ftpasswd 拷贝到/usr/local/sbin目录下面

将proftpd.init.d拷贝到/etc/init.d/下面 重命名为proftpd

 

修改密码:ftpasswd --passwd --name=user_dgcn --change-password --file=/EassosData/ftp_user/ftpd.passwd

阿里云 ubuntu 下配置ftp服务器 proftpd

一、安装ProFTPD

$ sudo apt-get install proftpd

二、添加ftp组及用户

$ groupadd ftpgroup

// -d 参数表示默认目录

$ useradd ftpadmin -d /home/ftp_files/ -g ftpgroup

执行完这句的时候,cat /etc/group 发现ftpgroup组下面没有用户 ftpadmin

//最后一句显示:ftpgroup:x:1001:

这时候执行 gpasswd -a ftpadmin ftpgroup // 添加用户ftpadmin到组ftpgroup

给用户ftpadmin设置密码 passwd ftpadmin

//修改完以后在执行 cat /etc/group 最后一句显示:ftpgroup:x:1001: ftpadmin
三、修改用户 chroot

连接成功但并没有限定用户 ftpadmin 的根目录,也就是chroot,用户还可以访问上级目录

// 修改 proftpd配置文件

$ vi /etc/proftpd/proftpd.conf

// 去掉如下行前的注释 #

# DefaultRoot ~

// 重启 proftpd 即可

$ /etc/init.d/proftpd restart

四、禁止用户终端登录

// 编辑 /etc/passwd

$ vi /etc/passwd

ftpu:x:1006:1004::/home/ftp_files/:/bin/sh

修改成

ftpu:x:1006:1004::/home/ftp_files/:/sbin/nologin

重启proftpd后ftp客户端提示无法连接:

-------------------------------

530 Login incorrect.

-------------------------------

经检查发现当前系统的shells列表中没有 /sbin/nologin

// 添加 /sbin/nologin 支持

$ vi /etc/shells

// 在该文档中添加一行

/sbin/nologin

五、重启proftpd,完成.

==========================================

如果ftp客户端上传失败的时候。请注意一下目录的权限

Linux VPS流量查看/监测工具 -- vnStat

vnStat是一个应用于Linux或BSD平台,对网卡流量做监控。 因为并非是基于网络包嗅探的方式而是基于/proc的分析。现在vnStat已经有出vnstat PHP frontend 扩展了,可以以PHP脚本的形式直接调用vnStat监测的数据,如下图:

vnstat1

vnstat2

下面说一下具体的安装步骤:

下载:
wget http://soft.vpser.net/status/vnstat/vnstat-1.10.tar.gz
解压:
tar xvzf vnstat-1.10.tar.gz
进入目录:
cd vnstat-1.10/
编译安装:
make
make install
如果64位平台上编译的话用make 64bit命令

这样vnstat 就安装好了。下面讲vnstat的工作运行配置。

下载最新版vnstat PHP frontend,

地址:http://soft.vpser.net/status/vnstat/vnstat_php_frontend-1.5.1.tar.gz

解压文件,改名为vnstat,然后上传到某个网站根目录下,这样就可以以http://www.vpser.net/vnstat 来访问到,就出来页面了,但此时没有数据,因为还要使系统生成数据。

建立流量数据库:
ifconfig 指令查看需要监控的网卡,假设只有eth0
然后生成数据库:
/usr/bin/vnstat -u -i eth0
然后定时更新数据库,通过cron的方式:

实际上在安装vnstat时,已经在系统里安装好了vnstat的cron,crontab内容在/etc/cron.d/vnstat,如果没有使用命令touch /etc/cron.d/vnstat 创建。
内容为:
0-55/5 *        * * *   root   vnstat -u -i eth0
0-55/5 *        * * *   root   vnstat --dumpdb -i eth0 >/var/lib/vnstat/vnstat_dump_eth0

第一行为安装时自动指定的.

第二行是为了更新eth0的数据后,dump出来一个文件,给 php访问接口访问.

这里dump出来的vnstat_dump_eth0 文件名是有规定的。

# 注意:有时候采用上面的收集办法,无法采集到数据,可以采用下面的办法

cat > /var/lib/vnstat/dump.sh<<EOF
vnstat -u -i eth0
vnstat --dumpdb -i eth0 >/var/lib/vnstat/vnstat_dump_eth0
EOF

再执行:
crontab -e

加入执行命令

*/5 * * * * sh /var/lib/vnstat/dump.sh

再删除vnstat原有的cron

rm /etc/cron.d/vnstat

在vnstat_php_frontend-1.5.1.tar.gz 包里的config.php 里有说明。

最后,编辑 vnstat/config.php 这个文件,将数据目录改为 /var/lib/vnstat/,如果不存在此目录,需要使用mkdir -p /var/lib/vnstat/ 创建此目录。
即:
$data_dir = '/var/lib/vnstat/';

指定显示标题

$iface_title['eth0'] = 'VPSer-Linode';

下面设置以什么图片格式显示,可以是svg或png,一般选择png就可以,svg在IE下需要安装插件,Firefox不需要;如果用png在IE、Firefox下均能直接显示。

$graph_format='png';

指定vnstat的安装目录,如果是安装上述方法安装,直接按下面填写即可。

$vnstat_bin = '/usr/bin/vnstat';

将要监控的网卡指定为1个:

// list of network interfaces monitored by vnStat
//$iface_list = array(’eth0′, ‘eth1′, ’sixxs’);
$iface_list = array(’eth0′,);

// will be displayed instead
//
$iface_title['eth0'] = ‘Internal’;
//$iface_title['eth1'] = ‘Internet’;
//$iface_title['sixxs'] = ‘SixXS IPv6′;

修改语言为英语:$language = 'nl'; 将nl替换为en 保存。

 

------------------------------------------------------

Linux查看网络即时网速

sar -n DEV 1 100

1代表一秒统计并显示一次
100代表统计一百次