使用Iptables来控制Linux开放或者禁止指定端口

1、关闭所有的 INPUT FORWARD OUTPUT 。
下面是命令实现:

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP

再用命令 iptables -L -n 查看 是否设置好, 好看到全部 DROP 了
这样的设置好了,我们只是临时的, 重启服务器还是会恢复原来没有设置的状态
还要使用 service iptables save 进行保存
看到信息 firewall rules 防火墙的规则 其实就是保存在 /etc/sysconfig/iptables
可以打开文件查看 vi /etc/sysconfig/iptables
2、打开22端口

iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT

 

执行 iptables -L -n 查看所有规则

Chain INPUT (policy DROP)
target     prot opt source               destination
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:22

Chain FORWARD (policy DROP)
target     prot opt source               destination

Chain OUTPUT (policy DROP)
target     prot opt source               destination
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp spt:22

 

现在Linux服务器只打开了22端口,用putty.exe测试一下是否可以链接上去。
如果可以连的上去,就说明没有问题。

最后别忘记了保存 对防火墙的设置
通过命令:service iptables save 进行保存

iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT

针对这2条命令进行一些讲解吧
-A 参数就看成是添加一条 INPUT 的规则
-p 指定是什么协议 我们常用的tcp 协议,当然也有udp 例如53端口的DNS
到时我们要配置DNS用到53端口 大家就会发现使用udp协议的

而 –dport 就是目标端口 当数据从外部进入服务器为目标端口
反之 数据从服务器出去 则为数据源端口 使用 –sport

-j 就是指定是 ACCEPT 接收 或者 DROP 不接收
3、禁止某个IP访问
1台Linux服务器,2台windows xp 操作系统进行访问
Linux服务器ip 192.168.1.99
xp1 ip: 192.168.1.2
xp2 ip: 192.168.1.8

下面看看我2台xp 都可以访问的

192.168.1.2  这是 xp1 可以访问的,
192.168.1.8 xp2 也是可以正常访问的。

那么现在我要禁止 192.168.1.2 xp1 访问, xp2 正常访问,
下面看看演示

通过命令 iptables -A INPUT -p tcp -s 192.168.1.2 -j DROP
这里意思就是 -A 就是添加新的规则, 怎样的规则呢? 由于我们访问网站使用tcp的,
我们就用 -p tcp , 如果是 udp 就写udp,这里就用tcp了, -s就是 来源的意思,
ip来源于 192.168.1.2 ,-j 怎么做 我们拒绝它 这里应该是 DROP

好,看看效果。好添加成功。下面进行验证 一下是否生效

一直出现等待状态 最后 该页无法显示 ,这是 192.168.1.2 xp1 的访问被拒绝了。

再看看另外一台 xp 是否可以访问, 是可以正常访问的 192.168.1.8 是可以正常访问的
4、如何删除规则
首先我们要知道 这条规则的编号,每条规则都有一个编号

通过 iptables -L -n –line-number 可以显示规则和相对应的编号

num  target     prot opt source               destination
1    DROP       tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:3306
2    DROP       tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:21
3    DROP       tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:80

多了 num 这一列, 这样我们就可以 看到刚才的规则对应的是 编号2

那么我们就可以进行删除了
iptables -D INPUT 2
删除INPUT链编号为2的规则。

再 iptables -L -n 查看一下 已经被清除了。
5、过滤无效的数据包
假设有人进入了服务器,或者有病毒木马程序,它可以通过22,80端口像服务器外传送数据。
它的这种方式就和我们正常访问22,80端口区别。它发向外发的数据不是我们通过访问网页请求
而回应的数据包。

下面我们要禁止这些没有通过请求回应的数据包,统统把它们堵住掉。

iptables 提供了一个参数 是检查状态的,下面我们来配置下 22 和 80 端口,防止无效的数据包。

iptables -A OUTPUT -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

可以看到和我们以前使用的:

iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT

多了一个状态判断。

同样80端口也一样, 现在删掉原来的2条规则,
iptables -L -n –line-number    这个是查看规则而且带上编号。我们看到编号就可以
删除对应的规则了。

iptables -D OUTPUT 1     这里的1表示第一条规则。

当你删除了前面的规则, 编号也会随之改变。看到了吧。

好,我们删除了前面2个规则,22端口还可以正常使用,说明没问题了

下面进行保存,别忘记了,不然的话重启就会还原到原来的样子。

service iptables save    进行保存。

Saving firewall rules to /etc/sysconfig/iptables:          [  OK  ]

其实就是把刚才设置的规则写入到 /etc/sysconfig/iptables 文件中。
6、DNS端口53设置
下面我们来看看如何设置iptables来打开DNS端口,DNS端口对应的是53

大家看到我现在的情况了吧,只开放22和80端口, 我现在看看能不能解析域名。

host www.google.com 输入这个命令后,一直等待,说明DNS不通

出现下面提示 :
;; connection timed out; no servers could be reached

ping 一下域名也是不通
[root@localhost ~ping www.google.com
ping: unknown host www.google.com

我这里的原因就是 iptables 限制了53端口。

有些服务器,特别是Web服务器减慢,DNS其实也有关系的,无法发送包到DNS服务器导致的。

下面演示下如何使用 iptables 来设置DNS 53这个端口,如果你不知道 域名服务端口号,你

可以用命令 : grep domain /etc/services

[root@localhost ~] grep domain /etc/services
domain          53/tcp                          # name-domain server
domain          53/udp
domaintime      9909/tcp                        # domaintime
domaintime      9909/udp                        # domaintime

看到了吧, 我们一般使用 udp 协议。

好了, 开始设置。。。

iptables -A OUTPUT -p udp --dport 53 -j ACCEPT

这是我们 ping 一个域名,数据就是从本机出去,所以我们先设置 OUTPUT,
我们按照ping这个流程来设置。

然后 DNS 服务器收到我们发出去的包,就回应一个回来

iptables -A INPUT -p udp --sport 53 -j ACCEPT

同时还要设置

iptables -A INPUT -p udp --dport 53 -j ACCEPT
iptables -A OUTPUT -p udp --sport 53 -j ACCEPT

好了, 下面开始测试下, 可以用 iptables -L -n 查看设置情况,确定没有问题就可以测试了

 

[root@localhost ~] iptables -L -n
Chain INPUT (policy DROP)
target     prot opt source               destination
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:22
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:80
ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0           udp spt:53
ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0           udp dpt:53

Chain FORWARD (policy DROP)
target     prot opt source               destination

Chain OUTPUT (policy DROP)
target     prot opt source               destination
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp spt:22 state ESTABLISHED
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp spt:80 state ESTABLISHED
ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0           udp dpt:53
ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0           udp spt:53

可以测试一下 是否 DNS 可以通过iptables 了。

[root@localhost ~]host www.google.com
www.google.com is an alias for www.l.google.com.
www.l.google.com is an alias for www-china.l.google.com.
www-china.l.google.com has address 64.233.189.104
www-china.l.google.com has address 64.233.189.147
www-china.l.google.com has address 64.233.189.99

正常可以解析 google 域名。

ping 方面可能还要设置些东西。

用 nslookup 看看吧

 

[root@localhost ~]nslookup
> www.google.com
Server:         192.168.1.1
Address:        192.168.1.1#53

Non-authoritative answer:
www.google.com canonical name = www.l.google.com.
www.l.google.com canonical name = www-china.l.google.com.
Name:   www-china.l.google.com
Address: 64.233.189.147
Name:   www-china.l.google.com
Address: 64.233.189.99
Name:   www-china.l.google.com
Address: 64.233.189.104

说明本机DNS正常, iptables 允许53这个端口的访问。
7、iptables对ftp的设置
现在我开始对ftp端口的设置,按照我们以前的视频,添加需要开放的端口
ftp连接端口有2个 21 和 20 端口,我现在添加对应的规则。

iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -p tcp --dport 20 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 21 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 20 -j ACCEPT

好,这样就添加完了,我们用浏览器访问一下ftp,出现超时。

所以我刚才说 ftp 是比较特殊的端口,它还有一些端口是 数据传输端口,
例如目录列表, 上传 ,下载 文件都要用到这些端口。

而这些端口是 任意 端口。。。 这个 任意 真的比较特殊。

如果不指定什么一个端口范围, iptables 很难对任意端口开放的,
如果iptables允许任意端口访问, 那和不设置防火墙没什么区别,所以不现实的。

那么我们的解决办法就是 指定这个数据传输端口的一个范围。

下面我们修改一下ftp配置文件。

我这里使用vsftpd来修改演示,其他ftp我不知道哪里修改,大家可以找找资料。

[root@localhost root] vi /etc/vsftpd.conf

在配置文件的最下面 加入

pasv_min_port=30001
pasv_max_port=31000

然后保存退出。

这两句话的意思告诉vsftpd, 要传输数据的端口范围就在30001到31000 这个范围内传送。

这样我们使用 iptables 就好办多了,我们就打开 30001到31000 这些端口。

 

iptables -A INPUT -p tcp --dport 30001:31000 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 30001:31000 -j ACCEPT

service iptables save

最后进行保存, 然后我们再用浏览器范围下 ftp。可以正常访问

用个账号登陆上去,也没有问题,上传一些文件上去看看。

看到了吧,上传和下载都正常。。 再查看下 iptables 的设置

 

[root@localhost root] iptables -L -n
Chain INPUT (policy DROP)
target     prot opt source               destination
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0          tcp dpt:22
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0          tcp dpt:21
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0          tcp dpt:20
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0          tcp dpts:30001:31000

Chain FORWARD (policy DROP)
target     prot opt source               destination

Chain OUTPUT (policy DROP)
target     prot opt source               destination
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0          tcp spt:22
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0          tcp spt:21
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0          tcp spt:20
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0          tcp spts:30001:31000

这是我为了演示ftp特殊端口做的简单规则,大家可以添加一些对数据包的验证
例如 -m state –state ESTABLISHED,RELATED  等等要求更加高的验证

关于Zipalign的介绍和使用方法

Android 1.6 SDK中包含了一个用于优化APK的新工具zipalign。它提高了优化后的Applications与Android系统的交互效率(俗话:“要致富先修路”,Android小组重新为Applications与Android系统之间搭建了一条高速公路),从而可以使整个系统的运行速度有了较大的提升。Android小组强烈建议开发者在发布新Apps之前使用zipalign优化工具,而且对于已经发布但不受限于系统版本的Apps,建议用优化后的APK替换现有的版本。在下面的内容中将从三个方面介绍zipalign:

zipalign如何优化
如何使用zipalign
使用zipalign的理由
根据官方文档的描述,Android系统中Application的数据都保存在它的APK文件中,同时可以被多个进程访问,安装的过程包括如下几个步骤:

Installer通过每个apk的manifest文件获取与当前应用程序相关联的permissions信息
Home application读取当前APK的Name和Icon等信息。
System server将读取一些与Application运行相关信息,例如:获取和处理Application的notifications请求等。
最后,APK所包含的内容不仅限于当前Application所使用,而且可以被其它的Application调用,提高系统资源的可复用性。
zipalign优化的最根本目的是帮助操作系统更高效率的根据请求索引资源,将resource-handling code统一将Data structure alignment(数据结构对齐标准:DSA)限定为4-byte boundaries。如果第一次接触有关Data structurealignment的内容,强烈建议搜索更多与其相关的内容来充分理解这样做的最终目的,这也是理解zipalign工作原理的关键。如果不采取对齐的标准,处理器无法准确和快速的在内存地址中定位相关资源。

目前的系统中使用fallbackmechanism机制处理那些没有应用DSA标准的应用程序,这的确大大的方便了普通开发者无需关注繁琐的内存操作问题。但是相反,对于这样的应用程序将给普通用户带来一定的麻烦,不但影响程序的运行的效率,而且使系统的整体执行效率下降和占用大量不必要的内存资源,甚至消耗一定的电池资源(battery life)。

在Android 1.6 SDK中提供了三种应用Align操作的方法:

使用ADT:
从 ADT 0.9.3版本开始,可以通过export wizard自动对发布的applicationpackages执行align操作。设置方法:鼠标右键点击Project,然后选择”Android Tools” > “ExportSigned Application Package…”。或者可以直接在AndroidManifest.xml中设置。
使用 Ant:
对于API Level 大于等于4的Application Packages可以直接通过Ant build script来Align优化。但对于API Level小于4的情况,只能采取手动Align优化。
默认下应用Ant build script运行Debug packages(API Level >= 4)时,将自动执行Align优化。
针对Release packages。当使用Ant build script执行Align优化时,首先需要拥有足够的信息来Sign packages。当完成Signing之后, 才能执行Align优化。通过官方文档了解如何Sign Packages。
手动执行Align优化:
利用tools文件夹下的zipalign工具。首先调出cmd命令行,然后执行:zipalign -v 4 source.apk androidres.apk。这个方法不受API Level的限制,可以对任何版本的APK执行Align优化。
同时可以利用zipalign工具检查当前APK是否已经执行过Align优化。命令:zipalign -c -v 4 androidres.apk
再一次提醒开发者,立刻应用zipalign工具强制优化已经发布的application packages,并让你的用户使用最新的版本。

update-script脚本语法说明

转载自:http://bbs.angodroid.com/thread-559-1-1.html
update-script脚本语法说明(根据android源代码中的recovery.c进行的定义):

 

1.copy_dir
语法:copy_dir <src-dir> <dst-dir> [<times**p>]
<src-dir>表示原文件夹,<dst-dir>表示目的文件夹,[<times**p>]表示时间戳
作用:将<src-dir>文件夹中的内容复制到<dst-dir>文件夹中。<dst-dir>文件夹中的原始内容将会保存不变,除非<src-dir>文件夹中有相同的内容,这样<dst-dir>中的内容将被覆盖
举例:copy_dir PACKAGE:system SYSTEM:(将升级包中的system文件夹复制到手机中)

2.format
语法:format <root>
<root>表示要格式化的分区
作用:格式化一个分区
举例:format SYSTEM:(将手机/system分区完全格式化)
注意:格式化之后的数据是不可以恢复的

3.delete
语法:delete <file1> [… <fileN>]
<file1> [… <fileN>]表示要格式化的文件,可以是多个文件用空格隔开
作用:删除文件1,2到n
举例:delete SYSTEM:app/Calculator.apk(删除手机systen文件夹中app中的Calculator.apk文件)

4.delete_recursive
语法:delete_recursive <file-or-dir1> [… <file-or-dirN>]
<file-or-dir1> [… <file-or-dirN>]表示要删除的文件或文件夹,可以使多个,中间用空格隔开
作用:删除文件或者目录,删除目录时会将目录中的所有内容全部删除
举例:delete_recursive DATA:dalvik-cache(删除/data/dalvik-cache文件夹下的所有内容)

5.run_program
语法:run_program <program-file> [<args> …]
<program-file>表示要运行的程序,[<args> …]表示运行程序所加的参数
作用:运行终端程序
举例:run_program PACKAGE:install_busybox.sh(执行升级包中的install_busybox.sh脚本)

6.set_perm
语法:set_perm <uid> <gid> <mode> <path> [… <pathN>]
<uid>表示用户名称,<gid>表示用户组名称,<mode>,表示权限模式,<path> [… <pathN>]表示文件路径,可以使多个,用空格隔开
作用:设置单个文件或目录的所有者和权限,像linux中的chmod、chown或chgrp命令一样,只是集中在了一个命令当中
举例:set_perm 0 2000 0550 SYSTEM:etc/init.goldfish.sh(设置手机system中的etc/init.goldfish.sh的用户为root,用户组为shell,所有者以及所属用户组成员可以进行读取和执行操作,其他用户无操作权限)

7.set_perm_recursive
语法:set_perm_recursive <uid> <gid> <dir-mode> <file-mode> <path> [… <pathN>]
<uid> 表示用户,<gid>表示用户组,<dir-mode>表示文件夹的权限,<file-mode>表示文件的权限,<path> [… <pathN>]表示文件夹的路径,可以多个,用空格分开
作用:设置文件夹及文件夹中的文件的所有者和用户组
举例:set_perm_recursive 0 0 0755 0644 SYSTEM:app(设置手机system/app文件夹及其中文件的用户为root,用户组为root,app文件夹权限为所有者可以进行读、写、执行操作,其他用户可以进行读取和执行操作,其中的文件的权限为所有者可以进行读写操作,其他用户可以进行读取操作

8.show_progress
语法:show_progress <fraction> <duration>
<表示一个小部分> <表示一个小部分的持续时间>
作用:为下面进行的程序操作显示进度条,进度条会根据<duration>进行前进,当操作时间是确定的时候会更快
举例:show_progress 0.1 0(显示进度条当操作完成后前进10%)

9.symlink
语法:symlink <link-target> <link-path>
<link-target>表示链接到的目标,<link-path>表示快捷方式的路径
作用:相当于linux中的ln命令,将<link-target>在<link-path>处创建一个软链接,<link-target>的格式应为绝对路径(或许相对路径也可以),<link-path>为“根目录:路径”的形式
举例:symlink /system/bin/su SYSTEM:xbin/su(在手机中system中的xbin中建立一个/system/bin/su的快捷方式)

三星 SSSWITCH 0.9-1.x 设置

SSSWITCH的新版的菜单界面和0.85相比发生了新的变化,作者VOKU本意是简化菜单树形结构,方便大家,结果反而成了E文有困难同学的累赘,特作此文,结合自己当前的设置,希望给大家一点帮助.

一.启动:老规矩,虚拟模拟器里输入 ssscfg 回车,出现提示文字后回车一次取得授权并会出现主菜单
二.新主菜单:
1 Standard settings (标准设置)主要作用为开启/关闭各主要功能模块(如CPU频率设置,自动内存管理功能,内存锁定功能)。
输入 1 回车后进入 回出现如下10个子菜单。
注:如下图菜单,当你看到下面1-6选项菜单开头字母为ENABLE的,就表示这个选项你当前是DIABLE关闭状态。反之若开头字母是DISABLE,则当前该选项功能为开启状态
大家只要输入下列1-10菜单前面的序号,再按回车,即可改变当前选项的开启/关闭状态(1-6项);或者运行SSSWITCH自带的预置参数(7-9项)
1.ENABLE(或DISABLE) cpu setings (开启或关闭CPU设置 )
2.ENABLE(或DISABLE) KERNEL cpu setings if screen is on (开启或关闭?屏幕唤醒状态 CPU内核设置 )?
3.ENABLE(或DISABLE)lock apps in memory(开启或关闭 锁定APP程序至内存功能)
4.ENABLE(或DISABLE)memory settings(开启或关闭自动内存管理功能 不喜欢SSSWITCH的自动内存管理的朋友可以在这里禁用)
5.ENABLE(或DISABLE)3G/edge speed(开启或关闭3G/EDGE加速?使用联通3G卡的朋友可以尝试关闭这个看看有没有助益,默认是开启的。。。)
6.ENABLE(或DISABLE)I/O SPEED(开启或关闭I/O加速功能 这个是0.8.7开始的新功能,增加I/O任务调度的读取任务速度)
昏哥线——————–
7.LOAD PRESET CPU PROFILES (运行CPU设置预置模式??这个可以忽略。默认就好 )
8.LOAD PRESET MEMORY PROFILES(运行内存管理预置模式 这个随意 内存自定义数值乱了的时候可以运行这个恢复)
9.LOAD PRESET lock apps in memory SETTINGS(运行锁定程序到内存的预置模式??这个我个人不推荐 )
10.LOAD PRESET AUDIO/VIDIO PROFILES(运行?声音/视频参数预置模式 这个我从来不用,声音卡的可以尝试)
昏哥线——————–
ENTER RETURN TO MAIN MENU (输入回车返回主菜单)

2??ADVANCED SETTINGS (高级设置)–主要作用为自定义调整各功能模块具体参数值(前提是你在标准设置下预先启用ENABLE了该模块)
输入 2 回车后进入 会出现如下5个子菜单
大家可键入各菜单的序号 进入并设置参数
1.customize cpu settings when screen is ON??(自定义屏幕唤醒时CPU设置 这个就是调整手机唤醒时的最高/最低工作频率及相关电压,默认就好,新版延续了0.8.5的参数 很完美)
2.customize cpu settings when screen is OFF (自定义屏幕关闭时CPU设置 这个就是调整手机关闭时的最高/最低工作频率及相关电压,默认就好,新版延续了0.8.5的参数 很完美
3.customize memory settings(自定义自动内存管理阀值。如何设置可以看0.8.5设置教程,新版SSSWITCH这次多了一次设置,会先出现手机唤醒时候的自动内存管理阀值自定义,共8项?我依旧是 8 12 16 12 12 82 90 98),输入完后接着会出现手机屏幕关闭状态下的自动内存管理阀值自定义,这个阀值我建议大家就一路回车,保持默认值就好,这个默认值我试用下来很不错)
这次新版增添了屏幕关闭下的RAM阀值定义,应该是为了防止手机睡眠下有些不想关闭进程被杀掉。现在在屏幕唤醒状态下使用灵敏的自动内存参数保持RAM。屏幕关闭下使用保守的自动内存参数防止进程误杀,双管其下。作者VOKU提供了一个很不错的内存控制方式
4.customize I/O settings (自定义i/o设置预读加速功能 I/O算法还是保留默认吧,一路回车会出现一个新选项 CUSTMIZE READ-AHEAD FOR ALL?这个是加速系统内置存储读取文件速度
的,默认是1 512K,我比较了下,有时文件管理器浏览文件时会微卡,我目前选择了256K,一切正常,建议大家选择2 256K,再回车下去,就是SD-READAHED(SD读取加速)了,这个我一直觉得坑爹,还是选128K,默认是1024K貌似。
5.customize swap setings (自定义SWAP设置 这个就是调整SWAPNESS(SWAP交换率的 具体设置参照拙贴0.8.5教程 不赘述?我目前是选6?60%交换率,因为这个是LINUX默认值)

3 THEME /APP (主题/桌面程序)–主要作用为切换大家喜爱的主题/桌面程序/电子邮件端口
输入 3 回车后进入 会出现 3个子菜单
1.SWITCH theme(切换主题)
2.SWITCH luncher (切换 桌面程序)
3.SWITCH E-MAIL CLIENT(切换电子邮件端口)
这个功能我不太用,喜欢的同学可以去玩玩,

4 INFO/BACKUP (信息/备份)–这个选项大家可以查看到手机当前的各SSSWITCH功能模块参数模式/状态。也可以把当前的设置备份到SD卡,以便日后恢复
输入 4 回车后进入 会出现 3个子菜单
1.DISPLAY CURRENT SETTINGS (显示当前设置,大家可以在这里看到自己的自定义参数设置有没有设置成功)
2.DISPLAY STATISTICS(显示(系统)状态)这个没什么必要,大家打开一些系统信息软件就可以查看当前手机RAM多少/ROM剩余多少/SD卡剩余多少什么的
3.save/view/load SSSWITCH settings on sd card(保存当前设置到SD卡/查看/恢复 在SD卡的SSSWITCH设置) 打过仙剑98的,SAVE/LOAD**,大家都懂的呵呵

5 APPLY CHANGES AND EXIT?(保存设置并退出)?大家所有的自定义参数设置完后,请记得回车返回主菜单,输入 5 保存设置,否则白搭。这个就是0.8.5的第 10 选项!不
赘述了。

WordPress更换域名 主页和图片路径错误 解决办法

首先介绍下SQL替换命令

UPDATE 表名 SET 字段 = REPLACE(字段,’替换内容’,'替换值’);

示例如下:

UPDATE wp_options SET option_value = REPLACE(option_value,'old-domain.com','new-domain.com');

注意上面的标点要都要用英文半角。其中wp_options就是表名,option_value就是表wp_options里的一个字段,wp_options里有siteurl和home的值。

一般只要执行以下命令,就可完成域名的修改:

修改option_value里的站点url和主页地址

UPDATE wp_options SET option_value = replace(option_value, 'http://www.old-domain.com', 'http://www.new-domain.com') WHERE option_name = 'home' OR option_name = 'siteurl';

更正文章中内部链接及附件的地址

UPDATE wp_posts SET post_content = replace(post_content, 'http://www.old-domain.com', 'http://www.new-domain.com');

更正wordpress文章默认的永久链接

UPDATE wp_posts SET guid = replace(guid, 'http://www.old-domain.com','http://www.new-domain.com');

在 三星I5700 上手动安装openvpn

      因为三星没有完美的I5700 v#p#n的驱动,导致I5700没办法使用自带的v#p#n只能使用OPENv#p#n。每次OPENv#p#n安装之后都无法连接到最后总提示FATAL:ifconfig failed:can’t excute the extenal program.在各个论坛上发帖寻求帮助也无果,只能自己搜索了.还好,找到了手动安装的方法(前提是你的ROM内核必须自带 tun.ko 模块否则无法使用openv#p#n,则需要自己编译 tun.ko )

首先把用数据线连接电脑,打开CMD,进入ADB SHELL 目录,然后执行:

adb remount /system
adb push openv#p#n /system/xbin/
adb shell
mkdir /system/xbin/bb
ln -s /system/xbin/ifconfig /system/xbin/bb/ifconfig
ln -s /system/xbin/route /system/xbin/bb/route
ln -s /system/xbin/busybox /system/xbin/ifconfig
reboot

P.S: openv#p#n可以在此连接下载:http://www.hifact.com/openv#p#n

为PHP增加纯真IP数据库(qqwry)支持

 当我们的网站需要根据IP来查询IP来源时,我们需要一个IP数据库,而国内最好的IP数据库当属“纯真IP数据库”了。为了读取“纯真IP数据库”中的数据,一般情况下我们需要写一段PHP程序,而目前Discuz!中就有这样的PHP代码,我们可以直接拿来使用。这样的做法对于一般网站来说已经够用了,但是对于计数器网站,有大量的IP查询事务,这时候使用纯PHP代码的方式就显得效率低下了。有没有更高效的方法呢?答案当然是肯定的。国内就有人写出了这样的PHP扩展,并且此扩展已经登录在PECL网站了。此扩展的名字叫做QQWRY,网站地址:http://http://pecl.php.net/package/qqwry/

qqwry的安装

 qqwry的安装方法与一般PHP扩展的安装方法一样:

wget http://pecl.php.net/get/qqwry-0.1.0.tgz
tar zxvf qqwry-0.1.0.tgz
cd qqwry-0.1.0
./configure --with-php-config=/usr/local/web/php/bin/php-config
make
make install

然后在php.ini中加入qqwry支持

extension = "qqwry.so"

 然后,重启php即可实现PHP的纯真IP数据库支持了。相比纯PHP代码的实现,此扩展的效率是其的6至10倍。

 qqwry的使用

 使用方法很简单,首先就是实例化,传入纯真数据库的文件路径,然后调用q方法。该方法返回一个数组,第一个值为所属区域,第二个值为更详细的地址。下面的iconv是把数据从GB2312转到UTF-8,如果你的站点是用GB2312,那么这一步是不需要的。

$qqwry=new qqwry('QQWry.Dat');

list($addr1,$addr2)=$qqwry->q('127.0.0.1');
$addr1=iconv('GB2312','UTF-8',$addr1);
$addr2=iconv('GB2312','UTF-8',$addr2);
echo $addr1,'|',$addr2,"\n";

$arr=$qqwry->q('222.216.47.4');
$arr[0]=iconv('GB2312','UTF-8',$arr[0]);
$arr[1]=iconv('GB2312','UTF-8',$arr[1]);
echo $arr[0],'|',$arr[1],"\n";

$arr=$qqwry->q('64.233.187.99');
$arr[0]=iconv('GB2312','UTF-8',$arr[0]);
$arr[1]=iconv('GB2312','UTF-8',$arr[1]);
echo $arr[0],'|',$arr[1],"\n";

输出如下:

本机地址|
广西南宁市|(青秀区)电信ADSL
美国|加利福尼亚州Google公司

解决phpMyAdmin提示“链接表的附加功能尚未激活”的方法

版本:phpMyAdmin 较新版
错误描述:登陆后提示“链接表的附加功能尚未激活”
解决方法
1、进入phpmyadmin
2、直接在根目录导入phpmyadmin的scripts文件夹里的create_tables.sql,会自动生成名为phpmyadmin的数据库
3、然后修改phpmyadmin的libraries文件夹里的config.default.php(其实也可以是phpmyadmin根目录下的config.inc.php,但很多都没有,只有带sample的,没设置好,所以直接改default的,记得备份)
4、修改的部分
之前

$cfg['Servers'][$i]['pmadb'] = '';
$cfg['Servers'][$i]['bookmarktable'] = '';
$cfg['Servers'][$i]['relation'] = '';
$cfg['Servers'][$i]['table_info'] = '';
$cfg['Servers'][$i]['table_coords'] = '';
$cfg['Servers'][$i]['pdf_pages'] = '';
$cfg['Servers'][$i]['column_info'] = '';
$cfg['Servers'][$i]['history'] = '';
$cfg['Servers'][$i]['tracking'] = '';

之后

$cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
$cfg['Servers'][$i]['bookmarktable'] = 'pma_bookmark';
$cfg['Servers'][$i]['relation'] = 'pma_relation';
$cfg['Servers'][$i]['table_info'] = 'pma_table_info';
$cfg['Servers'][$i]['table_coords'] = 'pma_table_coords';
$cfg['Servers'][$i]['pdf_pages'] = 'pma_pdf_pages';
$cfg['Servers'][$i]['column_info'] = 'pma_column_info';
$cfg['Servers'][$i]['history'] = 'pma_history';
$cfg['Servers'][$i]['tracking'] = 'pma_tracking';

5、这些项目都不是连续的,逐个改吧,如果是根目录配置好的config.inc.php,却是连续的。
6、保存,重新登陆phpmyadmin,完成

ps.网上搜了很多方法,重点都是config文件的位置默认配置好都是在根目录的config.inc.php的,但很多都没配置,只有config.sample.inc.php这个,所以方法失效。

转自:http://neverno.info/O_O/articles-225-2011-04-14.html