2010年4月

默认CentOS安装后,不启用vsftpd,且版本过旧。

1.安装VSFTPD

yum install vsftpd  

2.编辑配置文件

# Example config file /etc/vsftpd/vsftpd.conf  
 #  
 # The default compiled in settings are fairly paranoid. This sample file  
 # loosens things up a bit, to make the ftp daemon more usable.  
 # Please see vsftpd.conf.5 for all compiled in defaults.  
 #  
 # READ THIS: This example file is NOT an exhaustive list of vsftpd options.  
 # Please read the vsftpd.conf.5 manual page to get a full idea of vsftpd’s  
 # capabilities.  
 #  
 # Allow anonymous FTP? (Beware – allowed by default if you comment this out).  
 anonymous_enable=NO  
 #  
 # Uncomment this to allow local users to log in.  
 local_enable=YES  
 #  
 # Uncomment this to enable any form of FTP write command.  
 write_enable=YES  
 #  
 # Default umask for local users is 077. You may wish to change this to 022,  
 # if your users expect that (022 is used by most other ftpd’s)  
 local_umask=022  
 #  
 # Uncomment this to allow the anonymous FTP user to upload files. This only  
 # has an effect if the above global write enable is activated. Also, you will  
 # obviously need to create a directory writable by the FTP user.  
 anon_upload_enable=NO  
 #  
 # Uncomment this if you want the anonymous FTP user to be able to create  
 # new directories.  
 anon_mkdir_write_enable=NO  
 #  
 # Activate directory messages – messages given to remote users when they  
 # go into a certain directory.  
 dirmessage_enable=YES  
 #  
 # The target log file can be vsftpd_log_file or xferlog_file.  
 # This depends on setting xferlog_std_format parameter  
 xferlog_enable=YES  
 #  
 # Make sure PORT transfer connections originate from port 20 (ftp-data).  
 connect_from_port_20=YES  
 #  
 # If you want, you can arrange for uploaded anonymous files to be owned by  
 # a different user. Note! Using “root” for uploaded files is not  
 # recommended!  
 chown_uploads=NO  
 #chown_username=whoever  
 #  
 # The name of log file when xferlog_enable=YES and xferlog_std_format=YES  
 # WARNING – changing this filename affects /etc/logrotate.d/vsftpd.log  
 xferlog_file=/var/log/vsftpd-xferlog  
 #  
 # Switches between logging into vsftpd_log_file and xferlog_file files.  
 # NO writes to vsftpd_log_file, YES to xferlog_file  
 xferlog_std_format=YES  
 #  
 # You may change the default value for timing out an idle session.  
 idle_session_timeout=600  
 #  
 # You may change the default value for timing out a data connection.  
 data_connection_timeout=120  
 #  
 # It is recommended that you define on your system a unique user which the  
 # ftp server can use as a totally isolated and unprivileged user.  
 #nopriv_user=ftpsecure  
 #  
 # Enable this and the server will recognise asynchronous ABOR requests. Not  
 # recommended for security (the code is non-trivial). Not enabling it,  
 # however, may confuse older FTP clients.  
 async_abor_enable=YES  
 #  
 # By default the server will pretend to allow ASCII mode but in fact ignore  
 # the request. Turn on the below options to have the server actually do ASCII  
 # mangling on files when in ASCII mode.  
 # Beware that on some FTP servers, ASCII support allows a denial of service  
 # attack (DoS) via the command “SIZE /big/file” in ASCII mode. vsftpd  
 # predicted this attack and has always been safe, reporting the size of the  
 # raw file.  
 # ASCII mangling is a horrible feature of the protocol.  
 ascii_upload_enable=YES  
 ascii_download_enable=YES  
 #  
 # You may fully customise the login banner string:  
 ftpd_banner=Welcome to longxin FTP service.  
 #  
 # You may specify a file of disallowed anonymous e-mail addresses. Apparently  
 # useful for combatting certain DoS attacks.  
 #deny_email_enable=YES  
 # (default follows)  
 #banned_email_file=/etc/vsftpd/banned_emails  
 #  
 # You may specify an explicit list of local users to chroot() to their home  
 # directory. If chroot_local_user is YES, then this list becomes a list of  
 # users to NOT chroot().  
 chroot_local_user=NO  
 chroot_list_enable=YES  
 # (default follows)  
 chroot_list_file=/etc/vsftpd/chroot_list  
 #  
 # You may activate the “-R” option to the builtin ls. This is disabled by  
 # default to avoid remote users being able to cause excessive I/O on large  
 # sites. However, some broken FTP clients such as “ncftp” and “mirror” assume  
 # the presence of the “-R” option, so there is a strong case for enabling it.  
 #ls_recurse_enable=YES  
 #  
 # When “listen” directive is enabled, vsftpd runs in standalone mode and  
 # listens on IPv4 sockets. This directive cannot be used in conjunction  
 # with the listen_ipv6 directive.  
 listen=YES  
 #  
 # This directive enables listening on IPv6 sockets. To listen on IPv4 and IPv6  
 # sockets, you must run two copies of vsftpd whith two configuration files.  
 # Make sure, that one of the listen options is commented !!  
 #listen_ipv6=YES

pam_service_name=vsftpd  
tcp_wrappers=YES  

3.创建必需文件和启动服务

touch /etc/vsftpd/chroot_list  
service vsftpd start  
chkconfig vsftpd on  

4.添加用户

vsftp默认使用系统用户, 现在添加用户ftpuser, 指向目录/home/ftpuser, 没有shell登录权限

useradd ftpuser -d /home/ftpuser -s /sbin/nologin  
passwd ftpuser  

5.增加新建用户到chroot_list文件

echo "ftpuser" >> /etc/vsftpd/chroot_list  
service vsftpd restart  

6.给防火墙添加规则

iptables -I INPUT -p tcp -m state –state NEW -m tcp –dport 21 -j ACCEPT  
iptables -I INPUT -p tcp -m state –state NEW -m tcp –dport 20 -j ACCEPT  

vi /etc/sysconfig/iptables-config

IPTABLESMODULES="ipconntrackftp ipnatftp ipconntracknetbiosns"

7.测试

从客户端测试吧。

一.ARP协议简介

当主机上的需要发送一个数据到一个目的IP时,设备驱动程序并不能理解这个IP地址. 系统需要将IP地址转换为网络地址,再传递给设备驱动程序发送出去. ARP(地址解析协议)就是这样的一种网络协议.用于将高层协议地址(IP地址)转换为物理网络地址.linux内核中保存有一个ARP表,里面保存有IP地址和MAC地址的对应关系.使用arp命令可以查看主机的ARP表.

# arp -a  
 m1 (192.168.0.1) at 00:E0:4C:FF:D7:31 [ether] on eth0

二.ARP协议相关工具

1.arptables

a) arptables简介

arptables是用户空间工具,用来管理 linux内核中的ARP规则表.这些规则用来检查ARP帧.arptables类似于iptables,但没有那么复杂.iptables工作于ip层,用于对ip包进行管理.arptables工作与arp协议层,用于对arp数据帧进行管理.arptables可以像iptables那样对arp数据帧进行各种规则设置,可以ACCEPT,DROP等.

b) arptables的安装

CentOS下安装方法:

yum install arptables_jf.i386  

Ubuntu下安装方法:

sudo apt-get install arptables  

c) arptables命令的语法

 arptables [-t table] -[AD] chain rule-specification [options]  
 arptables [-t table] -[RI] chain rulenum rule-specification [options]  
 arptables [-t table] -D chain rulenum [options]  
 arptables [-t table] -[LFZ] [chain] [options]  
 arptables [-t table] -[NX] chain  
 arptables [-t table] -E old-chain-name new-chain-name  
 arptables [-t table] -P chain target [options]

链(chain)
kernel表是用来区分不同设置的不同功能.规则的每个设置叫做一个”链”.每个链是有一个排序了的规则列表,用来于ARP帧相匹配.如果一个规则与一个ARP帧相匹配,一个”操作说明”会提供需要进行哪些操作.操作说明叫做”目标”.然而,如果帧与当前链中的当前规则不匹配,则继续与链中的下一条规则进行检查.用户可以建立一个新的链,作为规则的”目标”来使用.

目标(target)
包含有一个ARP帧与一个帧处理说明的防火墙规则说明叫做一个”目标”.当一个帧与一个规则相匹配时,则kernel按”目标”的定义进行下一步操作.“目标”可以是:ACCEPT,DROP.CONTINUE,RETURN,扩展定义或用户指定规则. ACCEPT表示允许这个帧通过.DROP表示这个帧将被丢弃.CONTINUE表示继续进行下一条规则.这样可以很方便的计算,有多少帧经过了某个规则.RETURN表示不在这个链中继续进行匹配,返回到上一条链的下一条规则.

表(table)
在kernel中只有一个ARP表.这个表是一个过滤器.你可以在arptables命令中使用-t filter参数.使用时,-t参数必须是arptables命令的第一个参数. -t,–table是一个过滤器,在kernel中仅有这一个表,它包含2个(2.4.x内核)或3个(2.6.x内核)内建规则:INPUT(发送帧的源主机),OUTPUT(本地产生的帧),FORWARD(由桥代码转发的帧).2.4.X内核中没有FORWARD规则.

arptables命令参数
命令行参数分为几个部分:命令部分,杂项部分,规则说明,匹配扩展,监视器扩展.
命令(command)

arptables命令参数用于指定在使用-t参数定义的表中的执行动作.如果你没有使用-t参数指定一个表名,则命令将应用于默认的过滤表.使用-Z命令时,命令行每次只能  使用一个命令.  
-A,–append 在指定的链结尾添加一个规则.  
-D,–delete 从指定的链中删除规则.这个命令有2种用法:  
1.指定要删除规则的序号,语法是: start_nr[:end_nr],可以使用负数.  
2.指定要删除规则的详细内容.  
-I,–insert 按序号,在指定的链中插入规则.如当前的序号为N,则可以使用-N到N+1作为插入序号.序号0表示表示在最后一条规则后插入新规则,等同于-A参数.
-R,–replace 替换链中指定的规则.如果当前的序号是N,则指定的序号可以是1到N之间的数字.  
-P,–policy 在链中设置指定目标的策略,可以为:ACCEPT,DROP或RETURN.  
-F,–flush 清空指定的链.如果没有指定链,则所有的链都将被清空.清空链不会改变链的策略.  
-Z,–zero 将指定链的计数器置0.如果没有指定链,则所有计数器都将置0.-Z命令可以与-L命令结合使用.当同时使用-Z,-L命令时,计数器的值会先被打印出来,然后置0.  
-L,–list 输出指定链中的规则.如果没有指定链,所有将输出所有链中的规则.  
-N,–new-chain 建立新的用户链.用户链的数量没有限制,但用户链的名称最多可以有31个字符.  
-X,–delete-chain 删除指定的用户链.用户链中必须为空.如果没有指定用户链,则所有为空的用户链将被删除.  
-E,–rename-chain 重命名指定链.你可以重命名一个用户链,也可以重命名一个标准链名.  
-V,–version 显示arptables程序的版本号.  
-h,–help 输出语法帮助信息.  
-j,–jump 目标  规则的目标.可以是:ACCEPT,DROP,CONTINUE,RETURN,目标扩展或用户定义链名.  
-s,–source-ip [!] IP地址[/掩码]  源IP地址  
-d,–destination-ip [!] IP地址[/掩码] 目的IP地址  
–source-mac [!] MAC地址[/掩码] 源MAC地址  
–destination-mac [!] MAC地址[/掩码]  目的MAC地址.  
-i,–in-interface [!] 设备名 用于接收帧的接口(应用于INPUT,FORWARD链).–in-if是这个选项的别名.  
-o,–out-interface [!] 设备名 用于发送帧的接口(应用于OUTPUT,FORWARD链).–out-if是这个选项的别名.  
-l,–h-length 长度[/掩码] 硬件长度(单位字节).  
–opcode 代码[/掩码] 操作码(2字节).可以使用:1=请求,2=回复,3=反解析请求,4=反解析回复, 5=动态反解析请求,6=动态反解析回复,7=动态反解析错误,8=逆向ARP请求, 9=ARP_NAK  
–h-type 类型[/掩码] 硬件类型(2字节,十六进制).可以使用:1=Ethernet.  
–proto-type 类型[/mask] 协议类型(2字节).可以使用:0×800=IPv4

d) arptables使用实例

# arp -a  
 m1 (192.168.0.1) at 00:E0:4C:FF:D7:31 [ether] on eth0  

显示当前ARP表信息
当前ARP表中保存有一个主机的arp信息,m1主机,ip地址192.168.0.1

# arptables -D INPUT -s 192.168.0.1 -j DROP  

设置arp规则,将所有192.168.0.1的arp包全部丢弃.

# arp -d 192.168.0.1 -i eth0  

使用arp命令,删除arp表中的192.168.0.1的记录.

# arp -a  
 m1 (192.168.0.1) at on eth0  

arp表中已没有m1主机的信息.

# ping 192.168.0.1  
 PING m1 (192.168.0.1) 56(84) bytes of data.  
 From m2 (192.168.0.2) icmp_seq=2 Destination Host Unreachable  
 From m2 (192.168.0.2) icmp_seq=3 Destination Host Unreachable  
 From m2 (192.168.0.2) icmp_seq=4 Destination Host Unreachable  

由于无法获得m1主机MAC信息,所以,无法与m1主机进行通信.

# arptables -D INPUT -s 192.168.0.1 -j DROP  

删除arptables规则.

# arp -a  
m1 (192.168.0.1) at 00:E0:4C:FF:D7:31 [ether] on eth0  

arp表中重新记录了m1的MAC信息.

# ping 192.168.0.1  
PING m1 (192.168.0.1) 56(84) bytes of data.  
64 bytes from m1 (192.168.0.1): icmp_seq=1 ttl=64 time=0.315 ms  

一般情况下,我们可以做如下的规则定义:

 arptables -F  
 arptables -A IN –src-mac ! 网关MAC -j DROP  
 arptables -A IN -s ! 网关IP -j DROP

查询arptables状态

 arptables -L

2.arpwatch

a) arpwatch简介

arpwatch用来监听网络中的ARP数据包并进行记录,同时将监听到的变化通过E-mail来报告给系统管理员. arpwatch使用pcap(3)来监听本地以太接口的arp数据包.

b) arpwatch的安装

CentOS下安装方法:

yum install arpwatch.i386  

Ubuntu下安装方法:

sudo apt-get install arpwatch  

c)arpwath命令的语法

 arpwatch [ -dN ]  
 [ -f datafile ]  
 [ -i interface ]  
 [ -n net[/width ]]  
 [ -r file ]  
 [ -s sendmail_path ]  
 [ -p ]  
 [ -a ]  
 [ -m addr ]  
 [ -u username ]  
 [ -R seconds ]  
 [ -Q ]  
 [ -z ignorenet/ignoremask ]  
 -d 标记用来启用调试模式.  
 -f 标记用来设置使用的数据库名,默认是arp.dat.  
 -i 用来指定网络接口.  
 -n 用于说明本地网络.  
 -r 指定读取一个由tcpdump或pcapture生成信息文件,而不从网络接口中  
 读取.\\-s 用于指定sendmail程序的路径.  
 -p 指定禁用”混合模式”.网络接口不是”混合模式”时,ARP广播也可以通过.  
 -a 默认情况下,arpwatch仅记录默认网络接口上,第一个IP地址子网的arp  
 信息.使用-a参数,则记录网络接口上所有IP地址子网的arp信息.  
 -m 指定一个用于接收变更信息的邮件地址.  

d)arpwatch使用实例

# arpwatch -i eth0 -s [email protected]  

监听eth0接口,并将arp的变更信息,发送到本地的root用户邮箱中.

3.手动arp绑定的方式。

如果服务器作为内网网关使用,可以在内网网卡界面

ifconfig eth1 -arp  

关闭ARP响应(假设eth1是内网网卡)

arp -f /etc/arp.list #设置静态ARP表  

以下是ARP(8) 关于arp.list格式的描述,

Cause the file filename to be read and multiple entries to be set in the ARP tables. Entries in the file should be of the form hostname ether_addr [temp] [pub] with argument meanings as given above. Leading whitespace and empty lines are ignored. A `#' character will mark the rest of the line as a comment.

方法一:手动

步骤:

1、单击“开始——运行,然后输入regedit (打开注册表)

2、依次展开:HEKEY——LOCAL——MACHIME/SOFTWARE/microsoft/WINDOWS/CURRENTVERSION/EXPLORER/DESKTOP/NAMESPACE 在左边空白外点击“新建”,选择:“主键”,把它命名为“645FFO40——5081——101B——9F08——00AA002F954E”再把右边的“默认”的主键的键值设为“回收站”,然后退出注册表。

3、要重启你的计算机。

只要你机器没有运行过磁盘整理。系统完好.任何文件应该都可以找回来。

方法二:易我数据恢复软件

EasyRecovery Pro v6.04 汉化版

点击这里下载即可;

[迅雷专用高速下载]

EasyRecovery Pro v6.10.07 汉化补丁

[迅雷专用高速下载]

一款威力非常强大的硬盘数据恢复工具。能够帮你恢复丢失的数据以及重建文件系统。EasyRecovery 不会向你的原始驱动器写入任何东东,它主要是在内存中重建文件分区表使数据能够安全地传输到其他驱动器中。你可以从被病毒破坏或是已经格式化的硬盘中恢复数据。该软件可以恢复大于 8.4GB 的硬盘。支持长文件名。被破坏的硬盘中像丢失的引导记录、BIOS 参数数据块;分区表;FAT 表;引导区都可以由它来进行恢复。

FinalData v2.01.1028 企业版

[迅雷专用高速下载]

在Windows环境下删除一个文件,只有目录信息从FAT或者MFT(NTFS)删除。这意味着文件数据仍然留在你的磁盘上。所以,从技术角度来讲,这个文件是可以恢复的。FinalData就是通过这个机制来恢复丢失的数据的,在清空回收站以后也不例外。另外,FinalData可以很容易地从格式化后的文件和被病毒破坏的文件恢复。甚至在极端的情况下,如果目录结构被部分破坏也可以恢复,只要数据仍然保存在硬盘上。

EasyRecovery是一个威力非常强大的硬盘数据恢复工具,能够帮你恢复丢失的数据以及重建文件系统。下面我们就以EasyRecovery为例,介绍删除软件恢复的过程。

一、回收站里被删除文件

首先启动EasyRecovery,点击左边列表中的”数据修复”。

数据修复里面有六个选项,点击”DeletedRecovery”,它的功能是查找并恢复已删除的文件。

选择要恢复文件所在的分区,在默认情况下软件对分区执行的是快速扫描,如果你需要对分区进行更彻底的扫描,就在”完成扫描”前打上勾就行了,选择好分区后,点击”下一步”。

点击下一步后,软件就开始扫描你刚才选择的分区了。

经过3~4分钟的扫描后结果就出来了,点击左面文件夹列表中的文件夹,在右面列出来到文件就是能被恢复的删除文件,选择一个要恢复的文件,一定要把前面的勾打上,然后点击”下一步”。

选择好要恢复的文件后,就来选择恢复目标的选项,一般我们都是恢复到本地驱动器里的,那么点击后面的”浏览”来选择文件保存的目录(选择分区时请注意,保存的分区不能与文件原来所在的分区一样,否则不能保存)。

点击下一步后,文件就开始恢复了,恢复完成后,弹出一个对话框显示文件恢复摘要,你可以进行保存或者打印,然后点击”完成”。一个文件就被恢复了。

二、格式化后文件的恢复

如果要恢复格式化后的文件,以前我们想都不敢想,现在不用怕了,因为我们有了EasyRecovery。

在软件界面点击”FormatRecovery”,它的功能就是能从一个已经格式化的分区中恢复文件。

先选择已经格式化的分区,然后再选择这个分区格式化前的文件系统格式,现在一般都是”FAT32″,选好后点击”下一步”。

软件就开始进行文件的扫描了。

扫描完成后,选择一个要恢复的文件,方法和前面的一样,然后点击”下一步”。

然后来选择恢复文件要保存的目录,再点击”下一步”。

接着文件就开始恢复了,恢复完成后,弹出一个对话框显示文件恢复摘要,可以进行保存或者打印,最后点击”完成”。

EasyRecovery 不仅能恢复被删除的文件,它还能恢复被破坏的硬盘中像丢失的引导记录、BIOS 参数数据块、分区表、FAT 表、引导区等都可以由它来进行恢复;而且最新的6.0版本使用了新的数据恢复引擎,能够对 ZIP 文件以及微软的 Office 系列文档进行修复。如果你以前有重要的文件被误删除过,那就赶快安装EasyRecovery来恢复吧,只要时间相隔的不要太久(相隔太久原来删除的文件就有可能被覆盖掉的),相信一定能够恢复的!

Do you know that you can create your own socks5 proxy with just one command:

ssh -f -N -D 5050 "USERNAME"@SSHserver.com  

-f -N option is just to run ssh in background, the important option is -D.

from FreeBSD SSH(1) man:

-D [bind_address:]port

Specifies a local "dynamic" application-level port forwarding. This works by allocating a socket to listen to port on the local side.

For windows users they can do it with putty

C:\>putty.exe -ssh "USERNAME"@SSHserver.com -pw "PASSWORD" -P 22 -D 5050  

what we did is that we connect to a ssh server (could by your remote linux or unix server, or a free shell account you have) and give it option to create a tunnel with port forwarding for port 5050

if you set your browser to use socks5 proxy with the address 127.0.0.1 and port 5050, the traffic will be forwarded to the tunnel and you will browse the internet through the remote ssh server.

to disable port forwarding in your server, edit /etc/ssh/sshd_config and set “AllowTcpForwarding yes” to “no”

上周一个客户的网关服务器出现故障,于是乎重新安装了操作系统,我选择了CentOS,也许有人会问为什么不用RouterOS,做流量控制很容易,都有现成的脚本可用,干嘛要那么费事?其实,我的想法是Linux下面的流量控制,我没有接触过,期望借此机会,能够学习一下,以便未来使用。抱着这样的目标,才有了真正的学习知识的动力。

因为Centos是RH的一个分支,所以获得的技术支持比较健全和稳定,再者很多人推荐,在服务器上安装使用很方便。国内的源也比较多,比如网易搜狐都有。

操作系统的安装我就再不废话了,网上有很多教程。系统安装完成后,iptables就是已经在运行了,tc(traffic control)也有了,cbq脚本也有,具体目录:

/sbin/tc
/sbin/cbq

在做之前,我曾在网上搜集过资料,但是很多都是抄来抄去的资料,没有多少价值。正确的步骤应该是,首先添加cbq需要的配置文件,然后compile配置文件,生成tc规则语句并且加载到接口上,之后启动cbq start进行流量控制。

因客户有100台客户端,一台装有CentOS的服务器扮演了路由和网关的角色,服务器有eth0(连接内网),eth1(连接公网)。起初,按照cbq脚本的说明,写的配置文件,总是在compile的时候报错,错误消息如下:

find: warning: you have specified the -maxdepth option after a non-option argument (, but options are not positional (-maxdepth affects tests specified before it as well as those specified after it). Please specify options before other arguments.

find: warning: you have specified the -maxdepth option after a non-option argument (, but options are not positional (-maxdepth affects tests specified before it as well as those specified after it). Please specify options before other arguments.  

搞的限速不能成功实现,于是问谷歌,看看有没有什么解决办法,后来终于从一个老外那发现了有价值的信息,是因为cbq脚本的一个错误导致的,修改好后就可以了。编辑/sbin/cbq文件,查找Gather all DEVICE字符串,修改的脚本如下:

### Get a list of configured classes  
 CLASSLIST=`find $1 -maxdepth 1 \( -type f -or -type l\ ) -name 'cbq-*' \  
 -not -name '*~' -printf "%f\n"| sort`  
 [ -z "$CLASSLIST" ] &&  
 cbq_failure "no configuration files found in $1!"

### Gather all DEVICE fields from $1/cbq-*  
 DEVFIELDS=`find $1 -maxdepth 1 \( -type f -or -type l \) -name 'cbq-*' \  
 -not -name '*~'| xargs sed -n 's/#.*//;  
 s/[[:space:]]//g; /^DEVICE=[^,]*,[^,]*(,[^,]*)?/ \  
 { s/.*=//; p; }'| sort -u`

修改之后,顺利生成限速规则,限速成功。下面我讲一下配置文件,配置文件主要是给cbq生成规则适用的,CentOS的默认路径在/etc/sysconfig/cbq这个目录下,当然可以改其他目录,编辑/sbin/cbq文件,搜索CBQ_PATH字符串,将后面的路径改为你希望放置cbq配置文件的目录。

配置文件的命名在cbq脚本文件中没有写,网络搜索的结果是cbq-xxxx.yyyXXXX0000-ffff的16进制数,yyy是所限制的接口名,比如eth0。如果大家有更加准确的信息,请与我分享一下。

我的配置文件内容如下:

DEVICE=eth0,100Mbit,20Mbit  
RATE=1600Kbit  
WEIGHT=160Kbit  
PRIO=5  
RULE=,192.168.10.21  

eth0是局域网接口,100M链接,我是按照20Mbit的速度进行划分的。因客户端数量为100,所以限制下载速度200k。rule规则的意思就是不管从哪里来,到192.168.10.21的流量受到限制。

编辑完成后,执行

cbq compile && cbq start  

之后,就可以使用cbq stats查看具体的统计情况了。

你也许会问iptables的应用在哪里?这个主要是应用在上传限制上,目前我正在测试脚本,如果正常,我将分享我的测试脚本。

下面是我的上传限制脚本,但是我还是不满意,因为它会对每一个IP生称两条mangle表规则,如果IP够多的话,会让mangle表很庞大,不知道哪位朋友有更好的优化办法?

#!/bin/sh  
UPLOAD=800Kbit #上传限制  
WEIGHT=80Kbit #最大可获得上传

INET=192.168.10.  
IPS=11 #起始IP  
IPE=110 #结束IP

IDEV=eth0 #内网接口  
ODEV=eth1 #公网接口

COUNTER=$IPS  
#empty any 20 rules on ODEV  
/sbin/tc qdisc del dev $ODEV root handle 20:  
#add a root class for sub class  
/sbin/tc qdisc add dev $ODEV root handle 20: cbq bandwidth 10Mbit avpkt 1000  
 while [ $COUNTER -le $IPE ]  
 do  
/sbin/tc class add dev $ODEV parent 20:0 classid 20:1$COUNTER cbq bandwidth 10Mbit rate $UPLOAD weight $WEIGHT prio 5 allot 1514 maxburst 20 avpkt 1000  
/sbin/tc qdisc add dev $ODEV parent 20:1$COUNTER sfq quantum 1514b perturb 15  
/sbin/tc filter add dev $ODEV parent 20:0 protocol ip prio 100 handle $COUNTER fw classid 20:1$COUNTER  
COUNTER=` expr $COUNTER + 1 `  
done

#define iptables

COUNTER=$IPS  
 /sbin/iptables -t mangle -F  
 while [ $COUNTER -lt $IPE ]  
 do  
 /sbin/iptables -t mangle -A PREROUTING -i $IDEV -s $INET$COUNTER -j MARK –set-mark $COUNTER  
 /sbin/iptables -t mangle -A PREROUTING -i $IDEV -s $INET$COUNTER -j RETURN  
 COUNTER=` expr $COUNTER + 1 `  
 done

同步文章到百度空间的Wordpress插件–wp2hibaidu

Version 1.0 支持功能

1。支持选择发布到百度空间中文章的评论权限。

2。支持选择发布到百度空间中文章的访问权限。

3。支持选择发布到百度空间中文章的转载权限。

4。支持将Wordpress中文章链接发布到百度空间,并可选原文链接显示的位置。

Version 1.0 不支持功能

1。不支持将Wordpress中私密(private)文章发布到百度空间。

2。不支持自动获取百度空间的类别

下载地址 http://wordpress.org/extend/plugins/wp2hibaidu/

.

好久没有写日志了,不知道该怎么去描述这段时间,当岁数已经到三十的时候,心理上首先就感觉有点老了,呵呵,其实我不想变老,我想一直都是一个年轻的小伙子。哈。

从春节到现在,每天都在被长辈们催促人生大事,伴随而来的就是安排的各种相亲活动。话说,第一次是我大舅给安排的一个女孩,23岁,哈,岁数挺小,个子挺高的,可惜不是我喜欢的类型。第二次,阿姨给安排了一个23岁的姑娘,依旧不是我喜欢的类型,感觉没有气质,不够优雅。女孩子应该有一点气质和优雅的,毕竟相亲是为了组建一个和谐的家庭,哈,抱歉,我用到了“和谐”这个词儿,似乎最近不是很受欢迎,扯远了,相亲这种事情绝对不能委屈自己,即便大海捞针,梦里寻她千百度,难度再高,也要选择一个正确的人,当然,我的意思并不是一定要十全十美,扪心自问,我又何尝是那样的。引用数学的一个概念,只要约等于1就可以了,各位看官明白我的意思吗?

自从有了摩托车,还是像以前一样,每天骑车上下班,方便了很多。到目前,车车已经跑了800公里,让我很满意,无论是穿梭于闹市的车流之中,还是高速航行,给我的感觉是很爽,不过呢,还是很怀念以前的越野车,不怕颠簸的路面,专走不寻常路,而现在只能乖乖的在柏油路面行驶,不过这样也好。还是一个孩子。

上月月底,好友郑也顺利的荣升爹地,喜得千金,前两天吃满月酒,还看到了他可爱的千金,长得蛮像他老婆的。看着好友们都已经当爹了,心理的感慨还是很多的。你说我不发愁,肯定是假的了。真的。

昨天还有很多感慨,今天却不知道要怎么写了。前些日子,Q的签名一直是今年要完成一件傻傻的事情,很多朋友就问,是结婚的事情吧。看来我太单纯了,大家都清楚我的想法。哈。即便没有老婆,也要告诉自己,要好好的生活,开心每一天,做自己想做的事情,不要亏待了自己。

有些事情就是需要想开的,想不开永远在心里都是一个难以打开的心结。回首往事,也许错的比对的多,把每一个错误当成一个包袱,那么我想心里即便有再大的空间,也只是一个堆满了包袱的阴暗的杂物房。不知道为什么,电脑里面一直存着葛爷的非诚勿扰,总是会去一遍又一遍的看,不是看葛爷怎么相亲,而是那一段北海道的片段,葛爷和乌桑的交情,乌桑开车回家的路上的泪水,葛爷和乌桑的对话,这些深深的引起了我的共鸣。据说,葛爷的非诚勿扰2正在拍摄中,很期待后作,希望能更加完美。

那天吃满月酒,好朋友们约定清明节假期去兰州附近郊游,我也打算好了,骑着车车上路,再当一次风尘仆仆的独行侠,潇洒地游走在城市的边缘。我记得,那年国庆节我们三个人骑车去卓尼,在一段坡度不大的路上,我们挥开双手,依靠平衡感掌握车车,畅快的呼吸每一口空气,回忆总是很美好,好想再有时间出去跑一趟,我的同事说想徒步去拉萨,我也好想骑着车车征服世界屋脊。我有美好的回忆,幸福的梦想,我还缺少什么呢?

过些日子,某好友的火锅店就要开张了,哈哈,大家说好一定要去捧场,并且以后要让他给我们免单,哈哈。这两个月tony两口子,小鱼,我,小袁我们经常在周末约,虽然我喝不了多少酒,但是依旧很愿意陪着他们高兴一会,话说我发现一婚的男人很吃香啊,就这三个月里面小袁已经领了四个不同的小青年了,太佩服他了。哈哈。不过1月的时候,我还是有一次喝翻了,我们在鼓歌酒吧,当天我心情也不是很好,反正我喝了很多很多,最后是从酒吧里面强捂着嘴跑出来的,之后就是“现场直播”了,那天小鱼也在,我那天也是哭得稀里哗啦的,仿佛所有的伤心神经都被刺激了。我就是这么一个性情的人。

说说工作吧,最近在朋友那儿工作,主要是给网吧维护,还是学习到了很多有用的东西,发现了RouterOS,这是一个很好的软路由OS,基于linux内核,功能强大,容量很小,可惜的就是此OS是一款付费软件,当然,还是可以从网上找到crack的版本。最近也一直被UDP FLOOD困扰,某网吧的网关服务器用的是Ubuntu系统,但是经常收到大量的udp校验和错误的包,我个人怀疑是一种FLOOD攻击,查阅了很多网吧,发现从系统上是没有办法防的,必须架设硬件防火墙。从目前有的平台上来看,CentOS和RouterOS都是网关服务器的绝佳平台,CentOS就是更灵活些,更适合作为服务器OS来用,相较于其他Linux版本来看。

老妈子很反对我在朋友单位上班,看来我还得换换。她总是希望我能在一个新的环境下工作,没有任何依靠,完全靠自己去努力,说回来还是对个人综合能力的考验,看我够不够水平。

WIN7的时代来了,你们准备好更新知识,接受它了吗?

我最近也很少登Q,觉得很无聊,打开电脑,也就是听歌,看美剧,电影,学习一些知识了。别让我把所有的话都说完,来日方长。

祝,各位节日快乐。嘿嘿。