存档

‘转载’ 分类的存档

影响postgresql性能的几个重要参数(ZT)

2012年2月19日 16hot 没有评论

本人现在开发的所有项目都使用postgresql,应用下来对它很是满意,现就影响postgresql性能的几个重要参数介绍如下,希望对PG的初学者有所帮助,如果你在实际应用中遇到什么问题,可给我留言,我们一起解决:
PG的配置文件是数据库目录下的postgresql.conf文件,8.0以后的版本可支持K,M,G这样的参数,只要修改相应参数后重新启动PG服务就OK了。

shared_buffers:这是最重要的参数,postgresql通过shared_buffers和内核和磁盘打交道,因此应该尽量大,让更多的数据缓存在shared_buffers中。通常设置为实际RAM的10%是合理的,比如50000(400M)

work_mem: 在pgsql 8.0之前叫做sort_mem。postgresql在执行排序操作时,会根据work_mem的大小决定是否将一个大的结果集拆分为几个小的和 work_mem查不多大小的临时文件。显然拆分的结果是降低了排序的速度。因此增加work_mem有助于提高排序的速度。通常设置为实际RAM的2% -4%,根据需要排序结果集的大小而定,比如81920(80M)

effective_cache_size:是postgresql能够使用的最大缓存,这个数字对于独立的pgsql服务器而言应该足够大,比如4G的内存,可以设置为3.5G(437500)

maintence_work_mem:这里定义的内存只是在CREATE INDEX, VACUUM等时用到,因此用到的频率不高,但是往往这些指令消耗比较多的资源,因此应该尽快让这些指令快速执行完毕:给maintence_work_mem大的内存,比如512M(524288)

max_connections: 通常,max_connections的目的是防止max_connections * work_mem超出了实际内存大小。比如,如果将work_mem设置为实际内存的2%大小,则在极端情况下,如果有50个查询都有排序要求,而且都使 用2%的内存,则会导致swap的产生,系统性能就会大大降低。当然,如果有4G的内存,同时出现50个如此大的查询的几率应该是很小的。不过,要清楚 max_connections和work_mem的关系。

分类: PostgreSQL, 转载 标签:

LUA中的字符串函数库

2011年12月20日 16hot 没有评论

Lua解释器对字符串的支持很有限。一个程序可以创建字符串并连接字符串,但不能截取子串,检查字符串的大小,检测字符串的内容。在Lua中操纵字符串的功能基本来自于string库。

字符串库中的一些函数是非常简单的:

string.len(s) 返回字符串s的长度;
string.rep(s, n) 返回重复n次字符串s的串;你使用string.rep(“a”, 2^20)可以创建一个1M bytes的字符串(比如,为了测试需要);
string.lower(s) 将s中的大写字母转换成小写(string.upper将小写转换成大写)。如果你想不关心大小写对一个数组进行排序的话,你可以这样:
table.sort(a, function (a, b) return string.lower(a) < string.lower(b) end)
string.upper(s) 将s中的小写字母转换成大写
string.upper和string.lower都依赖于本地环境变量。所以,如果你在 European Latin-1环境下,表达式:
string.upper("a??o") --> “A??O”
string.sub(s,i,j) 函数截取字符串s的从第i个字符到第j个字符之间的串。Lua中,字符串的第一个字符索引从1开始。你也可以使用负索引,负索引从字符串的结尾向前计数:-1指向最后一个字符,-2指向倒数第二个,以此类推。所以, string.sub(s, 1, j)返回字符串s的长度为j的前缀;string.sub(s, j, -1)返回从第j个字符开始的后缀。如果不提供第3个参数,默认为-1,因此我们将最后一个调用写为string.sub(s, j);string.sub(s, 2, -2)返回去除第一个和最后一个字符后的子串。
s = “[in brackets]”
print(string.sub(s, 2, -2)) –> in brackets
记住:Lua中的字符串是恒定不变的。string.sub函数以及Lua中其他的字符串操作函数都不会改变字符串的值,而是返回一个新的字符串。一个常见的错误是:
string.sub(s, 2, -2)
认为上面的这个函数会改变字符串s的值。如果你想修改一个字符串变量的值,你必须将变量赋给一个新的字符串:
s = string.sub(s, 2, -2)
string.char函数和string.byte函数用来将字符在字符和数字之间转换。string.char获取0个或多个整数,将每一个数字转换成字符,然后返回一个所有这些字符连接起来的字符串。string.byte(s, i)将字符串s的第i个字符的转换成整数;第二个参数是可选的,缺省情况下i=1。下面的例子中,我们假定字符用ASCII表示:

print(string.char(97)) –> a
i = 99; print(string.char(i, i+1, i+2)) –> cde
print(string.byte(“abc”)) –> 97
print(string.byte(“abc”, 2)) –> 98
print(string.byte(“abc”, -1)) –> 99

上面最后一行,我们使用负数索引访问字符串的最后一个字符。
Lua提供了string.format()函数来生成具有特定格式的字符串, 函数的第一个参数是格式(formatstring), 之后是对应格式中每个代号的各种数据. 由于格式字符串的存在, 使得产生的长字符串可读性大大提高了. 这个函数的格式很像C语言中的printf().函数string.format在用来对字符串进行格式化的时候,特别是字符串输出,是功能强大的工具。这个函数有两个参数,你完全可以照C语言的printf来使用这个函数。第一个参数为格式化串:由指示符和控制格式的字符组成。指示符后的控制格式的字符可以为:十进制’d';十六进制’x';八进制’o';浮点数’f';字符串’s'。在指示符’%'和控制格式字符之间还可以有其他的选项:用来控制更详细的格式,比如一个浮点数的小数的位数:
格式字符串可能包含以下的转义码:
%c – 接受一个数字, 并将其转化为ASCII码表中对应的字符
%d, %i – 接受一个数字并将其转化为有符号的整数格式
%o – 接受一个数字并将其转化为八进制数格式
%u – 接受一个数字并将其转化为无符号整数格式
%x – 接受一个数字并将其转化为十六进制数格式, 使用小写字母
%X – 接受一个数字并将其转化为十六进制数格式, 使用大写字母
%e – 接受一个数字并将其转化为科学记数法格式, 使用小写字母e
%E – 接受一个数字并将其转化为科学记数法格式, 使用大写字母E
%f – 接受一个数字并将其转化为浮点数格式
%g(%G) – 接受一个数字并将其转化为%e(%E, 对应%G)及%f中较短的一种格式
%q – 接受一个字符串并将其转化为可安全被Lua编译器读入的格式
%s – 接受一个字符串并按照给定的参数格式化该字符串
为进一步细化格式, 可以在%号后添加参数. 参数将以如下的顺序读入:
(1) 符号: 一个+号表示其后的数字转义符将让正数显示正号. 默认情况下只有负数显示符号.
(2) 占位符: 一个0, 在后面指定了字串宽度时占位用. 不填时的默认占位符是空格.
(3) 对齐标识: 在指定了字串宽度时, 默认为右对齐, 增加-号可以改为左对齐.
(4) 宽度数值
(5) 小数位数/字串裁切: 在宽度数值后增加的小数部分n, 若后接f(浮点数转义符, 如%6.3f)则设定该浮点数的小数只保留n位, 若后接s(字符串转义符, 如%5.3s)则设定该字符串只显示前n位.
在这些参数的后面则是上述所列的转义码类型(c, d, i, f, …).

print(string.format(“pi = %.4f”, PI))
–> pi = 3.1416
d = 5; m = 11; y = 1990
print(string.format(“%02d/%02d/%04d”, d, m, y))
–> 05/11/1990
tag, title = “h1″, “a title”
print(string.format(“<%s>%s“, tag, title, tag))
–>

a title

第一个例子,%.4f代表小数点后面有4位小数的浮点数。第二个例子%02d代表以固定的两位显示十进制数,不足的前面补0。而%2d前面没有指定0,不足两位时会以空白补足。对于格式串部分指示符得详细描述清参考lua手册,或者参考C手册,因为Lua调用标准C的printf函数来实现最终的功能。

以下是一些例子:

string.format(“%%c: %c”, 83) 输出S
string.format(“%+d”, 17.0) 输出+17
string.format(“%05d”, 17) 输出00017
string.format(“%o”, 17) 输出21
string.format(“%u”, 3.14) 输出3
string.format(“%x”, 13) 输出d
string.format(“%X”, 13) 输出D
string.format(“%e”, 1000) 输出1.000000e+03
string.format(“%E”, 1000) 输出1.000000E+03
string.format(“%6.3f”, 13) 输出13.000
string.format(“%q”, “One\nTwo”) 输出”One\
  Two”
string.format(“%s”, “monkey”) 输出monkey
string.format(“%10s”, “monkey”) 输出 monkey
string.format(“%5.3s”, “monkey”) 输出 mon

分类: LUA, 转载 标签:

Iptables 规则 一些简单实例和详细介绍(转)

2011年10月30日 16hot 没有评论

设定规则
iptables -p INPUT DROP
iptables -p OUTPUT ACCEPT
iptables -p FORWARD DROP
1、防止外网用内网IP欺骗
iptables -t nat -A PREROUTING -i eth0 -s 10.0.0.0/8 -j DROP
iptables -t nat -A PREROUTING -i eth0 -s 172.16.0.0/12 -j DROP
iptables -t nat -A PREROUTING -i eth0 -s 192.168.0.0/16 -j DROP
查看nat规则
iptables -t nat -L
2、如果想取消上面所加的规则:
iptables -F -t nat
iptables -X -t nat
iptables -Z -t nat
3、阻止一个IP连接本机
iptables -t filter -A INPUT -s 192.168.1.5 -i eth0 -j DROP
4、查看本机的IPTABLES的所填规则
iptables -L -n
5、清除filter中所有的规则连接
iptables -F
清除filter中使用者自定义连接中的规则
iptables -X
6、保存所修改的iptables规则
/etc/rc.d/init.d/iptables save
重新启动iptables服务
service iptables restart
7、关闭不安全的端口连接本机
iptables -A OUTPUT -p tcp –sport 31337 -j DROP
iptables -A OUTPUT -p tcp –dport 31337 -j DROP
8、开启所需要的端口
22
iptables -A INPUT -p tcp –dport 22 -j ACCEPT
iptables -A OUTPUT -p tcp –sport 22 -j ACCEPT
80
iptables -A OUTPUT -p tcp –sport 80 -j ACCEPT
iptables -A INPUT -p tcp –dport 80 -j ACCEPT
9、禁止一个IP或者一个IP段访问服务器端口服务
80端口
iptables -t filter -I INPUT 2 -s 192.168.5.0/24 -p tcp –dport http -j DROP
FTP端口
iptables -t filter -I INPUT 2 -s 192.168.7.9 -p tcp –dport ftp -j DROP

用iptables -ADC 来指定链的规则,-A添加 -D删除 -C 修改

iptables – [RI] chain rule num rule-specification[option]
用iptables – RI 通过规则的顺序指定

iptables -D chain rule num[option]
删除指定规则
iptables -[LFZ] [chain][option]
用iptables -LFZ 链名 [选项]

iptables -[NX] chain
用 -NX 指定链

iptables -P chain target[options]
指定链的默认目标

iptables -E old-chain-name new-chain-name
-E 旧的链名 新的链名
用新的链名取代旧的链名
说明
Iptalbes 是用来设置、维护和检查Linux内核的IP包过滤规则的。
可以定义不同的表,每个表都包含几个内部的链,也能包含用户定义的链。每个链都是一个规则列表,对对应的包进行匹配:每条规则指定应当如何处理与之相匹配的包。这被称作’target’(目标),也可以跳向同一个表内的用户定义的链。

TARGETS
防火墙的规则指定所检查包的特征,和目标。如果包不匹配,将送往该链中下一条规则检查;如果匹配,那么下一条规则由目标值确定.该目标值可以是用户定义的链名,或是某个专用值,如ACCEPT[通过], DROP[删除], QUEUE[排队], 或者 RETURN[返回]。
ACCEPT 表示让这个包通过。DROP表示将这个包丢弃。QUEUE表示把这个包传递到用户空间。RETURN表示停止这条链的匹配,到前一个链的规则重新开始。如果到达了一个内建的链(的末端),或者遇到内建链的规则是RETURN,包的命运将由链准则指定的目标决定。

TABLES
当前有三个表(哪个表是当前表取决于内核配置选项和当前模块)。
-t table
这个选项指定命令要操作的匹配包的表。如果内核被配置为自动加载模块,这时若模块没有加载,(系统)将尝试(为该表)加载适合的模块。这些表如下:filter,这是默认的表,包含了内建的链INPUT(处理进入的包)、FORWORD(处理通过的包)和OUTPUT(处理本地生成的包)。nat,这个表被查询时表示遇到了产生新的连接的包,由三个内建的链构成:PREROUTING (修改到来的包)、OUTPUT(修改路由之前本地的包)、POSTROUTING(修改准备出去的包)。mangle 这个表用来对指定的包进行修改。它有两个内建规则:PREROUTING(修改路由之前进入的包)和OUTPUT(修改路由之前本地的包)。
OPTIONS
这些可被iptables识别的选项可以区分不同的种类。

COMMANDS
这些选项指定执行明确的动作:若指令行下没有其他规定,该行只能指定一个选项.对于长格式的命令和选项名,所用字母长度只要保证iptables能从其他选项中区分出该指令就行了。
-A -append
在所选择的链末添加一条或更多规则。当源(地址)或者/与 目的(地址)转换为多个地址时,这条规则会加到所有可能的地址(组合)后面。

-D -delete
从所选链中删除一条或更多规则。这条命令可以有两种方法:可以把被删除规则指定为链中的序号(第一条序号为1),或者指定为要匹配的规则。

-R -replace
从选中的链中取代一条规则。如果源(地址)或者/与 目的(地址)被转换为多地址,该命令会失败。规则序号从1开始。

-I -insert
根据给出的规则序号向所选链中插入一条或更多规则。所以,如果规则序号为1,规则会被插入链的头部。这也是不指定规则序号时的默认方式。

-L -list
显示所选链的所有规则。如果没有选择链,所有链将被显示。也可以和z选项一起使用,这时链会被自动列出和归零。精确输出受其它所给参数影响。

-F -flush
清空所选链。这等于把所有规则一个个的删除。

–Z -zero
把所有链的包及字节的计数器清空。它可以和 -L配合使用,在清空前察看计数器,请参见前文。

-N -new-chain
根据给出的名称建立一个新的用户定义链。这必须保证没有同名的链存在。

-X -delete-chain
删除指定的用户自定义链。这个链必须没有被引用,如果被引用,在删除之前你必须删除或者替换与之有关的规则。如果没有给出参数,这条命令将试着删除每个非内建的链。

-P -policy
设置链的目标规则。

-E -rename-chain
根据用户给出的名字对指定链进行重命名,这仅仅是修饰,对整个表的结构没有影响。TARGETS参数给出一个合法的目标。只有非用户自定义链可以使用规则,而且内建链和用户自定义链都不能是规则的目标。

-h Help.
帮助。给出当前命令语法非常简短的说明。

PARAMETERS
参数
以下参数构成规则详述,如用于add、delete、replace、append 和 check命令。

-p -protocal [!]protocol
规则或者包检查(待检查包)的协议。指定协议可以是tcp、udp、icmp中的一个或者全部,也可以是数值,代表这些协议中的某一个。当然也可以使用在/etc/protocols中定义的协议名。在协议名前加上”!”表示相反的规则。数字0相当于所有all。Protocol all会匹配所有协议,而且这是缺省时的选项。在和check命令结合时,all可以不被使用。
-s -source [!] address[/mask]
指定源地址,可以是主机名、网络名和清楚的IP地址。mask说明可以是网络掩码或清楚的数字,在网络掩码的左边指定网络掩码左边”1″的个数,因此,mask值为24等于255.255.255.0。在指定地址前加上”!”说明指定了相反的地址段。标志 –src 是这个选项的简写。

-d –destination [!] address[/mask]
指定目标地址,要获取详细说明请参见 -s标志的说明。标志 –dst 是这个选项的简写。

-j –jump target
-j 目标跳转
指定规则的目标;也就是说,如果包匹配应当做什么。目标可以是用户自定义链(不是这条规则所在的),某个会立即决定包的命运的专用内建目标,或者一个扩展(参见下面的EXTENSIONS)。如果规则的这个选项被忽略,那么匹配的过程不会对包产生影响,不过规则的计数器会增加。

-i -in-interface [!] [name]
i -进入的(网络)接口 [!][名称]
这是包经由该接口接收的可选的入口名称,包通过该接口接收(在链INPUT、FORWORD和PREROUTING中进入的包)。当在接口名前使用”!”说明后,指的是相反的名称。如果接口名后面加上”+”,则所有以此接口名开头的接口都会被匹配。如果这个选项被忽略,会假设为”+”,那么将匹配任意接口。

-o –out-interface [!][name]
-o –输出接口[名称]
这是包经由该接口送出的可选的出口名称,包通过该口输出(在链FORWARD、OUTPUT和POSTROUTING中送出的包)。当在接口名前使用”!”说明后,指的是相反的名称。如果接口名后面加上”+”,则所有以此接口名开头的接口都会被匹配。如果这个选项被忽略,会假设为”+”,那么将匹配所有任意接口。

[!] -f, –fragment
[!] -f –分片
这意味着在分片的包中,规则只询问第二及以后的片。自那以后由于无法判断这种把包的源端口或目标端口(或者是ICMP类型的),这类包将不能匹配任何指定对他们进行匹配的规则。如果”!”说明用在了”-f”标志之前,表示相反的意思。

OTHER OPTIONS
其他选项
还可以指定下列附加选项:

-v –verbose
-v –详细
详细输出。这个选项让list命令显示接口地址、规则选项(如果有)和TOS(Type of Service)掩码。包和字节计数器也将被显示,分别用K、M、G(前缀)表示1000、1,000,000和1,000,000,000倍(不过请参看-x标志改变它),对于添加,插入,删除和替换命令,这会使一个或多个规则的相关详细信息被打印。

-n –numeric
-n –数字
数字输出。IP地址和端口会以数字的形式打印。默认情况下,程序试显示主机名、网络名或者服务(只要可用)。

-x -exact
-x -精确
扩展数字。显示包和字节计数器的精确值,代替用K,M,G表示的约数。这个选项仅能用于 -L 命令。

–line-numbers
当列表显示规则时,在每个规则的前面加上行号,与该规则在链中的位置相对应。

MATCH EXTENSIONS
对应的扩展
iptables能够使用一些与模块匹配的扩展包。以下就是含于基本包内的扩展包,而且他们大多数都可以通过在前面加上!来表示相反的意思。

tcp
当 –protocol tcp 被指定,且其他匹配的扩展未被指定时,这些扩展被装载。它提供以下选项:

–source-port [!] [port[:port]]
源端口或端口范围指定。这可以是服务名或端口号。使用格式端口:端口也可以指定包含的(端口)范围。如果首端口号被忽略,默认是”0″,如果末端口号被忽略,默认是”65535″,如果第二个端口号大于第一个,那么它们会被交换。这个选项可以使用 –sport的别名。

–destionation-port [!] [port:[port]]
目标端口或端口范围指定。这个选项可以使用 –dport别名来代替。

–tcp-flags [!] mask comp
匹配指定的TCP标记。第一个参数是我们要检查的标记,一个用逗号分开的列表,第二个参数是用逗号分开的标记表,是必须被设置的。标记如下:SYN ACK FIN RST URG PSH ALL NONE。因此这条命令:iptables -A FORWARD -p tcp –tcp-flags SYN, ACK, FIN, RST SYN只匹配那些SYN标记被设置而ACK、FIN和RST标记没有设置的包。

[!] –syn
只匹配那些设置了SYN位而清除了ACK和FIN位的TCP包。这些包用于TCP连接初始化时发出请求;例如,大量的这种包进入一个接口发生堵塞时会阻止进入的TCP连接,而出去的TCP连接不会受到影响。这等于 –tcp-flags SYN, RST, ACK SYN。如果”–syn”前面有”!”标记,表示相反的意思。

–tcp-option [!] number
匹配设置了TCP选项的。

udp
当protocol udp 被指定,且其他匹配的扩展未被指定时,这些扩展被装载,它提供以下选项:

–source-port [!] [port:[port]]
源端口或端口范围指定。详见 TCP扩展的–source-port选项说明。

–destination-port [!] [port:[port]]
目标端口或端口范围指定。详见 TCP扩展的–destination-port选项说明。

icmp
当protocol icmp被指定,且其他匹配的扩展未被指定时,该扩展被装载。它提供以下选项:
–icmp-type [!] typename
这个选项允许指定ICMP类型,可以是一个数值型的ICMP类型,或者是某个由命令iptables -p icmp -h所显示的ICMP类型名。

mac
–mac-source [!] address
匹配物理地址。必须是XX:XX:XX:XX:XX这样的格式。注意它只对来自以太设备并进入PREROUTING、FORWORD和INPUT链的包有效。

limit
这个模块匹配标志用一个标记桶过滤器一一定速度进行匹配,它和LOG目标结合使用来给出有限的登陆数.当达到这个极限值时,使用这个扩展包的规则将进行匹配.(除非使用了”!”标记)

–limit rate
最大平均匹配速率:可赋的值有’/second’, ‘/minute’, ‘/hour’, or ‘/day’这样的单位,默认是3/hour。

–limit-burst number
待匹配包初始个数的最大值:若前面指定的极限还没达到这个数值,则概数字加1.默认值为5

multiport
这个模块匹配一组源端口或目标端口,最多可以指定15个端口。只能和-p tcp 或者 -p udp 连着使用。

–source-port [port[, port]]
如果源端口是其中一个给定端口则匹配

–destination-port [port[, port]]
如果目标端口是其中一个给定端口则匹配

–port [port[, port]]
若源端口和目的端口相等并与某个给定端口相等,则匹配。
mark
这个模块和与netfilter过滤器标记字段匹配(就可以在下面设置为使用MARK标记)。

–mark value [/mask]
匹配那些无符号标记值的包(如果指定mask,在比较之前会给掩码加上逻辑的标记)。

owner
此模块试为本地生成包匹配包创建者的不同特征。只能用于OUTPUT链,而且即使这样一些包(如ICMP ping应答)还可能没有所有者,因此永远不会匹配。

–uid-owner userid
如果给出有效的user id,那么匹配它的进程产生的包。

–gid-owner groupid
如果给出有效的group id,那么匹配它的进程产生的包。

–sid-owner seessionid
根据给出的会话组匹配该进程产生的包。

state
此模块,当与连接跟踪结合使用时,允许访问包的连接跟踪状态。

–state state
这里state是一个逗号分割的匹配连接状态列表。可能的状态是:INVALID表示包是未知连接,ESTABLISHED表示是双向传送的连接,NEW表示包为新的连接,否则是非双向传送的,而RELATED表示包由新连接开始,但是和一个已存在的连接在一起,如FTP数据传送,或者一个ICMP错误。

unclean
此模块没有可选项,不过它试着匹配那些奇怪的、不常见的包。处在实验中。

tos
此模块匹配IP包首部的8位tos(服务类型)字段(也就是说,包含在优先位中)。

–tos tos
这个参数可以是一个标准名称,(用iptables -m tos -h 察看该列表),或者数值。

TARGET EXTENSIONS
iptables可以使用扩展目标模块:以下都包含在标准版中。

LOG
为匹配的包开启内核记录。当在规则中设置了这一选项后,linux内核会通过printk()打印一些关于全部匹配包的信息(诸如IP包头字段等)。
–log-level level
记录级别(数字或参看 syslog.conf(5))。
–log-prefix prefix
在纪录信息前加上特定的前缀:最多14个字母长,用来和记录中其他信息区别。

–log-tcp-sequence
记录TCP序列号。如果记录能被用户读取那么这将存在安全隐患。

–log-tcp-options
记录来自TCP包头部的选项。
–log-ip-options
记录来自IP包头部的选项。

MARK
用来设置包的netfilter标记值。只适用于mangle表。

–set-mark mark

REJECT
作为对匹配的包的响应,返回一个错误的包:其他情况下和DROP相同。

此目标只适用于INPUT、FORWARD和OUTPUT链,和调用这些链的用户自定义链。这几个选项控制返回的错误包的特性:

–reject-with type
Type可以是icmp-net-unreachable、icmp-host-unreachable、icmp-port-nreachable、icmp-proto-unreachable、 icmp-net-prohibited 或者 icmp-host-prohibited,该类型会返回相应的ICMP错误信息(默认是port-unreachable)。选项 echo-reply也是允许的;它只能用于指定ICMP ping包的规则中,生成ping的回应。最后,选项tcp-reset可以用于在INPUT链中,或自INPUT链调用的规则,只匹配TCP协议:将回应一个TCP RST包。
TOS
用来设置IP包的首部八位tos。只能用于mangle表。

–set-tos tos
你可以使用一个数值型的TOS 值,或者用iptables -j TOS -h 来查看有效TOS名列表。
MIRROR
这是一个试验示范目标,可用于转换IP首部字段中的源地址和目标地址,再传送该包,并只适用于INPUT、FORWARD和OUTPUT链,以及只调用它们的用户自定义链。

SNAT
这个目标只适用于nat表的POSTROUTING链。它规定修改包的源地址(此连接以后所有的包都会被影响),停止对规则的检查,它包含选项:

–to-source [-][:port-port]
可以指定一个单一的新的IP地址,一个IP地址范围,也可以附加一个端口范围(只能在指定-p tcp 或者-p udp的规则里)。如果未指定端口范围,源端口中512以下的(端口)会被安置为其他的512以下的端口;512到1024之间的端口会被安置为1024以下的,其他端口会被安置为1024或以上。如果可能,端口不会被修改。

–to-destiontion [-][:port-port]
可以指定一个单一的新的IP地址,一个IP地址范围,也可以附加一个端口范围(只能在指定-p tcp 或者-p udp的规则里)。如果未指定端口范围,目标端口不会被修改。

MASQUERADE
只用于nat表的POSTROUTING链。只能用于动态获取IP(拨号)连接:如果你拥有静态IP地址,你要用SNAT。伪装相当于给包发出时所经过接口的IP地址设置一个映像,当接口关闭连接会终止。这是因为当下一次拨号时未必是相同的接口地址(以后所有建立的连接都将关闭)。它有一个选项:

–to-ports [-port>]
指定使用的源端口范围,覆盖默认的SNAT源地址选择(见上面)。这个选项只适用于指定了-p tcp或者-p udp的规则。

REDIRECT
只适用于nat表的PREROUTING和OUTPUT链,和只调用它们的用户自定义链。它修改包的目标IP地址来发送包到机器自身(本地生成的包被安置为地址127.0.0.1)。它包含一个选项:

–to-ports [ ]
指定使用的目的端口或端口范围:不指定的话,目标端口不会被修改。只能用于指定了-p tcp 或 -p udp的规则。

DIAGNOSTICS
诊断
不同的错误信息会打印成标准错误:退出代码0表示正确。类似于不对的或者滥用的命令行参数错误会返回错误代码2,其他错误返回代码为1。

BUGS
臭虫
Check is not implemented (yet).
检查还未完成。

COMPATIBILITY WITH IPCHAINS
与ipchains的兼容性
iptables和Rusty Russell的ipchains非常相似。主要区别是INPUT 链只用于进入本地主机的包,而OUTPUT只用于自本地主机生成的包。因此每个包只经过三个链的一个;以前转发的包会经过所有三个链。其他主要区别是 -i 引用进入接口;-o引用输出接口,两者都适用于进入FORWARD链的包。当和可选扩展模块一起使用默认过滤器表时,iptables是一个纯粹的包过滤器。这能大大减少以前对IP伪装和包过滤结合使用的混淆,所以以下选项作了不同的处理:
-j MASQ
-M -S
-M -L
在iptables中有几个不同的链。

分类: BSD/linux, 转载 标签: ,

linux双网策略路由脚本实例(转)

2011年10月11日 16hot 没有评论

linux双网策略路由脚本实例

双网要比单网复杂的多。

首先安装Linux高级路由包,用里面的ip命令。
# apt-get install iproute

先创建两个表

修改
/etc/iproute2/rt_tables如下

加t1自定义编号10
加t2自定义编号20

代码:
########################################
#
# reserved values
#
255 local
254 main
253 default
0   unspec
#
# local
#
10  T1
20  T2
########################################

然后将附件里的cnc_1_net和ctc_1_net拷贝到/etc目录下,因为下面的脚本要用到。
cnc_1_net是网通的ip段
ctc_1_net是电信的ip段

我们要编辑个脚本。

########################################

#!/bin/sh

# IF1 是网通的网络接口
IF1=”eth0″

# IF2 是内网的网络接口
IF2=”eth2″

# IF0 是电信的网络接口
IF0=”eth1″

# IP1 是网通的IP
IP1=”221.8.60.54″

# IP2 是电信的IP
IP2=”222.168.11.186″

# P1 是网通的网关
P1=”221.8.60.53″

# P2 是电信的网关
P2=”222.168.11.185″

# P1_NET 是网通的网段, 掩码30表示有分派了4个ip, 如果是8个ip就要写成29了。
P1_NET=”221.8.60.52/30″

# P2_NET 为电信的网段
P2_NET=”222.168.11.184/30″

# P0_NET 为内网网段
P0_NET=”192.168.0.0/24″

# 设置基本的防火墙

echo “1″ > /proc/sys/net/ipv4/ip_forward
echo 8000 > /proc/sys/net/ipv4/ip_conntrack_max

modprobe iptable_filter
modprobe ip_tables
modprobe iptable_nat
modprobe ip_conntrack
modprobe ip_nat_ftp
modprobe ip_conntrack_ftp
modprobe ip_nat_irc
modprobe ip_conntrack_irc
modprobe ipt_MASQUERADE

modprobe ipt_REJECT
modprobe ipt_limit

iptables -F
iptables -t nat -F
iptables -P INPUT DROP
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT

iptables -A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp –dport 22 -m state –state NEW -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A FORWARD -p tcp –tcp-flags SYN,RST SYN -j TCPMSS –clamp-mss-to-pmtu
iptables -A INPUT -p icmp –icmp-type echo-request -m limit –limit 1/s -j ACCEPT
iptables -t nat -A POSTROUTING -s $P0_NET -o $IF1 -j MASQUERADE
iptables -t nat -A POSTROUTING -s $P0_NET -o $IF2 -j MASQUERADE

# 设置策略路由

ip route flush table T1
ip route flush table T2

ip rule list | grep T | while read line; do
POS4=`echo $line | awk \’{print $4}\’`
if [ "$POS4" = "to" ]
then
DST=`echo $line | awk \’{print $5}\’`
RT=`echo $line | awk \’{print $7}\’`
ip rule del to $DST table $RT
fi
if [ "$POS4" = "lookup" ]
then
SRC=`echo $line | awk \’{print $3}\’`
RT=`echo $line | awk \’{print $5}\’`
ip rule del from $SRC table $RT
fi
done

if [ ! -z $IP1 ]
then
ip route replace $P1_NET dev $IF1 src $IP1

ip route add $P1_NET dev $IF1 src $IP1 table T1
ip route add $P0_NET dev $IF0 table T1
ip route add 127.0.0.0/8 dev lo table T1

ip route add $P1_NET dev $IF1 table T2

ip route replace default via $P1 dev $IF1 table T1

ip rule add from $IP1 table T1

WAN_RT1=”nexthop via $P1 dev $IF1 weight 1″
fi
if [ ! -z $IP2 ]
then
ip route replace $P2_NET dev $IF2 src $IP2

ip route add $P2_NET dev $IF2 src $IP2 table T2
ip route add $P0_NET dev $IF0 table T2
ip route add 127.0.0.0/8 dev lo table T2

ip route add $P2_NET dev $IF2 table T1

ip route replace default via $P2 dev $IF2 table T2

ip rule add from $IP2 table T2

WAN_RT2=”nexthop via $P2 dev $IF2 weight 1″
fi

WAN_RT3=”$WAN_RT1 $WAN_RT2″

# 把网通作为默认网关,如果是电信把$WAN_RT1修改为$WAN_RT2
ip route replace default scope global $WAN_RT1

# 用两个网关做负载均衡(一般不用)
#ip route replace default equalize scope global $WAN_RT3

ip route flush cache

if [ -s /etc/ctc_1_net ]
then
while read LINE
do
case $LINE in
\\#*) ;;
*)
ip rule add to $LINE table T2
;;
esac
done < /etc/ctc_1_net
fi

if [ -s /etc/cnc_1_net ]
then
while read LINE
do
case $LINE in
\\#*) ;;
*)
ip rule add to $LINE table T1
;;
esac
done < /etc/cnc_1_net
fi

ip route flush cache

分类: BSD/linux, 转载 标签:

据说看完这21个故事的人,30岁前都成了亿万富翁。你是下一个吗[转]

2011年9月29日 16hot 没有评论
1.甲去买烟,烟29元,但他没火柴,跟店员说:“顺便送一盒火柴吧。”店员没给。 ­
乙去买烟,烟29元,他也没火柴,跟店员说:“便宜一毛吧。”最后,他用这一毛买一盒火柴。 ­
这是最简单的心理边际效应。第一种:店主认为自己在一个商品上赚钱了,另外一个没赚钱。赚钱感觉指数为1。第二种:店主认为两个商品都赚钱了,赚钱指数为2。当然心理倾向第二种了。同样,这种心理还表现在买一送一的花招上,顾客认为有一样东西不用付钱,就赚了,其实都是心理边际效应在作怪。 ­
启示:变换一种方式往往能起到意想不到的效果! 通常很多事情换一种做法结果就不同了。人生道路上,改善心智模式和思维方式是很重要的。 ­
2.有个小男孩,有一天妈妈带着他到杂货店去买东西,老板看到这个可爱的小孩,就打开一罐糖果,要小男孩自己拿一把糖果。但是这个男孩却没有任何动作。几次的邀请之后,老板亲自抓了一大把糖果放进他的口袋中。回到家中,母亲好奇地问小男孩,为什么没有自己去抓糖果而要老板抓呢?小男孩回答很妙:“因为我的手比较小呀!而老板的手比较大,所以他拿的一定比我拿的多很多!” ­
启示:这是一个聪明的孩子,他知道自己的有限,而更重要的,他也知道别人比自己强。凡事不只靠自己的力量,学会适时地依靠他人,是一种谦卑,更是一种聪明。­
3.美国知名主持人林克莱特有一天访问一名小朋友,问他说:“你长大后想要当做什么呀?”小朋友天真地回答:“嗯……我要当飞机的驾驶员!”林克莱特接着问:“如果有一天,你的飞机飞到太平洋上空所有引擎都熄火了,你会怎么办?”小朋友想了想:“我会先告诉坐在飞机上的人绑好安全带,然后我挂上我的降落伞跳出去。”当在场的观众笑得东倒西歪时,林克莱特继续注视着这孩子,想看他是不是自作聪明的家伙。没想到,接着孩子的两行热泪夺眶而出,这才使得林克莱特发觉这孩子的悲悯之心远非笔墨所能形容。于是林克莱特问他说:为什么你要这么做?”小孩的答案透露了这个孩子真挚的想法:“我要去拿燃料,我还要回来!!!” ­
启示:这就是“听的艺术”。一是听话不要听一半。二是不要把自己的意思,投射到别人所说的话上头。要学会聆听,用心听,虚心听。 ­
4. 有两个和尚他们分别住在相邻的两座山上的庙里。这两座山之间有一条溪,于是这两个和尚每天都会在同一时间下山去溪边挑水,久而久之他么变成为了好朋友。就这样时间在每天挑水中不知不觉已经过了五年。突然有一天左边这座山的和尚没有下山挑水,右边那座山的和尚心想:”他大概睡过头了。”便不以为意。哪知道第二天左边这座山的和尚还是没有下山挑水,第三天也一样。过了一个星期还是一样,直到过了一个月右边那座山的和尚终于受不了,他心想:”我的朋友可能生病了,我要过去拜访他,看看能帮上什么忙。”于是他便爬上了左边这座山,去探望他的老朋友。等他到了左边这座山的庙,看到他的老友之后大吃一惊,因为他的老友正在庙前打太极拳,一点也不像一个月没喝水的人。他很好奇地问:”你已经一个月没有下山挑水了,难道你可以不用喝水吗?”左边这座山的和尚说:”来来来,我带你去看。”于是他带着右边那座山的和尚走到庙的后院,指着一口井说:”这五年来,我每天做完功课后都会抽空挖这口井,即使有时很忙,能挖多少就算多少。如今终于让我挖出井水,我就不用再下山挑水,我可以有更多时间练我喜欢的太极拳。”­
启示:我们在公司领的薪水再多,那都是挑水。而把握下班后的时间挖一口属于自己的井,培养自己另一方面的实力,未来当我们年纪大了,体力拼不过年轻人了,依然还是有水喝,而且还能喝得很悠闲。­
5.有两个人相约到山上去寻找精美的石头,甲背了满满的一筐,乙的筐里只有一个他认为是最精美的石头。甲就笑乙:“你为什么只挑一个啊?”乙说:“漂亮的石头虽然多,但我只选一个最精美的就够了。”甲笑而不语,下山的路上,甲感到负担越来越重,最后不得已不断地从一筐的石头中挑一个最差的扔下,到下山的时候他的筐里结果只剩下一个石头! ­
启示:人生中会有许多的东西,值得留恋,有的时候你应该学会去放弃。 ­
6.有一家牙膏厂,产品优良,包装精美,受到顾客的喜爱,营业额连续10年递增,每年的增长率在10%~20%。可到了第11年,业绩停滞下来,以后两年也如此。公司经理召开高级会议,商讨对策。会议中,公司总裁许诺说:谁能想出解决问题的办法,让公司的业绩增长,重奖10万元。有位年轻经理站起来,递给总裁一张纸条,总裁看完后,马上签了一张10万元的支票给了这位经理。那张纸条上写着:将现在牙膏开口扩大1毫米。消费者每天早晨挤出同样长度的牙膏,开口扩大了l毫米,每个消费者就多用1毫米宽的牙膏,每天的消费量将多出多少呢!公司立即更改包装。第14年,公司的营业额增加了32%。 ­
启示:面对生活中的变化,我们常常习惯过去的思维方法。其实只要你把心径扩大1毫米,你就会看到生活中的变化都有它积极的一面,充满了机遇和挑战­
7.一只火鸡和一头牛闲聊,火鸡说:我希望能飞到树顶,可我没有勇气。牛说:为什么不吃一点我的牛粪呢,他们很有营养。火鸡吃了一点牛粪,发现它确实给了它足够的力量飞到第一根树枝,第二天,火鸡又吃了更多的牛粪,飞到第二根树枝,两个星期后,火鸡骄傲的飞到了树顶,但不久,一个农夫看到了它,迅速的把它从树上射了下来。­
启示:牛屎运让你达到顶峰,但不能让你留在那里。 ­
8.乌鸦站在树上,整天无所事事,兔子看见乌鸦,就问:我能像你一样,整天什么事都不用干吗?乌鸦说:当然,有什么不可以呢?于是,兔子在树下的空地上开始休息,忽然,一只狐狸出现了,它跳起来抓住兔子,把它吞了下去。­
启示:如果你想站着什么事都不做,那你必须站的很高,非常高。 ­
9.一只小鸟飞到南方去过冬。天很冷,小鸟几乎冻僵了。于是,飞到一大块空地上,一头牛经过那儿,拉了一堆牛粪在小鸟的身上,冻僵的小鸟躺在粪堆里,觉得很温暖,渐渐苏醒过来,它温暖而舒服的躺着,不久唱起歌来,一只路过的野猫听到声音,走过去看个究竟,循着声音,野猫很快发现了躺在粪堆里的小鸟,把它拽出来吃掉了。­
启示:不是每个往你身上拉大粪的人都是你的敌人。也不是每个把你从粪堆里拉出来的人都是你的朋友,还有,当你躺在粪堆里时,最好把你的嘴闭上。­
10.从前,有两个饥饿的人得到了一位长者的恩赐:一根鱼竿和一篓鲜活硕大的鱼。其中,一个人要了一篓鱼,另一个人要了一根鱼竿,于是他们分道扬镳了。得到鱼的人原地就用干柴搭起篝火煮起了鱼,他狼吞虎咽,还没有品出鲜鱼的肉香,转瞬间,连鱼带汤就被他吃了个精光,不久,他便饿死在空空的鱼篓旁。另一个人则提着鱼竿继续忍饥挨饿,一步步艰难地向海边走去,可当他已经看到不远处那片蔚蓝色的海洋时,他浑身的最后一点力气也使完了,他也只能眼巴巴地带着无尽的遗憾撒手人间。又有两个饥饿的人,他们同样得到了长者恩赐的一根鱼竿和一篓鱼。只是他们并没有各奔东西,而是商定共同去找寻大海,他俩每次只煮一条鱼,他们经过遥远的跋涉,来到了海边,从此,两人开始了捕鱼为生的日子,几年后,他们盖起了房子,有了各自的家庭、子女,有了自己建造的渔船,过上了幸福安康的生活。­
启示:一个人只顾眼前的利益,得到的终将是短暂的欢愉;一个人目标高远,但也要面对现实的生活。只有把理想和现实有机结合起来,才有可能成为一个成功之人。有时候,一个简单的道理,却足以给人意味深长的生命启示。­
11.孔子的一位学生在煮粥时,发现有肮脏的东西掉进锅里去了。他连忙用汤匙把它捞起来,正想把它倒掉时,忽然想到,一粥一饭都来之不易啊。于是便把它吃了。刚巧孔子走进厨房,以为他在偷食,便教训了那位负责煮食的同学。经过解释,大家才恍然大悟。孔子很感慨的说:“我亲眼看见的事情也不确实,何况是道听途听呢?”­
启示:推销生意是一种组织性质的生意,因为人多,人事问题也多。我们不时听到是非难辨的话,如某公司攻击另一间公司,如是者往往令人混淆是非,影响信心。因此找出事情的真相,不是轻易相信谣言,辛辛苦苦建立的事业才不会毁于一旦。­
12.有位秀才第三次进京赶考,住在一个经常住的店里。考试前两天他做了三个梦,第一个梦是梦到自己在墙上种白菜,第二个梦是下雨天,他戴了斗笠还打伞,第三个梦是梦到跟心爱的表妹躺在一起,但是背靠着背。这三个梦似乎有些深意,秀才第二天就赶紧去找算命的解梦。算命的一听,连拍大腿说:”你还是回家吧。你想想,高墙上种菜不是白费劲吗?戴斗笠打雨伞不是多此一举吗?跟表妹躺在一张床上了,却背靠背,不是没戏吗?” 秀才一听,心灰意冷,回店收拾包袱准备回家。店老板非常奇怪,问:”不是明天才考试吗,今天你怎么就回乡了?”秀才如此这般说了一番,店老板乐了:”哟,我也会解梦的。我倒觉得,你这次一定要留下来。你想想,墙上种菜不是高种吗?戴斗笠打伞不是说明你这次有备无患吗?跟你表妹背靠背躺在床上,不是说明你翻身的时候就要到了吗?”秀才一听,更有道理,于是精神振奋地参加考试,居然中了个探花。­
启示:积极的人,象太阳,照到哪里哪里亮,消极的人,象月亮,初一十五不一样。想法决定我们的生活,有什么样的想法,就有什么样的未来。­
13.有一天动物园管理员们发现袋鼠从笼子里跑出来了,于是开会讨论,一致认为是笼子的高度过低。所以它们决定将笼子的高度由原来的十公尺加高到二十公尺。结果第二天他们发现袋鼠还是跑到外面来,所以他们又决定再将高度加高到三十公尺没想到隔天居然又看到袋鼠全跑到外面,于是管理员们大为紧张,决定一不做二不休,将笼子的高度加高到一百公尺。一天长颈鹿和几只袋鼠们在闲聊,”你们看,这些人会不会再继续加高你们的笼子?”长颈鹿问。”很难说。”袋鼠说∶”如果他们再继续忘记关门的话!”­
启示:其实很多人都是这样,只知道有问题,却不能抓住问题的核心和根基。­
14. 一天夜里,已经很晚了,一对年老的夫妻走进一家旅馆,他们想要一个房间。前台侍者回答说:”对不起,我们旅馆已经客满了,一间空房也没有剩下。”看着这对老人疲惫的神情,侍者不忍心深夜让这对老人出门另找住宿。而且在这样一个小城,恐怕其他的旅店也早已客满打烊了,这对疲惫不堪的老人岂不会在深夜流落街头?于是好心的侍者将这对老人引领到一个房间,说:”也许它不是最好的,但现在我只能做到这样了。”老人见眼前其实是一间整洁又干净的屋子,就愉快地住了下来。第二天,当他们来到前台结账时,侍者却对他们说:”不用了,因为我只不过是把自己的屋子借给你们住了一晚–祝你们旅途愉快!”原来如此。侍者自己一晚没睡,他就在前台值了一个通宵的夜班。两位老人十分感动。老头儿说:”孩子,你是我见到过的最好的旅店经营人。你会得到报答的。”侍者笑了笑,说这算不了什么。他送老人出了门,转身接着忙自己的事,把这件事情忘了个一干二净。没想到有一天,侍者接到了一封信函,打开看,里面有一张去纽约的单程机票并有简短附言,聘请他去做另一份工作。他乘飞机来到纽约,按信中所标明的路线来到一个地方,抬眼一看,一座金碧辉煌的大酒店耸立在他的眼前。原来,几个月前的那个深夜,他接待的是一个有着亿万资产的富翁和他的妻子。富翁为这个侍者买下了一座大酒店,深信他会经营管理好这个大酒店。这就是全球赫赫有名的希尔顿饭店首任经理的传奇故事。­
15.有一位表演大师上场前,他的弟子告诉他鞋带松了。大师点头致谢,蹲下来仔细系好。等到弟子转身后,又蹲下来将鞋带解松。有个旁观者看到了这一切,不解地问:”大师,您为什么又要将鞋带解松呢?”大师回答道:”因为我饰演的是一位劳累的旅者,长途跋涉让他的鞋带松开,可以通过这个细节表现他的劳累憔悴.” “那你为什么不直接告诉你的弟子呢?”"他能细心地发现我的鞋带松了,并且热心地告诉我,我一定要保护他这种热情的积极性,及时地给他鼓励,至于为什么要将鞋带解开,将来会有更多的机会教他表演,可以下一次再说啊。”­
启示:人一个时间只能做一件事,懂抓重点,才是真正的人才。­
16.一个人在高山之巅的鹰巢里,抓到了一只幼鹰,他把幼鹰带回家,养在鸡笼里。这只幼鹰和鸡一起啄食、嬉闹和休息。它以为自己是一只鸡。这只鹰渐渐长大,羽翼丰满了,主人想把它训练成猎鹰,可是由于终日和鸡混在一起,它已经变得和鸡完全一样,根本没有飞的愿望了。主人试了各种办法,都毫无效果,最后把它带到山顶上,一把将它扔了出去。这只鹰像块石头似的,直掉下去,慌乱之中它拼命地扑打翅膀,就这样,它终于飞了起来!­
启示:磨练召唤成功的力量。­
17.雨后,一只蜘蛛艰难地向墙上已经支离破碎的网爬去,由于墙壁潮湿,它爬到一定的高度,就会掉下来,它一次次地向上爬,一次次地又掉下来……第一个人看到了,他叹了一口气,自言自语:”我的一生不正如这只蜘蛛吗?忙忙碌碌而无所得。”于是,他日渐消沉。第二个人看到了,他说:这只蜘蛛真愚蠢,为什么不从旁边干燥的地方绕一下爬上去?我以后可不能像它那样愚蠢。于是,他变得聪明起来。第三个人看到了,他立刻被蜘蛛屡败屡战的精神感动了。于是,他变得坚强起来。­
启示:有成功心态者处处都能发觉成功的力量。­
18.一个老人在高速行驶的火车上,不小心把刚买的新鞋从窗口掉了一只,周围的人倍感惋惜,不料老人立即把第二只鞋也从窗口扔了下去。这举动更让人大吃一惊。老人解释说:”这一只鞋无论多么昂贵,对我而言已经没有用了,如果有谁能捡到一双鞋子,说不定他还能穿呢!”­
启示:成功者善于放弃。­
19.某大公司准备以高薪雇用一名小车司机,经过层层筛选和考试之后,只剩下三名技术最优良的竞争者。主考者问他们:”悬崖边有块金子,你们开着车去拿,觉得能距离悬崖多近而又不至于掉落呢?”"二公尺。”第一位说。”半公尺。”第二位很有把握地说。”我会尽量远离悬崖,愈远愈好。”第三位说。结果这家公司录取了第三位。­
启示:不要和诱惑较劲,而应离得越远越好。­
20.老和尚携小和尚游方,途遇一条河;见一女子正想过河,却又不敢过。老和尚便主动背该女子趟过了河,然后放下女子,与小和尚继续赶路。小和尚不禁一路嘀咕:师父怎么了?竟敢背一女子过河?一路走,一路想,最后终于忍不住了,说:师父,你犯戒了?怎么背了女人?老和尚叹道:我早已放下,你却还放不下!­
启示:君子坦荡荡,小人常戚戚;心胸宽广,思想开朗,遇事拿得起、放得下,才能永远保持一种健康的心态。­
21.一个心理学教授到疯人院参观,了解疯子的生活状态。一天下来,觉得这些人疯疯癫癫,行事出人意料,可算大开眼界。想不到准备返回时,发现自己的车胎被人下掉了。”一定是哪个疯子干的!”教授这样愤愤地想道,动手拿备胎准备装上。事情严重了。下车胎的人居然将螺丝也都下掉。没有螺丝有备胎也上不去啊!教授一筹莫展。在他着急万分的时候,一个疯子蹦蹦跳跳地过来了,嘴里唱着不知名的欢乐歌曲。他发现了困境中的教授,停下来问发生了什么事。教授懒得理他,但出于礼貌还是告诉了他。疯子哈哈大笑说:”我有办法!”他从每个轮胎上面下了一个螺丝,这样就拿到三个螺丝将备胎装了上去。教授惊奇感激之余,大为好奇:”请问你是怎么想到这个办法的?” 疯子嘻嘻哈哈地笑道:”我是疯子,可我不是呆子啊!” ­
启示;自己想吧····

1.甲去买烟,烟29元,但他没火柴,跟店员说:“顺便送一盒火柴吧。”店员没给。 ­
乙去买烟,烟29元,他也没火柴,跟店员说:“便宜一毛吧。”最后,他用这一毛买一盒火柴。 ­
这是最简单的心理边际效应。第一种:店主认为自己在一个商品上赚钱了,另外一个没赚钱。赚钱感觉指数为1。第二种:店主认为两个商品都赚钱了,赚钱指数为2。当然心理倾向第二种了。同样,这种心理还表现在买一送一的花招上,顾客认为有一样东西不用付钱,就赚了,其实都是心理边际效应在作怪。 ­
启示:变换一种方式往往能起到意想不到的效果! 通常很多事情换一种做法结果就不同了。人生道路上,改善心智模式和思维方式是很重要的。 ­

2.有个小男孩,有一天妈妈带着他到杂货店去买东西,老板看到这个可爱的小孩,就打开一罐糖果,要小男孩自己拿一把糖果。但是这个男孩却没有任何动作。几次的邀请之后,老板亲自抓了一大把糖果放进他的口袋中。回到家中,母亲好奇地问小男孩,为什么没有自己去抓糖果而要老板抓呢?小男孩回答很妙:“因为我的手比较小呀!而老板的手比较大,所以他拿的一定比我拿的多很多!” ­
启示:这是一个聪明的孩子,他知道自己的有限,而更重要的,他也知道别人比自己强。凡事不只靠自己的力量,学会适时地依靠他人,是一种谦卑,更是一种聪明。­

3.美国知名主持人林克莱特有一天访问一名小朋友,问他说:“你长大后想要当做什么呀?”小朋友天真地回答:“嗯……我要当飞机的驾驶员!”林克莱特接着问:“如果有一天,你的飞机飞到太平洋上空所有引擎都熄火了,你会怎么办?”小朋友想了想:“我会先告诉坐在飞机上的人绑好安全带,然后我挂上我的降落伞跳出去。”当在场的观众笑得东倒西歪时,林克莱特继续注视着这孩子,想看他是不是自作聪明的家伙。没想到,接着孩子的两行热泪夺眶而出,这才使得林克莱特发觉这孩子的悲悯之心远非笔墨所能形容。于是林克莱特问他说:为什么你要这么做?”小孩的答案透露了这个孩子真挚的想法:“我要去拿燃料,我还要回来!!!” ­
启示:这就是“听的艺术”。一是听话不要听一半。二是不要把自己的意思,投射到别人所说的话上头。要学会聆听,用心听,虚心听。 ­

4. 有两个和尚他们分别住在相邻的两座山上的庙里。这两座山之间有一条溪,于是这两个和尚每天都会在同一时间下山去溪边挑水,久而久之他么变成为了好朋友。就这样时间在每天挑水中不知不觉已经过了五年。突然有一天左边这座山的和尚没有下山挑水,右边那座山的和尚心想:”他大概睡过头了。”便不以为意。哪知道第二天左边这座山的和尚还是没有下山挑水,第三天也一样。过了一个星期还是一样,直到过了一个月右边那座山的和尚终于受不了,他心想:”我的朋友可能生病了,我要过去拜访他,看看能帮上什么忙。”于是他便爬上了左边这座山,去探望他的老朋友。等他到了左边这座山的庙,看到他的老友之后大吃一惊,因为他的老友正在庙前打太极拳,一点也不像一个月没喝水的人。他很好奇地问:”你已经一个月没有下山挑水了,难道你可以不用喝水吗?”左边这座山的和尚说:”来来来,我带你去看。”于是他带着右边那座山的和尚走到庙的后院,指着一口井说:”这五年来,我每天做完功课后都会抽空挖这口井,即使有时很忙,能挖多少就算多少。如今终于让我挖出井水,我就不用再下山挑水,我可以有更多时间练我喜欢的太极拳。”­
启示:我们在公司领的薪水再多,那都是挑水。而把握下班后的时间挖一口属于自己的井,培养自己另一方面的实力,未来当我们年纪大了,体力拼不过年轻人了,依然还是有水喝,而且还能喝得很悠闲。­

5.有两个人相约到山上去寻找精美的石头,甲背了满满的一筐,乙的筐里只有一个他认为是最精美的石头。甲就笑乙:“你为什么只挑一个啊?”乙说:“漂亮的石头虽然多,但我只选一个最精美的就够了。”甲笑而不语,下山的路上,甲感到负担越来越重,最后不得已不断地从一筐的石头中挑一个最差的扔下,到下山的时候他的筐里结果只剩下一个石头! ­
启示:人生中会有许多的东西,值得留恋,有的时候你应该学会去放弃。 ­

6.有一家牙膏厂,产品优良,包装精美,受到顾客的喜爱,营业额连续10年递增,每年的增长率在10%~20%。可到了第11年,业绩停滞下来,以后两年也如此。公司经理召开高级会议,商讨对策。会议中,公司总裁许诺说:谁能想出解决问题的办法,让公司的业绩增长,重奖10万元。有位年轻经理站起来,递给总裁一张纸条,总裁看完后,马上签了一张10万元的支票给了这位经理。那张纸条上写着:将现在牙膏开口扩大1毫米。消费者每天早晨挤出同样长度的牙膏,开口扩大了l毫米,每个消费者就多用1毫米宽的牙膏,每天的消费量将多出多少呢!公司立即更改包装。第14年,公司的营业额增加了32%。 ­
启示:面对生活中的变化,我们常常习惯过去的思维方法。其实只要你把心径扩大1毫米,你就会看到生活中的变化都有它积极的一面,充满了机遇和挑战­

7.一只火鸡和一头牛闲聊,火鸡说:我希望能飞到树顶,可我没有勇气。牛说:为什么不吃一点我的牛粪呢,他们很有营养。火鸡吃了一点牛粪,发现它确实给了它足够的力量飞到第一根树枝,第二天,火鸡又吃了更多的牛粪,飞到第二根树枝,两个星期后,火鸡骄傲的飞到了树顶,但不久,一个农夫看到了它,迅速的把它从树上射了下来。­
启示:牛屎运让你达到顶峰,但不能让你留在那里。 ­

8.乌鸦站在树上,整天无所事事,兔子看见乌鸦,就问:我能像你一样,整天什么事都不用干吗?乌鸦说:当然,有什么不可以呢?于是,兔子在树下的空地上开始休息,忽然,一只狐狸出现了,它跳起来抓住兔子,把它吞了下去。­
启示:如果你想站着什么事都不做,那你必须站的很高,非常高。 ­

9.一只小鸟飞到南方去过冬。天很冷,小鸟几乎冻僵了。于是,飞到一大块空地上,一头牛经过那儿,拉了一堆牛粪在小鸟的身上,冻僵的小鸟躺在粪堆里,觉得很温暖,渐渐苏醒过来,它温暖而舒服的躺着,不久唱起歌来,一只路过的野猫听到声音,走过去看个究竟,循着声音,野猫很快发现了躺在粪堆里的小鸟,把它拽出来吃掉了。­
启示:不是每个往你身上拉大粪的人都是你的敌人。也不是每个把你从粪堆里拉出来的人都是你的朋友,还有,当你躺在粪堆里时,最好把你的嘴闭上。­

10.从前,有两个饥饿的人得到了一位长者的恩赐:一根鱼竿和一篓鲜活硕大的鱼。其中,一个人要了一篓鱼,另一个人要了一根鱼竿,于是他们分道扬镳了。得到鱼的人原地就用干柴搭起篝火煮起了鱼,他狼吞虎咽,还没有品出鲜鱼的肉香,转瞬间,连鱼带汤就被他吃了个精光,不久,他便饿死在空空的鱼篓旁。另一个人则提着鱼竿继续忍饥挨饿,一步步艰难地向海边走去,可当他已经看到不远处那片蔚蓝色的海洋时,他浑身的最后一点力气也使完了,他也只能眼巴巴地带着无尽的遗憾撒手人间。又有两个饥饿的人,他们同样得到了长者恩赐的一根鱼竿和一篓鱼。只是他们并没有各奔东西,而是商定共同去找寻大海,他俩每次只煮一条鱼,他们经过遥远的跋涉,来到了海边,从此,两人开始了捕鱼为生的日子,几年后,他们盖起了房子,有了各自的家庭、子女,有了自己建造的渔船,过上了幸福安康的生活。­
启示:一个人只顾眼前的利益,得到的终将是短暂的欢愉;一个人目标高远,但也要面对现实的生活。只有把理想和现实有机结合起来,才有可能成为一个成功之人。有时候,一个简单的道理,却足以给人意味深长的生命启示。­

11.孔子的一位学生在煮粥时,发现有肮脏的东西掉进锅里去了。他连忙用汤匙把它捞起来,正想把它倒掉时,忽然想到,一粥一饭都来之不易啊。于是便把它吃了。刚巧孔子走进厨房,以为他在偷食,便教训了那位负责煮食的同学。经过解释,大家才恍然大悟。孔子很感慨的说:“我亲眼看见的事情也不确实,何况是道听途听呢?”­
启示:推销生意是一种组织性质的生意,因为人多,人事问题也多。我们不时听到是非难辨的话,如某公司攻击另一间公司,如是者往往令人混淆是非,影响信心。因此找出事情的真相,不是轻易相信谣言,辛辛苦苦建立的事业才不会毁于一旦。­

12.有位秀才第三次进京赶考,住在一个经常住的店里。考试前两天他做了三个梦,第一个梦是梦到自己在墙上种白菜,第二个梦是下雨天,他戴了斗笠还打伞,第三个梦是梦到跟心爱的表妹躺在一起,但是背靠着背。这三个梦似乎有些深意,秀才第二天就赶紧去找算命的解梦。算命的一听,连拍大腿说:”你还是回家吧。你想想,高墙上种菜不是白费劲吗?戴斗笠打雨伞不是多此一举吗?跟表妹躺在一张床上了,却背靠背,不是没戏吗?” 秀才一听,心灰意冷,回店收拾包袱准备回家。店老板非常奇怪,问:”不是明天才考试吗,今天你怎么就回乡了?”秀才如此这般说了一番,店老板乐了:”哟,我也会解梦的。我倒觉得,你这次一定要留下来。你想想,墙上种菜不是高种吗?戴斗笠打伞不是说明你这次有备无患吗?跟你表妹背靠背躺在床上,不是说明你翻身的时候就要到了吗?”秀才一听,更有道理,于是精神振奋地参加考试,居然中了个探花。­
启示:积极的人,象太阳,照到哪里哪里亮,消极的人,象月亮,初一十五不一样。想法决定我们的生活,有什么样的想法,就有什么样的未来。­

13.有一天动物园管理员们发现袋鼠从笼子里跑出来了,于是开会讨论,一致认为是笼子的高度过低。所以它们决定将笼子的高度由原来的十公尺加高到二十公尺。结果第二天他们发现袋鼠还是跑到外面来,所以他们又决定再将高度加高到三十公尺没想到隔天居然又看到袋鼠全跑到外面,于是管理员们大为紧张,决定一不做二不休,将笼子的高度加高到一百公尺。一天长颈鹿和几只袋鼠们在闲聊,”你们看,这些人会不会再继续加高你们的笼子?”长颈鹿问。”很难说。”袋鼠说∶”如果他们再继续忘记关门的话!”­
启示:其实很多人都是这样,只知道有问题,却不能抓住问题的核心和根基。­

14. 一天夜里,已经很晚了,一对年老的夫妻走进一家旅馆,他们想要一个房间。前台侍者回答说:”对不起,我们旅馆已经客满了,一间空房也没有剩下。”看着这对老人疲惫的神情,侍者不忍心深夜让这对老人出门另找住宿。而且在这样一个小城,恐怕其他的旅店也早已客满打烊了,这对疲惫不堪的老人岂不会在深夜流落街头?于是好心的侍者将这对老人引领到一个房间,说:”也许它不是最好的,但现在我只能做到这样了。”老人见眼前其实是一间整洁又干净的屋子,就愉快地住了下来。第二天,当他们来到前台结账时,侍者却对他们说:”不用了,因为我只不过是把自己的屋子借给你们住了一晚–祝你们旅途愉快!”原来如此。侍者自己一晚没睡,他就在前台值了一个通宵的夜班。两位老人十分感动。老头儿说:”孩子,你是我见到过的最好的旅店经营人。你会得到报答的。”侍者笑了笑,说这算不了什么。他送老人出了门,转身接着忙自己的事,把这件事情忘了个一干二净。没想到有一天,侍者接到了一封信函,打开看,里面有一张去纽约的单程机票并有简短附言,聘请他去做另一份工作。他乘飞机来到纽约,按信中所标明的路线来到一个地方,抬眼一看,一座金碧辉煌的大酒店耸立在他的眼前。原来,几个月前的那个深夜,他接待的是一个有着亿万资产的富翁和他的妻子。富翁为这个侍者买下了一座大酒店,深信他会经营管理好这个大酒店。这就是全球赫赫有名的希尔顿饭店首任经理的传奇故事。­

15.有一位表演大师上场前,他的弟子告诉他鞋带松了。大师点头致谢,蹲下来仔细系好。等到弟子转身后,又蹲下来将鞋带解松。有个旁观者看到了这一切,不解地问:”大师,您为什么又要将鞋带解松呢?”大师回答道:”因为我饰演的是一位劳累的旅者,长途跋涉让他的鞋带松开,可以通过这个细节表现他的劳累憔悴.” “那你为什么不直接告诉你的弟子呢?”"他能细心地发现我的鞋带松了,并且热心地告诉我,我一定要保护他这种热情的积极性,及时地给他鼓励,至于为什么要将鞋带解开,将来会有更多的机会教他表演,可以下一次再说啊。”­
启示:人一个时间只能做一件事,懂抓重点,才是真正的人才。­

16.一个人在高山之巅的鹰巢里,抓到了一只幼鹰,他把幼鹰带回家,养在鸡笼里。这只幼鹰和鸡一起啄食、嬉闹和休息。它以为自己是一只鸡。这只鹰渐渐长大,羽翼丰满了,主人想把它训练成猎鹰,可是由于终日和鸡混在一起,它已经变得和鸡完全一样,根本没有飞的愿望了。主人试了各种办法,都毫无效果,最后把它带到山顶上,一把将它扔了出去。这只鹰像块石头似的,直掉下去,慌乱之中它拼命地扑打翅膀,就这样,它终于飞了起来!­
启示:磨练召唤成功的力量。­

17.雨后,一只蜘蛛艰难地向墙上已经支离破碎的网爬去,由于墙壁潮湿,它爬到一定的高度,就会掉下来,它一次次地向上爬,一次次地又掉下来……第一个人看到了,他叹了一口气,自言自语:”我的一生不正如这只蜘蛛吗?忙忙碌碌而无所得。”于是,他日渐消沉。第二个人看到了,他说:这只蜘蛛真愚蠢,为什么不从旁边干燥的地方绕一下爬上去?我以后可不能像它那样愚蠢。于是,他变得聪明起来。第三个人看到了,他立刻被蜘蛛屡败屡战的精神感动了。于是,他变得坚强起来。­
启示:有成功心态者处处都能发觉成功的力量。­

18.一个老人在高速行驶的火车上,不小心把刚买的新鞋从窗口掉了一只,周围的人倍感惋惜,不料老人立即把第二只鞋也从窗口扔了下去。这举动更让人大吃一惊。老人解释说:”这一只鞋无论多么昂贵,对我而言已经没有用了,如果有谁能捡到一双鞋子,说不定他还能穿呢!”­
启示:成功者善于放弃。­

19.某大公司准备以高薪雇用一名小车司机,经过层层筛选和考试之后,只剩下三名技术最优良的竞争者。主考者问他们:”悬崖边有块金子,你们开着车去拿,觉得能距离悬崖多近而又不至于掉落呢?”"二公尺。”第一位说。”半公尺。”第二位很有把握地说。”我会尽量远离悬崖,愈远愈好。”第三位说。结果这家公司录取了第三位。­
启示:不要和诱惑较劲,而应离得越远越好。­

20.老和尚携小和尚游方,途遇一条河;见一女子正想过河,却又不敢过。老和尚便主动背该女子趟过了河,然后放下女子,与小和尚继续赶路。小和尚不禁一路嘀咕:师父怎么了?竟敢背一女子过河?一路走,一路想,最后终于忍不住了,说:师父,你犯戒了?怎么背了女人?老和尚叹道:我早已放下,你却还放不下!­
启示:君子坦荡荡,小人常戚戚;心胸宽广,思想开朗,遇事拿得起、放得下,才能永远保持一种健康的心态。­

21.一个心理学教授到疯人院参观,了解疯子的生活状态。一天下来,觉得这些人疯疯癫癫,行事出人意料,可算大开眼界。想不到准备返回时,发现自己的车胎被人下掉了。”一定是哪个疯子干的!”教授这样愤愤地想道,动手拿备胎准备装上。事情严重了。下车胎的人居然将螺丝也都下掉。没有螺丝有备胎也上不去啊!教授一筹莫展。在他着急万分的时候,一个疯子蹦蹦跳跳地过来了,嘴里唱着不知名的欢乐歌曲。他发现了困境中的教授,停下来问发生了什么事。教授懒得理他,但出于礼貌还是告诉了他。疯子哈哈大笑说:”我有办法!”他从每个轮胎上面下了一个螺丝,这样就拿到三个螺丝将备胎装了上去。教授惊奇感激之余,大为好奇:”请问你是怎么想到这个办法的?” 疯子嘻嘻哈哈地笑道:”我是疯子,可我不是呆子啊!” ­
启示;自己想吧····

分类: 转载 标签:

天使融资第一课

2011年9月16日 16hot 没有评论

很多创业的朋友在企业刚起步的时候都会尝试去找天使投资人或者天使投资机构要钱,但要是天使真给钱的话很多人可能都不知道该怎么要这个钱?这钱肯定不会白给!其实大方向挺简单的,无非就两种方式:出让股份或者借钱。

出让股份的方式在早期的公司就是一个数字:估值。公司有多少股票,每股多少钱都没意义,你需要知道的就是公司一共值多少钱(一会再说怎么样能算出一个”客观”的价值)。假如你的公司值80万,如果投资人投入20万,那么钱进来后公司就值100万(80万 + 20万)。这100万里面有20万是投资人给的,所以投资人就占20%的股份。在投资行业里这80万的估值叫投资前估值(pre-money valuation),100万的估值叫投资后估值(post-money valuation)。假设公司有两个创始人而且一开始你们已经沟通好一个人占60%的股份(创始人甲)而另外一个占40%(创始人乙),那么投资人的钱进来前甲的股份就值48万(80万 * 60%),钱进来后这48万还是48万,但是占有的股份比例变成48%(因为投资后估值是100万),同样的创始人乙的股份从40%变成32%(80万 * 40% / 100万),行业内称甲和乙的股份被“稀释”了。

稀释基本上是一个不可避免的融资后果,有些人可能会在天使的钱没进来前谈好“不允许稀释”的条件,这些条件很多都是不切实际的(除非现有股东愿意追加投资额),比如上面的例子甲跟乙说天使的钱进来后不影响乙的股份比例,甲把自己的48万(60%)出让20万给天使投资人,那么公司的估值还是一共80万,乙的股份比例还是40%。这个做法是不恰当的(起码在会计上),因为天使给出来的20万现金是进入了甲的个人财产,公司是没有任何得着,除非甲答应把这20万奉献给公司(那是做慈善,不是投资)。

另外一个创业者经常犯的错误就是觉得出让股份的比例和进来的资金金额是成正比的,比如上面的例子投入20万就占20%的股份,那投入30万就好像应该是占30%?50万就占50%?实际上30万是占27.27%(30除以110),50万是占38.46%(50/130),这个不直观的结果也是因为融资是一个稀释股份的过程,而不是一个买卖股份的过程,钱是进入公司的账而不是股东的账。

有了估值一切都简单,要多少钱就必须稀释多少股份,但是估值不是一门数学,甚至不是一门科学,很多时候更像艺术:凭感觉!很多人可能会告诉你很多估值的方法(包括我下面也会说一些),但你要永远记住在天使阶段的投资最重要的就是感觉(不管是从投资人还是创始人的角度)。这有点像谈恋爱或者艺术品,你可以用很多客观的条件来评估,但最后的结论都是主观的。也正因为是这么主观的东西,所以天使投资都是围绕着朋友或者熟人,我如果不认识你我就主观的觉得你不靠谱(或者不知道你靠不靠谱)。

好,在“估值就是艺术”这个前提下,我就说一下有什么客观的估值“方法”。第一个肯定是净利润,就是公司过去一个月或者一年赚了多少钱?比如过去一个月净利润是2万,乘以12个月就是24万,那么公司的估值就大概在240万(24万*10)和2400万(24万*100)之间,你会发现这两个数字相差很远(十倍)!是的,我都说了,估值就是艺术,不是科学!假设估值是240万,那么公司的市盈率就是10(意思就是你投资多少钱公司就能10年后把本金赚回来),市盈率是所有估值数字里面用的最多的,它不代表一切但能让你跟别的公司做比较,比如Facebook在2011年头做了一轮融资就估值500亿美金,按照Facebook的2010年净利润5亿估算来算它的市盈率就是100,所以在上面的例子如果你的公司估值是2400万那你就跟Facebook的市盈率一样!美国过去100多年的500强公司的市盈率大概是20(最高是2000年的时候的40多,最低是1920和1930年代的5,资料来源:http://www.multpl.com)。不同行业的市盈率会差很远,其中主要的因素是盈利的增长率,如果我的公司上一年和前一年都是赚24万,那我的市盈率可能就只是20,你的公司上一年是赚24万但前一年是12万的话,那你的公司可能就可以要50甚至100的市盈率(也就是更高的估值)!这个背后的逻辑是:你以前赚多少钱不重要,以后能赚多少钱才最重要。基本上就是这个逻辑导致整个互联网行业很多的公司都估值过高,也是巴菲特不愿意投互联网行业的原因!

如果公司不盈利那就没有市盈率可谈了,那剩下的估值“方法”都是非常粗略。比如可以用銷售額来比较,所谓的“市價與銷售額比率”,但是这个比较只在类似行业里才有意义,比如超市里卖苹果的小店一天能卖1000个苹果好像很不错,但可能就赚500块,但苹果公司一天卖一部iPhone就能赚几千块!超市的苹果店可能銷售額比苹果公司的体验店要高,但不代表公司的价格就可以更高!

有一个估值方法是比较直观的,你的公司之所以会值那么多钱就是因为创始人的功劳,比如公司估值300万,创始人自己投入了60万,那剩下的240万就是创始人创造出来的财富,如果公司是两个创始人全职做了一年的话,那就等于每人每个月创造了10万的财富(10万 * 12 * 2 = 240万)。所以从投资人的角度如果投资一个这样的公司(不管投多少钱),那就等于是愿意给创始人一个月10万的“工资”(当然这个只是在纸上面的“工资”),所以为什么说天使投资是“投人”,其实很多时候是在问一个问题:这几个人到底“值”多少钱?

最后说一下天使阶段的一些实际的估值范围,如果你公司的投资前估值是超过3000万人民币,那你就应该考虑去找风险投资,这个基本是他们的门槛,因为他们钱多(相对天使来说),一个项目如果投的钱太少就需要管太多项目,人员不够(风投的投资经理薪水不低),所以他们要嘛不给你钱,给你的话就起码1500万人民币(这个数字有上升的趋势),投资前估值如果是3000万的话那他们就占33.33%(1500除以4500),这个股份比例也基本是他们想要的上限(撑死40%),因为再多的话创始人的原动力就开始下降了。很多天使投资人都不愿意一个项目投超过200万人民币,而且基本是越少越好,如果你公司投资前估值是2000万人民币的话,那天使的200万就只能占9.09%(200除以2200),所以一般来说你公司的估值在2000万人民币以下的话就能找到更多的有可能投你的天使投资人。2000-3000万人民币这个估值是最尴尬的,因为这个时候天使嫌你太高而风险投资嫌你太低!这几年会出现所谓超级天使(super angels)的其中一个原因就是填补这个尴尬的融资范围(funding gap),他们愿意一个项目投几百万到一两千万。

既然估值是那么的难和不客观,有时候创始人会选择另外一种融资的方法:借钱。其实借钱是历史最长的“天使投资”方式,但古时候都是以个人的名义借钱,就是不管创始人的业务赚不赚钱,最终也要把钱还给“投资人”。现代的借钱以公司名义的多,如果公司破产的话借给公司的钱可能就全没了!所以很少投资人愿意借钱给公司,除非是信誉特别好的公司(比如可口可乐发现债卷,那就是向广大人民借钱),所以早期公司现在一般都以“可换股贷款”(convertible loan)的方式向投资人借钱,这样子如果公司最终成功的话投资人可以分享一点成果。可换股贷款就是投资人借钱给公司,年利息一般是7%-10%(好像有下降的趋势,这个跟银行当前的利息也相关),如果以10%的年利率借100万,一年以后公司就欠投资人110万,如果那个时候有风险投资的基金进来的话,公司就会有一个估值(我还没听说过风险投资愿意以可换股贷款的方式投资的),这个时候那110万就自动换成股份,比如公司投资前估值是3000万,风险投资基金投入1500万,那么投资后估值就是4610万(3000 + 1500 + 110),天使投资人这个时候就占2.386%的股份(110除以4610)。所以天使投资人比风险投资赚的就是那一年的利息,从投资回报的角度来看是挺亏的,因为那一年的风险很高!万一借了钱一年以后公司破产的话,那就很可能血本无归!就算不破产,如果一年后没有风险投资的钱进来的话投资人也只能继续等(这个时候公司不太可能有钱可以换),两年三年也得等,所以名义上是借钱,实际上就是推迟估值。既然风险这么高,一般可换股贷款都会有条款让天使投资人能吃点甜头,一个常见的条款就是在风险投资投入的时候以一个折扣的价格换股,常见的折扣是7折到8折,假设8折,在上面的例子天使的110万就等于变成137.5万(110除以80%),投资后估值就是4637.5万(3000 + 1500 + 137.5),天使投资人就占2.964%的股份(137.5除以4637.5)。另外一种过去一年开始流行的甜头是估值上限(valuation cap),就是先说好在风险投资进来的时候公司的估值不能超过一个数目,如果超过的话天使投资人还是以上限的价格换股,用上面的例子,假设估值上限是2000万,那风险投资进来之前天使投资人先换股,等于是做了两轮的融资,第一轮的投资后估值是2110万(2000 + 110),天使占5.21%的股份(110除以2110),第二轮的风险投资进来前天使的5.21%股份就从110万的价值升到156.3万(3000万 * 5.21%),风险投资的1500万进来后估值就是4500万(3000 + 1500),天使这个时候占3.47%(156.3除以4500)。

总的而言投资人是比较喜欢以出让股份的方式投资,而创始人是比较喜欢以可换股贷款的方式融资!一般只有比较好或者成熟的项目才能以可换股贷款的方式融资,第一次融资的项目都很难用这种方式,很多是已经以出让股份的方式融过一轮以后,又没能把估值做到风险投资愿意进来的阶段,那只好再去找天使,但因为之前有过天使的投入可能就更能说服其他天使借钱(可换股贷款)。

收藏:陶朱公经商秘诀

2011年8月31日 16hot 没有评论
陶朱公经商秘诀
生意要勤紧——切忌懒惰 懒惰则百事费
货物要修整——切忌散慢 散慢则查点难
用度要节俭——切忌奢侈 奢侈则钱财竭
用人要方正——切忌滥用 滥用则付托难
接纳要谦和——切忌躁暴 躁暴则交易少
出入要谨慎——切忌潦草 潦草则错误多
买卖要机警——切忌拖延 拖延则机宜失
货物要面验——切忌滥入 滥入则售价减
议价要订明——切忌含糊 含糊则争执多
期货要约定——切忌讹延 讹延则枝节生
期限要约定——切忌马虎 马虎则失信用
赊借要识人——切忌滥出 滥出则血本亏
钱财要明慎——切忌糊涂 糊涂则弊买生
帐目要稽查——切忌懈怠 懈怠则资本滞
临事要尽责——切忌放弃 放弃则权力损
优劣要分明——切忌糊浑 糊浑则判断繁
说话要规矩——切忌浮躁 浮躁则失事多
立心要诚正——切忌粗糙 粗糙则出品劣
主心要安静——切忌惊惶 惊惶则忘决断
相处要诚实——切忌虚假 虚假则害己终

陶朱公经商秘诀
生意要勤紧——切忌懒惰 懒惰则百事费
货物要修整——切忌散慢 散慢则查点难
用度要节俭——切忌奢侈 奢侈则钱财竭
用人要方正——切忌滥用 滥用则付托难
接纳要谦和——切忌躁暴 躁暴则交易少
出入要谨慎——切忌潦草 潦草则错误多
买卖要机警——切忌拖延 拖延则机宜失
货物要面验——切忌滥入 滥入则售价减
议价要订明——切忌含糊 含糊则争执多
期货要约定——切忌讹延 讹延则枝节生
期限要约定——切忌马虎 马虎则失信用
赊借要识人——切忌滥出 滥出则血本亏
钱财要明慎——切忌糊涂 糊涂则弊买生
帐目要稽查——切忌懈怠 懈怠则资本滞
临事要尽责——切忌放弃 放弃则权力损
优劣要分明——切忌糊浑 糊浑则判断繁
说话要规矩——切忌浮躁 浮躁则失事多
立心要诚正——切忌粗糙 粗糙则出品劣
主心要安静——切忌惊惶 惊惶则忘决断
相处要诚实——切忌虚假 虚假则害己终

分类: 转载 标签:

pf rtables and setfib in FreeBSD

2011年7月9日 16hot 没有评论

If one has multiple outgoing links to which one would like to use different routing tables the FreeBSD provides possibility through the setfib command but in order to have multiple routing tables one has to first compile a custom kernel with option ROUTETABLES in example simple kernel config:

include GENERIC
options         ROUTETABLES=4

After the kernel has been built and rebooted the different routing tables can be accessed as shown in the setfib(1) man page by issuing command setfib 0 netstat -rn. 0 is the default routing table.

After this one has to create the second routing table by prepending every route add command with setfib 1 route add… e.g:

# setfib 1 route add -net default 10.0.0.1

With packet filter one can control how the routing table is selected by using rtable option but it should be noted that this selection can only be done on the input of the packets as the routing decision is done at the input not at the output. Here is an example of very simple pf.conf that uses rtable rules and NATs everything to the external interface address:

#
# Macros
#
INT_IF = "em0"
EXT_IF = "bge0"
EXT_IF2 = "bge1"

table <private_nets> persist { 127/8, 172.16/12, 192.168/16, 169.254/16 }

#
# Options and default policy
#
set block-policy drop
set state-policy if-bound

#
# Packet normalization
#
scrub in                          all
scrub out on $EXT_IF all random-id
scrub        on $EXT_IF all reassemble tcp

#
# NAT/redirects
#

# NAT
nat on $EXT_IF from <private_nets> to any -> ($EXT_IF)
nat on $EXT_IF2 from <private_nets> to any -> ($EXT_IF2)

#
# Filter rules
#
pass all
pass in from 192.168.100.0/24 to any rtable 0
pass in from 192.168.150.0/24 to any rtable 1
分类: BSD/linux, 转载 标签: , ,

Root On ZFS @ FreeBSD-Current(转载)

2011年7月9日 16hot 没有评论

The new bsdInstaller is here but unfortunately as we saw it still doesn’t support a full ZFS installation. Also, due to the new layout of the installer the traditional way of installing from <FIXIT> doesn’t work anymore. The installation files are now located under /usr/freebsd-dist and the new “Live CD” option doesn’t create any kind of live fs. Therefore we have to improvise.

For the purpose of this demonstration am using a 9-Current that I created on April 29th. Boot with your 9-Current and choose “Lice CD” when prompted.

The first thing we need to do is to make /tmp writable so that we can store the zpool.cache file.

umount /dev/md1
mdmfs -s 512M md1 /tmp

That should be enough. Now,  lets partition our drive. I will be using a GPT scheme and create a native swap partition of 4 GB Ram, the rest will be allocated to ZFS. This guide installs FreeBSD on a single disk but this could be easily reproduced for a mirror or a raidz1 pool.

gpart create -s gpt ada0
gpart add -b 34 -s 64k -t freebsd-boot ada0
gpart add -s 4G -t freebsd-swap -l swap0 ada0
gpart add -t freebsd-zfs -l disk0 ada0
gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada0

My disk is now ready so I will create a pool and call it zroot and then mount it under /mnt. During this procedure some error messages will appear “can not mount, failed to create mount point”. The reason for those is that /mnt is read only but you can safely ignore them since we will export and import back our pool.

zpool create zroot /dev/gpt/disk0
zpool set bootfs=zroot zroot
zfs set checksum=fletcher4 zroot

Now lets create the file system layout. You can safely ignore the error messages about mounting  again since the pool hasn’t been exported/imported yet.

zfs set mountpoint=/mnt zroot
zfs create zroot/usr
zfs create zroot/var
zfs create -o compression=on -o exec=on -o setuid=off zroot/tmp
zfs create -o compression=lzjb -o setuid=off  zroot/usr/ports
zfs create -o compression=off -o exec=off -o setuid=off zroot/usr/ports/distfiles
zfs create -o compression=off -o exec=off -o setuid=off zroot/usr/ports/packages
zfs create -o compression=lzjb -o exec=off -o setuid=off  zroot/usr/src
zfs create -o compression=lzjb  -o exec=off     -o setuid=off   zroot/var/crash
zfs create -o exec=off -o setuid=off zroot/var/db
zfs create -o compression=lzjb  -o exec=on -o setuid=off  zroot/var/db/pkg
zfs create -o exec=off -o setuid=off   zroot/var/empty
zfs create -o compression=lzjb  -o exec=off -o setuid=off  zroot/var/log
zfs create -o compression=gzip -o exec=off -o setuid=off zroot/var/mail
zfs create -o exec=off -o setuid=off   zroot/var/run
zfs create -o compression=lzjb  -o exec=on -o setuid=off   zroot/var/tmp

Now at this point I will export the pool, import back while preserving the zpool.cache in /tmp

zpool export zroot
zpool import -o cachefile=/tmp/zpool.cache zroot

The pool is now mounted under /mnt and we can now proceed with the final steps.

chmod 1777 /mnt/tmp
cd /mnt ; ln -s /usr/home home
chmod 1777 /mnt/var/tmp
cp /tmp/zpool.cache /mnt/boot/zfs/zpool.cache

Next we need to install FreeBSD. Like I said things have changed therefore the procedure is different. This guide assumes that you also want to install source and ports. For a minimal installation only base.txz lib32.txz kernel.txz are necessary.

sh
cd /usr/freebsd-dist
export DESTDIR=/mnt
for file in base.txz lib32.txz kernel.txz doc.txz ports.txz src.txz;
do (cat $file | tar --unlink -xpJf - -C ${DESTDIR:-/}); done

Done! Now, all that is left is to create the rc.conf, loader.conf and fstab.

echo 'zfs_enable="YES"' >> /mnt/etc/rc.conf
echo 'zfs_load="YES"' >> /mnt/boot/loader.conf
echo 'vfs.root.mountfrom="zfs:zroot"' >> /mnt/boot/loader.conf
cat << EOF > /mnt/etc/fstab
# Device                       Mountpoint              FStype  Options         Dump    Pass#
/dev/gpt/swap0                 none                    swap    sw              0       0
EOF

Final steps

zfs set readonly=on zroot/var/empty
zfs unmount -a

If you get a device busy message try umount -f /mnt

zfs set mountpoint=legacy zroot
zfs set mountpoint=/tmp zroot/tmp
zfs set mountpoint=/usr zroot/usr
zfs set mountpoint=/var zroot/var

Reboot, adjust time zone info, add a password for root, add a user and enjoy!!!

附一个连接:

http://forums.freebsd.org/showthread.php?t=12082

分类: BSD/linux, 转载 标签: ,

FreeBSD为文件加密与解密

2011年4月14日 16hot 没有评论

加密命令:
cat {想要加密的文件名} | crypt {想要设置的密码} > {新文件名/*也可以是源文件名*/}

解密命令:
crypt { 密码} <被加密文件的文件名> <解密后生成新文件的名称/*这里决不可使用被加密的文件名*/>

现有一个文档“ricky1”
#cat ricky1 | crypt 1234 > ricky1
这样一来“ricky1”就被加密了

要想将ricky1解密则使用下面的命令
#crypt 1234 <ricky1> ricky2

分类: BSD/linux, 转载 标签: ,