Press "Enter" to skip to content

Month: August 2014

CentOS 6配置vsftpd

最近被pureftpd的乱码搞到头疼了。查了很多资料包括官方文档,要让pureftpd支持utf-8编码,需要在编译的时候加上–with-rfc2640选项,于是我又重新编译了一遍,发现该功能依然是失效的!很无奈只好放弃pureftpd了转向vsftpd的怀抱了。经过简单的测试,发现vsftpd默认编码就是utf-8,且能够自动处理文件的编码(例如当收到无效字节时会自动禁用utf-8,即使有用户以gbk上传的文件,也能正常显示,这个功能很赞)。本文CentOS 6 64bit上面配置vsftpd的过程,记录一下。

假设ftp的根目录是/home/wwwroot/ftp:

$ yum install vsftpd

$ useradd -d /home/wwwroot/ftp -g www -s /sbin/nologin 用户名
$ passwd 用户名

$ touch /etc/vsftpd/chroot_list

$ vim /etc/vsftpd/vsftpd.conf

#对以下选项作更改,如果没有就添加
anonymous_enable=NO
idle_session_timeout=600
ftpd_banner=Welcome to zhukun.net FTP service.
chroot_list_enable=YES     #是否启用列表文件,默认为NO
chroot_local_user=YES      #列表文件中的用户能否切换到上级目录,默认为NO
chroot_list_file=/etc/vsftpd/chroot_list
use_localtime=YES

$ chkconfig --level 2345 vsftpd on
$ service vsftpd start
$ chown -R 用户名 /home/wwwroot/ftp
Leave a Comment

CentOS下给pptp限速

其实PPP的配置文件里有一个限速的配置项,但该配置项在Linux系统下不起作用。因此只好从其它方向研究一下限速的办法了。本文在CentOS 6 64bit系统上测试成功。

假设已经安装好了pptpd,且pptpd的子网段是172.16.36.0/24。

1,准备工作

yum install /sbin/tc

vim /etc/sysctl.conf
修改net.ipv4.ip_forward = 1
sysctl -p

#加载sch_htb模块
modprobe sch_htb
echo "modprobe sch_htb" >> /etc/rc.local

2,限速设置

vim /etc/ppp/ip-up

在最后一行的exit 0上面,添加如下内容

2 Comments

linux下使用iptables和tc限制速度

linux下使用iptables和tc限制速度的方法,记录一下。假设本地搭建了PPTPD服务,又或者有多个网卡,需要对其中一些接口做限速处理的情况,非常有用,本文基于CentOS 6.4 64bit。

1,初始配置

yum install /sbin/tc

vim /etc/sysctl.conf
修改net.ipv4.ip_forward = 1
sysctl -p

#清除原来的mangle表规则
iptables -t mangle -F

#加载sch_htb模块
modprobe sch_htb
echo "modprobe sch_htb" >> /etc/rc.local

2,TC限速设置

假设现在有两块网卡
eth0: xx.xx.xx.xx(外网的上网地址)
eth1: 172.16.44.1(做为内网的网关)

Leave a Comment

CentOS 6使用mutt+msmtp发送邮件

CentOS系统下如果希望向外域发送邮件,需要配置sendmail+dovecot等一系列工具。其实不用这么麻烦,只要mutt+msmtp就可以实现向外域发送邮件的功能了。本文基于CentOS6 64bit。

1,安装配置msmtp

$ yum install gcc gcc-c++ gnutls gnutls-devel gnutls-utils openssl openssl-devel libidn libidn-devel -y
$ wget http://sourceforge.net/projects/msmtp/files/msmtp/1.4.32/msmtp-1.4.32.tar.bz2
$ tar -jxvf msmtp-1.4.32.tar.bz2
$ cd msmtp-1.4.32
$ ./configure --prefix=/usr/local/msmtp
$ cd msmtp-1.4.32
$ make && make install

$ mkdir /usr/local/msmtp/etc

生成配置文件

$ cat >>/usr/local/msmtp/etc/msmtprc<<EOF

直接复制以下内容粘贴在>号的位置即可

1 Comment

Win7系统下修改MTU值

MTU是通讯的两个设备间的协定,PC和路由LAN口之间有一个协定的MTU,路由WAN口和ISP之间又协定另一个。在PC与LAN之间的MTU应该小于等于WAN与ISP的MTU值,否则部分DF的大数据包会被丢弃,部分TCP应用会受到影响。很明显的表现就是:能打开一部分网页,QQ能正常登陆,但却有大量网站无法访问。但如果前者太小,一样能正常通讯,只不过会降低通讯效率(表现为网速慢一点)。

测试封包是否合适:
ping -f -l 1472 www.baidu.com

如果出现信息:Packet needs to be fragmented but DF set,那就表示封包值太大了!而如果出现:Reply from xx.xx.xx.xx: bytes=1472 time

在 Ping 测试中得到最大的封包大小,然后加上 28 。加上 28 byte 是因为 20 byte 是保留给 IP 标头, 8 byte 是给 ICMP 回应要求标头。记住!您必须为 Ping 测试结果加上 28 !

例如:
Ping 测试的最大封包大小是 1440
+ 28 IP 和 ICMP 标头
1468 就是您的最佳 MTU 设定。

查看本机MTU值:
netsh interface ipv4 show subinterfaces

修改本机MTU值:
netsh interface ipv4 set subinterface "无线网络连接" mtu=1460 store=persistent

注意:命令中的“无线网络连接”是连接的名字,每台电脑可能不一样,需要用上一条命令确定连接的名字。

参考资料:
http://www.tp-link.tw/FAQ-190.html

1 Comment

shell之if语句常见错误

以下是一个错误的if语句

#!/bin/bash
oldversion=b3-cdrom
function test()
{
    if [ ! `df -h | grep $oldversion` ]; then
        echo found.
    fi
}
test

以下都是正确的:

#!/bin/bash
oldversion=b3-cdrom
function test()
{
    if [ ! "`df -h | grep $oldversion`" ]; then
        echo found.
    fi
}
test

加双引号引起来就正确了……

下面这个也是正确的:

#!/bin/bash
oldversion=3
function test()
{
    if [ ! $oldversion ]; then
        echo found.
    fi
}
test
1 Comment