利用iptables来做pptp的防火墙

嗯,今天帮朋友做了一个VPN服务器的安全规则,又了解了什么叫GRE,果然,三人行必有我师哈
具体做法如下

首先默认拒绝的策略

iptables -P INPUT DROP
iptables -P FORWARD DROP

然后针对拨入数据包做限制,在这里,除了pptp的监听端口1723之外,还要允许GRE协议,端口是47

iptables -A INPUT -p gre -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 1723 -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

然后就是给拨入的地址做伪装

iptables -A POSTROUTING -s 192.168.0.0/255.255.255.0 -j MASQUERADE

接下来设置FORWARD,前面我们做了默认拒绝的策略,你也可以像我们一样,只允许客户访问特殊的IP或者IP段

iptables -A FORWARD -d 8.8.0.0/16 -j ACCEPT
iptables -A FORWARD -d 202.103.96.112 -j ACCEPT

当然,如果你允许VPN客户端访问所有的网站,你可以忽略上面所有关于FORWARD链的操作
或者,现在再做一次

iptables -P FORWARD ACCEPT

linux下使用mdadm进行软raid升级

参考:http://scotgate.org/2006/07/03/growing-a-raid5-array-mdadm/

好多年没有玩过raid了,最近又开始搞起来了硬件配置,这才知道,现在的raid与五年前的raid相比已经有很大进行了。大部分的raid卡都支持raid升级了,不仅仅是阵列里面的硬盘数可以升级,连raid级别都可以改变,实在是让人叹为观止。

linux下的软raid也可以进行升级,目前我只知道可以进行硬盘数目的添加。具体操作方法如下:

1,先添加逻辑盘到阵列中做备用盘(spare)

mdadm --add /dev/md1 /dev/sdf1

2,然后升级阵列到你想要的硬盘数目。示例中的4就是阵列中不包括备用盘的硬盘数目为4个

mdadm --grow /dev/md1 --raid-devices=4

3,最后进行分区检查并进行逻辑容量扩容。

fsck.ext3 /dev/md1
resize2fs /dev/md1

WIFI无线信号最好还是使用1-11频道

最近忙得要死,忙里偷闲中,解决了一个WIFI的故障。

故障现象:新买的一个思科的AIR-AP113,配置好之后发现所有的东西工作正常,除了Wireless IP Phone。

解决思路:仔细检查了所有的配置,实在是没发现哪个地方不对,而且使用其他设备(如笔记本)都能获到IP,能正常连接到网络。后来怀疑网线质量问题导致PoE供电不足,换了网线,甚至与正常的AP进行位置对调,故障仍在。最后把频道从13调到11,一切都正常了。

故障原因:好像在美国的WIFI设备只使用1-11频道,而可能我们那个Wireless IP Phone是从美国买的。。。

当rsync遇到非默认端口的ssh

但是如果遇到ssh不是22端口的呢?man了半天,其实很简单

rsync -zvrtopg -e ‘ssh -p portnumber’

很简单很好用!特别是对于小文件特别多的时候,rsync独特算法的优势展现得淋漓尽致 !

禁用 IPv6[转]

来源:http://wiki.ubuntu.org.cn/如何禁用IPv6

for ubuntu
1. 在终端下输入 gksudo gedit /etc/modprobe.d/aliases
2. 注释掉这一行 alias net-pf-10 ipv6
3. 存盘
4. 在终端下输入 gksudo gedit /etc/modprobe.d/blacklist
5. 加入这一行 blacklist ipv6
6. 保存文件&重启电脑

for kubuntu
1. 在终端下输入 kdesu kate /etc/modprobe.d/aliases
2. 注释掉这一行 alias net-pf-10 ipv6
3. 存盘
4. 在终端下输入 kdesu kate /etc/modprobe.d/blacklist
5. 加入这一行 blacklist ipv6
6. 保存文件&重启电脑

必须重启电脑才生效。

做完以上这些后,打开一个终端并输入:

ip a | grep inet6

如果没有任何输出就说明 ipv6 确实关闭了。

………………………………….
以上方法不适用于ubuntu 8.10之后的版本 ubuntu 8.10之后的版本想要禁止 IPV6 需要在启动内核后面加入“disable_ipv6=1” 做内核参数直接传递。
………………………………….

对于ubuntu 9.10及以后版本 ,可用以下方法:

1. gksu gedit /etc/default/grub

GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash”
变为
GRUB_CMDLINE_LINUX_DEFAULT=”ipv6.disable=1 quiet splash”

2. sudo update-grub

U盘安装windows7

其实,微软就出了一个方案,但我总是没有成功,如果你有兴趣,不妨试试微软官方的官方。链接在此:
http://store.microsoft.com/Help/ISO-Tool

然后,分享一个更智能更方便的方法http://www.windows7en.com/Win7/5720.html

  1. 首先我们需要找到一个4GB大小的U盘然后将它插在上网本上。
  2. 打开屏幕左下角的“开始菜单”,然后运行“cmd”命令,紧接着你会看见一个控制窗口弹出。
  3. 然后在窗口中输入以下内容:
  * 首先键入‘diskpart’命令;
  * ‘list disk’:敲入该命令系统将自动列出所有电脑上发现的磁盘,包括我们刚刚插上去的U盘。
  * 此时可以看到U盘所对应的编号(如#),紧接着键入:‘select disk #’;
  * 然后键入‘clean’;
  * 键入‘create partition primary’;
  * 然后输入‘select partition 1’;
  * 输入‘active’;
  * 再输入‘format fs=fat32 quick’。

  到这里就可以把Windows 7安装文件复制到U盘中了,然后就需要你将Windows 7 的ISO文件当作一个虚拟DVD来进行安装,十分简单,你可以按照以下步骤实现:
  1. 首先安装一个免费软件MagicDisc,该软件是用来创建和管理虚拟光驱的,当然如果你还知道其他这类软件也可以选用别的,这里我们就使用这个免费软件了。
  2. MagicDisc安装完成后会出现在系统托盘处,此时,右键点击MagicDisc,然后选择‘Virtual CD/DVD-Rom’来设置DVD光驱。
  3. 然后点击‘Mount’会弹出一个对话窗口让你选择Windows 7 ISO镜像文件。
  4. 此次在Windows资源管理器中,打开刚刚设置的DVD光驱就能看见所有Windows 7安装文件了,这时你需要做的就是把所有这些文件复制粘贴到U盘中,这样你就拥有一个Windows 7的安装U盘了。
  只要你自己会安装Windows系统,到这里基本就大功告成了,无论你想在自己的任一电脑中安装Windows 7系统,把这个Windows 7的安装U盘插入就可以了,完全不需要使用DVD光驱。对了,小编还要提醒你一点,使用这个U盘安装Windows 7系统的时候,别忘了在重启电脑后进入BIOS把系统首选启动设备改换为USB外接设备哦!^-^

mysqldump迁移编码不同的数据库

来源:http://hi.baidu.com/seaweaver/blog/item/fbd9a8ec933c532562d09f5c.html

第一步,导出旧库

mysqldump --default-character-set latin1 -uroot -pXXX --database db >     /tmp/old.sql

第二步,转换编码

iconv -t utf-8 -f gb2312 -c /tmp/old.sql > /tmp/new.sql

第三步,导入新库
修改new.sql,增加一条sql语句: “SET NAMES utf8;”,保存。

mysql -hlocalhost -uroot db < new.sql

这次进行论坛迁移时,这个小blog居然一再出现乱码,实在是让小可我实在是汗顏。
进行深入分析时,发现dump出来的文件里面就已经是乱码了。用file进行分析时,发现文件已经是UTF8。
最后仔细想想新旧服务器之间的区别,可能只有mysql server字符集的区别。老服务器用的是默认的latin1,而新服务器我们改成了utf8。
在笔记本的ubuntu上装了个mysql,把sql文件导入,select了一下,发现数据居然是正常了的。
这样子问题就很明显了,马上在笔记本上执行

mysqldump  --default-character-set=latin1  -uroot -p123456 myhnet > myhnet.sql

再用cat看了一个myhnet.sql的内容,里面的中文已经是正常了。
用vi打开文件,把里面所有的latin1替换成utf8,上传到服务器,再导入,果然一切正常了~~~~

mysql的FILE权限

前天晚上把MySQL的系统数据库给重装/升级了一下,结果昨天就出了问题了

昨天整整花了两个小时调试了两个小问题,第一个是procedure的问题,第二个就是这个FILE权限的问题。

第一个问题由于前面有function与trigger的经验,很快就定位解决了。

第二个问题由于以前没有经验,弄了好久才定位到这位一段SQL上面,当然了,他原来的SQL可比这个长多了。

SELECT * INTO OUTFILE 'data.txt'
  FIELDS TERMINATED BY ','
  FROM table2;

原来要让MySQL向系统里面写文件必须要给一个FILE权限。而这个权限是一个全局权限,我们在用下面这个语句进行授权时根本就不能把这个权限授给用户。

grant ALL on db.* to user@'host' identified by 'password';

必须要单独进行授权:

grant FILE on *.* to user@'host' identified by 'password';