<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>开源小站 &#187; 网络和安全</title>
	<atom:link href="http://www.litrin.net/category/network-secure/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.litrin.net</link>
	<description>It is Cool to OpenSource</description>
	<lastBuildDate>Fri, 03 Feb 2012 04:33:02 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>运维的CAP原则</title>
		<link>http://www.litrin.net/2011/05/28/%e8%bf%90%e7%bb%b4%e7%9a%84cap%e5%8e%9f%e5%88%99/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e8%25bf%2590%25e7%25bb%25b4%25e7%259a%2584cap%25e5%258e%259f%25e5%2588%2599</link>
		<comments>http://www.litrin.net/2011/05/28/%e8%bf%90%e7%bb%b4%e7%9a%84cap%e5%8e%9f%e5%88%99/#comments</comments>
		<pubDate>Sat, 28 May 2011 07:23:42 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[数据库应用]]></category>
		<category><![CDATA[站长的blog]]></category>
		<category><![CDATA[网络和安全]]></category>
		<category><![CDATA[服务器]]></category>

		<guid isPermaLink="false">http://www.litrin.net/?p=1480</guid>
		<description><![CDATA[小站上的 文章大多以实际操作为主，这次就介绍点理论吧。 曾经跟几个同行聊起了数据库这边的容错方案，有朋友发过类似的牢骚：“网站（或者数据库）做了负载均衡，可用性提高了，单点故障也不怕了，但数据的同步总是慢半拍，无法适用某些应用。如果要求完全解决一一致性的麻烦，就只能到回去。” 程序开发上始终念念不忘的有个“摩尔定律”，归根结底的就是说不要放太多精力去隄防运算速度达不到的问题。在运维以及底层架构涉及上有着同样重要的定律“CAP”，最早由加州大学伯克利分校（又是他）的Eric A. Brewer教授提出的。所有的分布式系统的好坏主要有3个重要的指标来衡量： 一致性（Consistency） 可用性（Availibility） 容错性、鲁棒性原文翻译是“分区容错”（Partition tolerance） 任何一个分布式系统只能同时满足3个条件中的两个，无法同时达到3者兼备。 就拿磁盘RAID来说： RAID0的情况是数据分散在多块硬盘之上，只存一份。由于只有一份数据，不存在数据不同步的情况，一致性得到保障。多磁盘分散IO，性能提升，可用性提升。多块磁盘拼凑一份数据，磁盘损坏的概率正比上升，同时增加磁盘的难度提升，容错性下降。即为了C和A，放弃了P。 RAID1的情况是数据在每个磁盘上做一个备份。由于有多个备份，可能出现多个磁盘上数据不统一的情况，一致性下降。多磁盘分散IO，性能提升，可用性上升。很容易增加备份磁盘，多个备份，磁盘损坏概率反比下降，鲁棒性上升。即为了A和P，放弃了C。 RAID5的情况是一份数据分散在多块硬盘上，另外保存一份校验数据以方便恢复。数据只有一份，不存在一致性的问题。数据读写的同时可能会需要生成校验数据，影响速度，可用性下降。任何一块磁盘的损坏都可以通过剩余的磁盘中的数据和校验数据恢复，鲁棒性上升。即为了C和P，放弃了A。 对于传统的关系数据库的要求又不得不提ACID： 原子性 （Atomicity）数据和操作不可再次分隔 一致性（Consistency）操作结束后，仍可进行同样的操作 隔离性／无关性（Isolation）操作和操作不得影响 不可撤销（Durability） “不可撤销”，“隔离性”，“原子性”都是限制鲁棒性和容错性的P，一致性本身就是C。剩余的A只能作为牺牲的指标。说得明显点就是目前尚没有什么有效的方法让一条SQL同时在多台主机上同时执行正常。跨表SQL很正常，跨数据库操作已经够变态的了，跨系统进行SQL操作而且保证数据的实时和一致几乎是不可能的。 对于传统的关系型数据库来说难度就是CAP三个之中在你需要任何一个的情况下，即便你愿意花钱去升级硬件，也必须以其他的下降作为代价。要么高可用（负载均衡），要么高安全（热备份），要么高容错（事务回滚），想要正比的升级来获取A是不可能的。 这些年大负载架构的出现带动了nosql型数据库。类似memcache，bigtable和Hbase这类的key-value也是一大亮点。相比关系型的数据库而言，新的数据模型仍然无法摆脱这个魔咒，唯一的优势在于这些架构相对灵活，可以根据需要进行CAP取舍，找出真正适合的C 、A、 P比例。]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.litrin.net">小站</a>上的 文章大多以实际操作为主，这次就介绍点理论吧。</p>
<p>曾经跟几个同行聊起了数据库这边的容错方案，有朋友发过类似的牢骚：“网站（或者数据库）做了负载均衡，可用性提高了，单点故障也不怕了，但数据的同步总是慢半拍，无法适用某些应用。如果要求完全解决一一致性的麻烦，就只能到回去。”</p>
<p><span id="more-1480"></span></p>
<p>程序开发上始终念念不忘的有个“摩尔定律”，归根结底的就是说不要放太多精力去隄防运算速度达不到的问题。在运维以及底层架构涉及上有着同样重要的定律“CAP”，最早由加州大学伯克利分校（又是他）的Eric A. Brewer教授提出的。所有的分布式系统的好坏主要有3个重要的指标来衡量：</p>
<ul>
<li>一致性（Consistency）</li>
<li>可用性（Availibility）</li>
<li>容错性、鲁棒性原文翻译是“分区容错”（Partition tolerance）</li>
</ul>
<p>任何一个分布式系统只能同时满足3个条件中的两个，无法同时达到3者兼备。</p>
<p>就拿磁盘RAID来说：</p>
<p>RAID0的情况是数据分散在多块硬盘之上，只存一份。由于只有一份数据，不存在数据不同步的情况，一致性得到保障。多磁盘分散IO，性能提升，可用性提升。多块磁盘拼凑一份数据，磁盘损坏的概率正比上升，同时增加磁盘的难度提升，容错性下降。即为了C和A，放弃了P。</p>
<p>RAID1的情况是数据在每个磁盘上做一个备份。由于有多个备份，可能出现多个磁盘上数据不统一的情况，一致性下降。多磁盘分散IO，性能提升，可用性上升。很容易增加备份磁盘，多个备份，磁盘损坏概率反比下降，鲁棒性上升。即为了A和P，放弃了C。</p>
<p>RAID5的情况是一份数据分散在多块硬盘上，另外保存一份校验数据以方便恢复。数据只有一份，不存在一致性的问题。数据读写的同时可能会需要生成校验数据，影响速度，可用性下降。任何一块磁盘的损坏都可以通过剩余的磁盘中的数据和校验数据恢复，鲁棒性上升。即为了C和P，放弃了A。</p>
<p>对于传统的关系数据库的要求又不得不提ACID：</p>
<ul>
<li>原子性 （Atomicity）数据和操作不可再次分隔</li>
<li>一致性（Consistency）操作结束后，仍可进行同样的操作</li>
<li>隔离性／无关性（Isolation）操作和操作不得影响</li>
<li>不可撤销（Durability）</li>
</ul>
<p>“不可撤销”，“隔离性”，“原子性”都是限制鲁棒性和容错性的P，一致性本身就是C。剩余的A只能作为牺牲的指标。说得明显点就是目前尚没有什么有效的方法让一条SQL同时在多台主机上同时执行正常。跨表SQL很正常，跨数据库操作已经够变态的了，跨系统进行SQL操作而且保证数据的实时和一致几乎是不可能的。</p>
<p>对于传统的关系型数据库来说难度就是CAP三个之中在你需要任何一个的情况下，即便你愿意花钱去升级硬件，也必须以其他的下降作为代价。要么高可用（负载均衡），要么高安全（热备份），要么高容错（事务回滚），想要正比的升级来获取A是不可能的。</p>
<p>这些年大负载架构的出现带动了nosql型数据库。类似memcache，bigtable和Hbase这类的key-value也是一大亮点。相比关系型的数据库而言，新的数据模型仍然无法摆脱这个魔咒，唯一的优势在于这些架构相对灵活，可以根据需要进行CAP取舍，找出真正适合的C 、A、 P比例。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2011/05/28/%e8%bf%90%e7%bb%b4%e7%9a%84cap%e5%8e%9f%e5%88%99/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Ecshop的问题</title>
		<link>http://www.litrin.net/2011/04/28/ecshop%e7%9a%84%e9%97%ae%e9%a2%98/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=ecshop%25e7%259a%2584%25e9%2597%25ae%25e9%25a2%2598</link>
		<comments>http://www.litrin.net/2011/04/28/ecshop%e7%9a%84%e9%97%ae%e9%a2%98/#comments</comments>
		<pubDate>Thu, 28 Apr 2011 08:22:05 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[www]]></category>
		<category><![CDATA[网络和安全]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.litrin.net/?p=1454</guid>
		<description><![CDATA[在看一台服务器的SQL-Slow日志，看到了如下的一纪录，惊出了一身冷汗！ SELECT pg.package_id, pg.goods_id, pg.goods_number, pg.admin_id, g.goods_sn, g.goods_name, g.market_price, g.goods_thumb, g.is_real, IFNULL(mp.user_price, g.shop_price * '1') AS rank_price FROM `ecs_`.`ecs_package_goods` AS pg LEFT JOIN `ecs_venusveil`.`ecs_goods` AS g ON g.goods_id = pg.goods_id LEFT JOIN `ecs_venusveil`.`ecs_member_price` AS mp ON mp.goods_id = g.goods_id AND mp.user_rank = '0' WHERE pg.package_id = -1 union all select 1,2,3,4,5,6,7,8,count(*),concat( (Select concat(0x5b,email,0x3a,user_name,0x5d) FROM ecs_users [...]]]></description>
			<content:encoded><![CDATA[<p>在看一台服务器的SQL-Slow日志，看到了如下的一纪录，惊出了一身冷汗！</p>
<pre class="sql" name='code'>
SELECT pg.package_id, pg.goods_id, pg.goods_number,
        pg.admin_id, g.goods_sn, g.goods_name, g.market_price, g.goods_thumb, g.is_real,
        IFNULL(mp.user_price, g.shop_price * '1') AS rank_price
FROM `ecs_`.`ecs_package_goods` AS pg
        LEFT JOIN `ecs_venusveil`.`ecs_goods` AS g ON g.goods_id = pg.goods_id
        LEFT JOIN `ecs_venusveil`.`ecs_member_price` AS mp ON mp.goods_id = g.goods_id AND mp.user_rank = '0'
WHERE pg.package_id = -1
union all
        select 1,2,3,4,5,6,7,8,count(*),concat(
                (Select concat(0x5b,email,0x3a,user_name,0x5d)
                        FROM ecs_users
                        LIMIT 9456,1), floor(rand(0)*2))x
         from information_schema.tables
         group by x
ORDER BY pg.package_id, pg.goods_id;</pre>
<p><span id="more-1454"></span><br />
不知看懂没有，反正这句SQL是解释不通的。由于网站跑在ECshop2.7.2的环境之上，问题肯定来自代码缺陷。之前似乎有发过<a href="http://www.litrin.net/2009/09/11/%E8%AF%B4%E8%AF%B4%E2%80%9C%E4%B8%93%E4%B8%9A%E2%80%9D/">ECShop的牢骚</a>，作为一个商业软件，而且是做交易平台的商业软件，竟然如此不专业种种的操作。特地浏览了一下代码，发觉代码里面的更加经典！几乎没有对任何变量进行校验和过滤！</p>
<p>由于程序不是我开发的，无法追溯源。只能根据日志进行反查，找到了根基</p>
<ol>
<li>flow.php中2157行中json来源可由客户端定义，导致2182行$package-&gt;package_id不可控。</li>
<li>include/lib_order.php中对include/lib_common.php 的function get_package_info($id)可以植入SQL</li>
<li>畸形SQL导致Mysql返回空信息</li>
<li>攻击者获得无限量优惠包，仅此而已。</li>
</ol>
<p>无话可说！引以为戒吧！</p>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2011/04/28/ecshop%e7%9a%84%e9%97%ae%e9%a2%98/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Ubuntu的AppArmor引发的Mysql问题</title>
		<link>http://www.litrin.net/2011/04/08/ubuntu%e7%9a%84apparmor%e5%bc%95%e5%8f%91%e7%9a%84mysql%e9%97%ae%e9%a2%98/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=ubuntu%25e7%259a%2584apparmor%25e5%25bc%2595%25e5%258f%2591%25e7%259a%2584mysql%25e9%2597%25ae%25e9%25a2%2598</link>
		<comments>http://www.litrin.net/2011/04/08/ubuntu%e7%9a%84apparmor%e5%bc%95%e5%8f%91%e7%9a%84mysql%e9%97%ae%e9%a2%98/#comments</comments>
		<pubDate>Fri, 08 Apr 2011 02:56:29 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[网络和安全]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[服务器]]></category>

		<guid isPermaLink="false">http://www.litrin.net/?p=1430</guid>
		<description><![CDATA[这些天一台ubuntu server的mysql数据目录/var/lib/mysql所在分区快用光了，于是想把Mysql的数据目录移到一个相对空闲的分区下，直接修改了my.cnf中的配置，系统提示无法启动Mysql。又自做聪明的使用了链接文件访问，仍然无效。完全排除了所有linux文件系统权限的可能之后，我回忆起了之前在Redhat系操作系统上发生过的SeLinux导致的类似问题。看了一下官档，果然！Ubuntu在710之后，增加了一个类似于Selinux的权限控制服务叫做AppArmor，名字就很有意思：应用铠甲，让我想起了Diablo2中的暗金⋯⋯ 首先，解决那个Mysql的问题： #sudo nano /etc/apparmor.d/usr.sbin.mysqld ＃好吧，我承认，我sudo出了习惯 发现了有两行配置： /home/mysql/ r, /home/mysql/** rwk, 修改掉 /data/mysql/ r, /data/mysql/** rwk, 重启AppArmor /etc/init.d/apparmor reload 重启Mysql，一切OK! 当然你可以直接关闭apparmor服务避免类似的问题，但从安全角度考虑，我不建议这么做，毕竟修改两行参数的事，不复杂。 事实上，这个应用是Novell主导的，想必Suse上也有同样的设置。在/etc/apparmor.d目录下的增减文件可以在Linux文件系统权限之外基于程序对文件系统的访问操作进行限制。如果你想要限制一个/a/b的文件，对应的配置文件就是/etc/apparmor.d/a.b。内容应该很好理解了。 感觉上相比Selinux而言AppArmor简单一点，不知安全程度如何。但就我个人而言，我更加信任相对复杂的SeLinux。 ps: 之前我还碰到过ssh上去不能读写移动硬盘的问题，估计也于此有关。]]></description>
			<content:encoded><![CDATA[<p>这些天一台ubuntu server的mysql数据目录/var/lib/mysql所在分区快用光了，于是想把Mysql的数据目录移到一个相对空闲的分区下，直接修改了my.cnf中的配置，系统提示无法启动Mysql。又自做聪明的使用了链接文件访问，仍然无效。完全排除了所有linux文件系统权限的可能之后，我回忆起了之前在Redhat系操作系统上发生过的SeLinux导致的类似问题。看了一下官档，果然！Ubuntu在710之后，增加了一个类似于Selinux的权限控制服务叫做AppArmor，名字就很有意思：应用铠甲，让我想起了Diablo2中的暗金⋯⋯</p>
<p><span id="more-1430"></span>首先，解决那个Mysql的问题：</p>
<pre>#sudo nano /etc/apparmor.d/usr.sbin.mysqld ＃好吧，我承认，我sudo出了习惯</pre>
<p>发现了有两行配置：</p>
<pre>/home/mysql/ r,
/home/mysql/** rwk,</pre>
<p>修改掉</p>
<pre>/data/mysql/ r,
/data/mysql/** rwk,</pre>
<p>重启AppArmor</p>
<pre>/etc/init.d/apparmor reload</pre>
<p>重启Mysql，一切OK!<br />
当然你可以直接关闭apparmor服务避免类似的问题，但从安全角度考虑，我不建议这么做，毕竟修改两行参数的事，不复杂。</p>
<p>事实上，这个应用是Novell主导的，想必Suse上也有同样的设置。在/etc/apparmor.d目录下的增减文件可以在Linux文件系统权限之外基于程序对文件系统的访问操作进行限制。如果你想要限制一个/a/b的文件，对应的配置文件就是/etc/apparmor.d/a.b。内容应该很好理解了。</p>
<p>感觉上相比Selinux而言AppArmor简单一点，不知安全程度如何。但就我个人而言，我更加信任相对复杂的SeLinux。</p>
<p>ps:</p>
<p>之前我还碰到过ssh上去不能读写移动硬盘的问题，估计也于此有关。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2011/04/08/ubuntu%e7%9a%84apparmor%e5%bc%95%e5%8f%91%e7%9a%84mysql%e9%97%ae%e9%a2%98/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SYN-ACK-ACK攻击和SYN COOKIE</title>
		<link>http://www.litrin.net/2011/03/21/syn-ack-ack%e6%94%bb%e5%87%bb%e5%92%8csyn-cookie/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=syn-ack-ack%25e6%2594%25bb%25e5%2587%25bb%25e5%2592%258csyn-cookie</link>
		<comments>http://www.litrin.net/2011/03/21/syn-ack-ack%e6%94%bb%e5%87%bb%e5%92%8csyn-cookie/#comments</comments>
		<pubDate>Mon, 21 Mar 2011 01:32:06 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[网络和安全]]></category>
		<category><![CDATA[Juniper]]></category>

		<guid isPermaLink="false">http://www.litrin.net/?p=1412</guid>
		<description><![CDATA[没事在看Juniper Netscreen的警报日志，看到有一条SYN-ACK-ACK记录。 正常情况下TCP/IP协议中SYN握手大致上如此： A（发起者）发送一个SYN给B（接收者） B回复SYN-ACK给A A回复ACK给B 连接成功！ 这个过程的缺陷是，如果A是有恶意的来源，始终不停的发送SYN给B，那么B就会不停的建立起空连接（未完成的连接）等待A的ACK响应，只要A不回应，B的空连接就会不断的消耗资源，直至无法响应。 这个缺陷事实上不是操作系统级别、防火墙级别的缺陷，而是来自于TCP/IP协议本身的设计缺陷。 看了一下NetScreen的Screen安全策略中有针对它设计的SYN COOKIE设置。 个人理解下来这是一个很讨巧的方法，但是略显笨拙： NS之外的A发送了一个SYN请求给内网的B NS截获了这个请求，没有直接将数据包转发给B，而是自己生成了一个假冒的SYN_ACK包回复给A A回复了ACK，成功完成握手 NS将之前的SYN请求发送给B B发送SYN-ACK NS回复ACK NS搭建A到B的正式通道 这种方式类似于中间人的方式实现连接，一定程度上是可以保护B不受攻击的侵扰。但事实上如果这时的A有足够的资源，完全可以让NetScreen建立的空连接达到无法响应的程度，这样实现的效果反而远远大于直接对B发起的攻击。 对于类似的方法，Netscreen没有响应的设置，相应的文档上也没有给出解释。个人认为，NS应该是有一种判断机制，比如说时间或者频率。正常情况下是允许ACK回复延时的，但延时到了一定程度，或者这个来源不停的建立这种通信达到一个阀值，NS将会启动处理机制将A拉黑，同时关闭所有与A有关的连接。 总的来说，SYN-ACK-ACK攻击属于不对等攻击，与DDOS，泪滴等攻击一样，发起攻击的成本要远远低于预防攻击的成本，这是TCP/IP的缺陷，只要不放弃TCP/IP，这样的攻击就会一直存在。而且防止前提必须是“已经受到了攻击”之后，即只能医治，无法预防。]]></description>
			<content:encoded><![CDATA[<p>没事在看Juniper Netscreen的警报日志，看到有一条SYN-ACK-ACK记录。</p>
<p>正常情况下TCP/IP协议中SYN握手大致上如此：</p>
<ol>
<li>A（发起者）发送一个SYN给B（接收者）</li>
<li>B回复SYN-ACK给A</li>
<li>A回复ACK给B</li>
<li>连接成功！</li>
</ol>
<p>这个过程的缺陷是，如果A是有恶意的来源，始终不停的发送SYN给B，那么B就会不停的建立起空连接（未完成的连接）等待A的ACK响应，只要A不回应，B的空连接就会不断的消耗资源，直至无法响应。</p>
<p><span id="more-1412"></span></p>
<p>这个缺陷事实上不是操作系统级别、防火墙级别的缺陷，而是来自于TCP/IP协议本身的设计缺陷。</p>
<p>看了一下NetScreen的Screen安全策略中有针对它设计的SYN COOKIE设置。</p>
<p>个人理解下来这是一个很讨巧的方法，但是略显笨拙：</p>
<ol>
<li>NS之外的A发送了一个SYN请求给内网的B</li>
<li>NS截获了这个请求，没有直接将数据包转发给B，而是自己生成了一个假冒的SYN_ACK包回复给A</li>
<li>A回复了ACK，成功完成握手</li>
<li>NS将之前的SYN请求发送给B</li>
<li>B发送SYN-ACK</li>
<li>NS回复ACK</li>
<li>NS搭建A到B的正式通道</li>
</ol>
<p>这种方式类似于中间人的方式实现连接，一定程度上是可以保护B不受攻击的侵扰。但事实上如果这时的A有足够的资源，完全可以让NetScreen建立的空连接达到无法响应的程度，这样实现的效果反而远远大于直接对B发起的攻击。</p>
<p>对于类似的方法，Netscreen没有响应的设置，相应的文档上也没有给出解释。个人认为，NS应该是有一种判断机制，比如说时间或者频率。正常情况下是允许ACK回复延时的，但延时到了一定程度，或者这个来源不停的建立这种通信达到一个阀值，NS将会启动处理机制将A拉黑，同时关闭所有与A有关的连接。</p>
<p>总的来说，SYN-ACK-ACK攻击属于不对等攻击，与DDOS，泪滴等攻击一样，发起攻击的成本要远远低于预防攻击的成本，这是TCP/IP的缺陷，只要不放弃TCP/IP，这样的攻击就会一直存在。而且防止前提必须是“已经受到了攻击”之后，即只能医治，无法预防。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2011/03/21/syn-ack-ack%e6%94%bb%e5%87%bb%e5%92%8csyn-cookie/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>安装Subversion服务器</title>
		<link>http://www.litrin.net/2011/01/05/%e5%ae%89%e8%a3%85subversion%e6%9c%8d%e5%8a%a1%e5%99%a8/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e5%25ae%2589%25e8%25a3%2585subversion%25e6%259c%258d%25e5%258a%25a1%25e5%2599%25a8</link>
		<comments>http://www.litrin.net/2011/01/05/%e5%ae%89%e8%a3%85subversion%e6%9c%8d%e5%8a%a1%e5%99%a8/#comments</comments>
		<pubDate>Wed, 05 Jan 2011 02:53:19 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[Unix]]></category>
		<category><![CDATA[网络和安全]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[服务器]]></category>
		<category><![CDATA[桌面应用]]></category>

		<guid isPermaLink="false">http://www.litrin.net/?p=1380</guid>
		<description><![CDATA[SVN虽说已经老了，可能逐步要被Git这类的新型版本控制服务软件代替了。但就单单兼容性和整合度来说，唯一与之媲美的只有更加古老的CVS了。 总之，没什么可以解释的，直接切入正题吧。服务器又是我近期一贯使用的Ubuntu Server。版本是1004 LTS。 $sudo apt-get update #迟早会像我一样条件反射的打这条命令的 $ sudo apt-get install subversion subversion-tools $cd /data/subversion   $ svnadmin create ExampleProject #建立SVN项目ExampleProject 修改ExampleProject下的passwd 建立用户名，authz建立工作组和权限。 如果您仅仅只是在内网中使用SVN的话，到这一步其实已经结束了，直接执行 $sudo  svnserve -d -r /data/subversion   之后就netstat -an可以看到3690的监听就说明svn的服务已经起来了，可以通过TortroseSVN这类的工具连接server://IP/ExampleProject的方式进行访问。 如果你需要通过http方式访问的话，那么继续。 $ sudo apt-get install mod_svn apache2 编辑/etc/apache2/mods-available/dav_svn.conf，在末尾加上： &#60;Location /svn/&#62;         DAV svn         SVNParentPath /data/subversion         AuthType Basic         AuthName "SVN repository"         AuthUserFile /data/subversion/.htpasswd [...]]]></description>
			<content:encoded><![CDATA[<p>SVN虽说已经老了，可能逐步要被Git这类的新型版本控制服务软件代替了。但就单单兼容性和整合度来说，唯一与之媲美的只有更加古老的CVS了。</p>
<p>总之，没什么可以解释的，直接切入正题吧。服务器又是我近期一贯使用的Ubuntu Server。版本是1004 LTS。</p>
<p>$sudo apt-get update #迟早会像我一样条件反射的打这条命令的<br />
$ sudo apt-get install subversion subversion-tools</p>
<p><span id="more-1380"></span></p>
<p>$cd /data/subversion  <br />
$ svnadmin create ExampleProject #建立SVN项目ExampleProject<br />
修改ExampleProject下的passwd 建立用户名，authz建立工作组和权限。</p>
<p>如果您仅仅只是在内网中使用SVN的话，到这一步其实已经结束了，直接执行<br />
$sudo  svnserve -d -r /data/subversion  <br />
之后就netstat -an可以看到3690的监听就说明svn的服务已经起来了，可以通过<a rel="nofollow" target="_blank" href="http://tortoisesvn.net/downloads.html" target="_blank">TortroseSVN</a>这类的工具连接server://IP/ExampleProject的方式进行访问。</p>
<p>如果你需要通过http方式访问的话，那么继续。</p>
<p>$ sudo apt-get install mod_svn apache2</p>
<p>编辑/etc/apache2/mods-available/dav_svn.conf，在末尾加上：</p>
<pre>&lt;Location /svn/&gt;
        DAV svn
        SVNParentPath /data/subversion

        AuthType Basic
        AuthName "SVN repository"

        AuthUserFile /data/subversion/.htpasswd
        require valid-user

        &lt;LimitExcept GET PROPFIND OPTIONS REPORT&gt;
                Require valid-user
        &lt;/LimitExcept&gt;
&lt;/Location&gt;</pre>
<p>重启apache2<br />
$sudo apache2ctl restart</p>
<p>$htpasswd -c /data/subversion/.htpasswd UserName1</p>
<p>$htpasswd -m /data/subversion/.htpasswd UserName2 注意，参数变了！</p>
<p>之前编辑的passwd文件可以不要理会了，直接编辑authz文件的工作组和权限就好了。</p>
<p>如果之前一直都没有问题的话，直接连接server://IP/svn/ExampleProject就可以访问了。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2011/01/05/%e5%ae%89%e8%a3%85subversion%e6%9c%8d%e5%8a%a1%e5%99%a8/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>从GAE看网站架构趋势</title>
		<link>http://www.litrin.net/2010/12/21/%e4%bb%8egae%e7%9c%8b%e7%bd%91%e7%ab%99%e6%9e%b6%e6%9e%84%e8%b6%8b%e5%8a%bf/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e4%25bb%258egae%25e7%259c%258b%25e7%25bd%2591%25e7%25ab%2599%25e6%259e%25b6%25e6%259e%2584%25e8%25b6%258b%25e5%258a%25bf</link>
		<comments>http://www.litrin.net/2010/12/21/%e4%bb%8egae%e7%9c%8b%e7%bd%91%e7%ab%99%e6%9e%b6%e6%9e%84%e8%b6%8b%e5%8a%bf/#comments</comments>
		<pubDate>Tue, 21 Dec 2010 01:59:53 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[数据库应用]]></category>
		<category><![CDATA[硬件相关]]></category>
		<category><![CDATA[站长的blog]]></category>
		<category><![CDATA[网络和安全]]></category>
		<category><![CDATA[GAE]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[业界话题]]></category>
		<category><![CDATA[服务器]]></category>

		<guid isPermaLink="false">http://www.litrin.net/?p=1372</guid>
		<description><![CDATA[在Google App Engine做了几个东西。从当初觉得这个平台的迥然不同，直到现在逐步了解了这个平台的逻辑架构。作为Google的一款成功的作品，相信GAE的很多东西将会陆陆续续被模仿和抄袭，直到真正影响到我们。本文就以我个人的理解，谈谈GAE将会给今后的网站架构带来哪些革命性的东西。 首当其冲的应该算是云技术，但这个技术总体上属于物理层的技术，况且云已经成为公认的技术趋势。这里主要是谈下网站的架构，云技术相对关系较为偏离，我也就不再探讨了。 BigTable数据库 一开始接触下来的GAE，最感觉不适应的就非它的“数据存储”技术。通常用惯了SQL，用了GAE觉得数据设计上很要有很大的转变。 GAE的“数据库”感觉就是一个巨大的List，每一条记录都是key-value的对应关系。当然起初是无法满足很多传统上的数据结构。不过如果你能够在数据结构设计上打破SQL的限制，通过极端灵活的Key-value, key-value, key-value，你就能发觉这样的框架事实上比传统的SQL更适合网站。 说mysql比oracle在网站实现上的优势并非是因为它功能的强大，而是它速度快，结构简单。尽管有人戏称mysql“裸奔”，但无可否认的就是这种“裸奔”的效果带来的mysql的成功。GAE的数据库比mysql还要“裸奔”，但更快的响应将会是SQL永远无法企及的。FaceBook之前也抛弃了SQL亦证明了这一点。 此外整站之间的数据复制也算是革新之一。 多通道的融合 GAE整合了mail，xmpp，跨域验证等一系列的通道也算是特色之一，想必很多人会认为google这是在捆绑自己的产品。作为之前的门户网站的特色，每家人都会有一个自己的邮箱，一个自己的聊天工具，以及一系列自己的产品捆绑在内。GAE的创新在于用户只需要一个自己的google帐户就可以实现捆绑所有的gae服务。这是一个真正意义上的以用户为本。 Xmpp的捆绑还意味着EDM之后，将来IM营销或者类似的IM推送将会逐步成为一个产业。或者更进一步，IM机器人或者类似的技术将会一定程度上取代现有人人对话模式。当然，这需要一段时间，但至少个人认为目前大量的taobao网店需要这种技术^_^。 精巧的运维界面 相信GAE的后他大家也会印象深刻，能对每一个模块进行精确的监控，已经让运维的工作从翻阅日志的文本化提升到了图形化。粒度也更为精准，如果能配合Analytics之类的数据，完全可以实现智能化的运维。 RSS XML SOAP 网址抓取&#8230; 其实这也不算是什么革新，Web2.0时代的开始就是以此为标志的。但事实上单单从开发库中各个库的名称都叫API来看，就可以明白，其实整个GAE就是构建在这些基础之上的。SOAP成为了各个模块之间的粘合剂。 这个带来的优势就是，无需关心这个库那个库——好像本站技术性文档的大部分都是解决的“库问题”。各自统一接口，加速了开发的进程。]]></description>
			<content:encoded><![CDATA[<p>在Google App Engine做了几个东西。从当初觉得这个平台的迥然不同，直到现在逐步了解了这个平台的逻辑架构。作为Google的一款成功的作品，相信GAE的很多东西将会陆陆续续被模仿和抄袭，直到真正影响到我们。本文就以我个人的理解，谈谈GAE将会给今后的网站架构带来哪些革命性的东西。</p>
<p>首当其冲的应该算是云技术，但这个技术总体上属于物理层的技术，况且云已经成为公认的技术趋势。这里主要是谈下网站的架构，云技术相对关系较为偏离，我也就不再探讨了。</p>
<p><span id="more-1372"></span></p>
<p><strong>BigTable数据库</strong></p>
<p>一开始接触下来的GAE，最感觉不适应的就非它的“数据存储”技术。通常用惯了SQL，用了GAE觉得数据设计上很要有很大的转变。<br />
GAE的“数据库”感觉就是一个巨大的List，每一条记录都是key-value的对应关系。当然起初是无法满足很多传统上的数据结构。不过如果你能够在数据结构设计上打破SQL的限制，通过极端灵活的Key-value, key-value, key-value，你就能发觉这样的框架事实上比传统的SQL更适合网站。<br />
说mysql比oracle在网站实现上的优势并非是因为它功能的强大，而是它速度快，结构简单。尽管有人戏称mysql“裸奔”，但无可否认的就是这种“裸奔”的效果带来的mysql的成功。GAE的数据库比mysql还要“裸奔”，但更快的响应将会是SQL永远无法企及的。FaceBook之前也抛弃了SQL亦证明了这一点。</p>
<p>此外整站之间的数据复制也算是革新之一。</p>
<p><strong>多通道的融合</strong></p>
<p>GAE整合了mail，xmpp，跨域验证等一系列的通道也算是特色之一，想必很多人会认为google这是在捆绑自己的产品。作为之前的门户网站的特色，每家人都会有一个自己的邮箱，一个自己的聊天工具，以及一系列自己的产品捆绑在内。GAE的创新在于用户只需要一个自己的google帐户就可以实现捆绑所有的gae服务。这是一个真正意义上的以用户为本。<br />
Xmpp的捆绑还意味着EDM之后，将来IM营销或者类似的IM推送将会逐步成为一个产业。或者更进一步，IM机器人或者类似的技术将会一定程度上取代现有人人对话模式。当然，这需要一段时间，但至少个人认为目前大量的taobao网店需要这种技术^_^。</p>
<p><strong>精巧的运维界面</strong></p>
<p>相信GAE的后他大家也会印象深刻，能对每一个模块进行精确的监控，已经让运维的工作从翻阅日志的文本化提升到了图形化。粒度也更为精准，如果能配合Analytics之类的数据，完全可以实现智能化的运维。</p>
<p><strong>RSS XML </strong><strong>SOAP </strong>网址抓取&#8230;</p>
<p>其实这也不算是什么革新，Web2.0时代的开始就是以此为标志的。但事实上单单从开发库中各个库的名称都叫API来看，就可以明白，其实整个GAE就是构建在这些基础之上的。SOAP成为了各个模块之间的粘合剂。<br />
这个带来的优势就是，无需关心这个库那个库——好像<a href="http://www.litrin.net/" target="_blank">本站</a>技术性文档的大部分都是解决的“库问题”。各自统一接口，加速了开发的进程。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2010/12/21/%e4%bb%8egae%e7%9c%8b%e7%bd%91%e7%ab%99%e6%9e%b6%e6%9e%84%e8%b6%8b%e5%8a%bf/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Gtalk通知机器人脚本</title>
		<link>http://www.litrin.net/2010/12/02/gtalk%e9%80%9a%e7%9f%a5%e6%9c%ba%e5%99%a8%e4%ba%ba%e8%84%9a%e6%9c%ac/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=gtalk%25e9%2580%259a%25e7%259f%25a5%25e6%259c%25ba%25e5%2599%25a8%25e4%25ba%25ba%25e8%2584%259a%25e6%259c%25ac</link>
		<comments>http://www.litrin.net/2010/12/02/gtalk%e9%80%9a%e7%9f%a5%e6%9c%ba%e5%99%a8%e4%ba%ba%e8%84%9a%e6%9c%ac/#comments</comments>
		<pubDate>Thu, 02 Dec 2010 06:08:53 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[www]]></category>
		<category><![CDATA[网络和安全]]></category>
		<category><![CDATA[GAE]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://www.litrin.net/?p=1356</guid>
		<description><![CDATA[服务器每天都有这样那样的信息需要实时推送。最初一直是Mail，最容易实现，成本也低。后来有了短信接口，就有了相对实时但要花钱的方式推送。 知道GAE可以直接跟gtalk挂钩推送消息，可能一直挂Gtalk的人远没有挂QQ和MSN的多（密之声：Gtalk又没有星星和钻石，挂也没劲），但有了Android + 3G的实时在线，这种方式却可以直接替代SMS这类花钱的服务，何乐不为？ 大致上完成了原型，制作了一个基于Python的命令行程序，不敢独享，分享给大家。希望大家能够一起加入这个项目完善它。 在此之前，请现将 server-say @@@ appspot.com （你懂的！）加为好友 #!/usr/bin/python # -*- coding:utf-8 -*- import sys import re import urllib class ServerSaid: ApiURL = 'http://server-say.appspot.com/api' # #请到http://server-said.appspot.com/注册您的Ip地址。没有注册的Ip每小时最多10条消息。 # Account = '' MessageBody = '' DefaultEncode = 'utf-8' def SendMessage(self): cleanMessage = self.MessageBody.encode(self.DefaultEncode) if (self.checkEmail(self.Account) and self.checkMessage(cleanMessage)): cleanMessage = self.MessageBody.encode('utf-8') url = self.ApiURL + '?account='+ [...]]]></description>
			<content:encoded><![CDATA[<p>服务器每天都有这样那样的信息需要实时推送。最初一直是Mail，最容易实现，成本也低。后来有了短信接口，就有了相对实时但要花钱的方式推送。</p>
<p>知道GAE可以直接跟gtalk挂钩推送消息，可能一直挂Gtalk的人远没有挂QQ和MSN的多（密之声：Gtalk又没有星星和钻石，挂也没劲），但有了Android + 3G的实时在线，这种方式却可以直接替代SMS这类花钱的服务，何乐不为？</p>
<p>大致上完成了原型，制作了一个基于Python的命令行程序，不敢独享，分享给大家。希望大家能够一起加入这个项目完善它。<br />
在此之前，请现将 server-say @@@ appspot.com （你懂的！）加为好友</p>
<p><span id="more-1356"></span></p>
<pre class="python" name='code'>
#!/usr/bin/python
# -*- coding:utf-8 -*-
import sys
import re
import urllib

class ServerSaid:

	ApiURL = 'http://server-say.appspot.com/api'
	#
	#请到http://server-said.appspot.com/注册您的Ip地址。没有注册的Ip每小时最多10条消息。
	#
	Account = ''
	MessageBody = ''
	DefaultEncode = 'utf-8'

	def SendMessage(self):
		cleanMessage = self.MessageBody.encode(self.DefaultEncode)
		if (self.checkEmail(self.Account) and self.checkMessage(cleanMessage)):
			cleanMessage = self.MessageBody.encode('utf-8')
			url = self.ApiURL + '?account='+ urllib.quote(self.Account) +'&#038;message=' + urllib.quote(cleanMessage)
		#	print url
			query = urllib.urlopen(url)
			if ( query.read() == '200' ):
				print 'Message be sent!\\n'

			else:
				print self.Error(0)
		else :
			print self.Error(1)

	def Error(self, code=0):
		return  'Message can\\'t be send! \\n'

	def checkEmail(self, Email):
		RegexString = r'^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w{2,5}$'

		return re.match(RegexString, Email)

	def checkMessage(self, Message):

		RegexString = r'^.{1,140}$'
		return re.match(RegexString, Message)

if __name__ == '__main__':

	if (len(sys.argv)>1):
		handler = ServerSaid()
		handler.Account = sys.argv[1]

		Message = sys.argv[2]

		handler.MessageBody = Message.decode(handler.DefaultEncode)

		handler.SendMessage()
	else:
		print 'serversaid.py YOUR_GTALK MESSAGE '
</pre>
<p>这里为了防止消息的滥发，使用前最好先到 <a rel="nofollow" target="_blank" href="http://server-say.appspot.com/">http://server-say.appspot.com/ </a>注册一下。没有注册的IP每小时仅能发送10条消息，我想大部分情况下也够用了。注册了的用户可以无限制的发送消息了，除非我在GAE注册的那张信用卡里的钱花光——我会哭的。</p>
<p>啥也不说了，PHP接口也搞定了！</p>
<pre name='code' class='php'>
< ?php
/*
 *    Gtalk 通告机器人 Ver 0.1
 *
 *    Litrin Jiang 2010/12/02
 *
 * --------------------------------
 *  1. 2010/12: v0.1 原型实现
 *
 */

Class Gtalk{

	private $APIUrl = 'Http://server-say.appspot.com/api?';
	//Api 的地址，不要修改

	public $mothod = 'get';
	//默认的提交方式，现阶段仅支持get
	public $account = '';
	//接收人的Gtalk账户
	public $messageBody = '';
	//消息主体，最多支持140个字符

	public $Charset = 'UTF-8';

	public function Send($account=null, $messageBody=null){
		if (is_array($account)){
			foreach ($account as $key) {
				$this->Send($key);
			}
		}

		if ($account === null){
			$account = $this.account;
		}
		$this->CheckAccount($account);

		if($messageBody === null){
			$messageBody = $this->messageBody;
		}
		if ($this->Charset != 'UTF-8'){
			$messageBody = iconv("UTF-8", $this->Charset.'//IGNORE', $messageBody);
		}
		$this->CheckMessage($messageBody);

		$url = $this->APIUrl .'account=' . urlencode($account) . '&#038;message=' .  urlencode($messageBody);

		$query = file($url);
		/*
		if($query == '200'){
			return true;
		}else{
			return false;
		}*/

	}

	private function CheckAccount($account){
		$regexString = '^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w{2,5}$';
		echo ereg($regexString, $account);
		if (ereg($regexString, $account) != true){
			#throw new Exception("Value not a Email account! ");
		}

	}

	private function CheckMessage($messageBody){
		$regexString = '^.{1,140}';
		if (ereg($regexString, $messageBody) != true){
			#throw new Exception("Message not a allowed format! ");
		}
	}
}

?>
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2010/12/02/gtalk%e9%80%9a%e7%9f%a5%e6%9c%ba%e5%99%a8%e4%ba%ba%e8%84%9a%e6%9c%ac/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>用SSH Tunnel穿越防火墙</title>
		<link>http://www.litrin.net/2010/02/09/%e7%94%a8ssh-tunnel%e7%a9%bf%e8%b6%8a%e9%98%b2%e7%81%ab%e5%a2%99/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e7%2594%25a8ssh-tunnel%25e7%25a9%25bf%25e8%25b6%258a%25e9%2598%25b2%25e7%2581%25ab%25e5%25a2%2599</link>
		<comments>http://www.litrin.net/2010/02/09/%e7%94%a8ssh-tunnel%e7%a9%bf%e8%b6%8a%e9%98%b2%e7%81%ab%e5%a2%99/#comments</comments>
		<pubDate>Tue, 09 Feb 2010 02:17:06 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Unix]]></category>
		<category><![CDATA[www]]></category>
		<category><![CDATA[网络和安全]]></category>
		<category><![CDATA[桌面应用]]></category>

		<guid isPermaLink="false">http://www.litrin.net/?p=1164</guid>
		<description><![CDATA[这次接上篇。 很多企业对互联网的访问进行了限制，如何突破防火墙的限制成了一个问题。本文就是利用了SSH tunnel搭建了socket5代理。 首先，申请一个外网的ssh帐户，个人建议使用http://www.unix-center.net/提供的免费资源，该网站还提供多种平台主机可供测试之用，非常不错！当然，如果可以使用密钥方式登录那就完美了。 申请好账户之后，依然在本地安装ssh的客户端，windows推荐putty。 安装好后执行putty，在hostname里面输入主机名，或者用户名@主机名。我选了FreeBSD的那台，有兴趣的话还有ubuntu，Sun，甚至龙芯一系列主机可供挑选 选择ssh-&#62;tunnels，在source栏里添加你要提供的端口号，一般随便填一个未使用的端口就可，我用了8080端口。选择Dynamic，点击add。这里需要说明的是，如果你的主机允许别人使用的话，请勾选最上面的Local ports accept connection from other hosts。 点击Open确认连接，在接下来的窗口中输入用户名和密码。最小化窗口，不要关闭。 打开命令行，输入命令netstat -an，如果出现了你刚才输入的那个端口号的侦听，说明搭建成功！socket服务已经完成。 浏览器设置，IE:internet选项，连接，局域网设置，勾选“为LAN使用代理服务器”，高级，套接字选择127.0.0.1并填写端口号。完成设置。 对应的命令行： plink : plink -C -N -f -D 端口号 用户名@主机名 ssh: ssh  -C -N -f -D 端口号 用户名@主机名 PS: 话两头说，如果你负责一个企业局域网的话，稍大点的企业如果要限网，SSH端口是绝对要加以限制使用的。伟大的防火墙亦是如此。]]></description>
			<content:encoded><![CDATA[<p>这次接<a href="http://www.litrin.net/2010/02/03/%e7%94%a8ssh-tunnel%e6%89%93%e9%80%a0%e5%ae%89%e5%85%a8%e9%82%ae%e4%bb%b6%e7%b3%bb%e7%bb%9f/" target="_blank">上篇</a>。</p>
<p>很多企业对互联网的访问进行了限制，如何突破防火墙的限制成了一个问题。本文就是利用了SSH tunnel搭建了socket5代理。</p>
<p>首先，申请一个外网的ssh帐户，个人建议使用<a rel="nofollow" target="_blank" href="http://www.unix-center.net/">http://www.unix-center.net/</a>提供的免费资源，该网站还提供多种平台主机可供测试之用，非常不错！当然，如果可以使用密钥方式登录那就完美了。</p>
<p><span id="more-1164"></span></p>
<p>申请好账户之后，依然在本地安装ssh的客户端，windows推荐<a rel="nofollow" target="_blank" href="http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html" target="_blank">putty</a>。</p>
<p>安装好后执行putty，在hostname里面输入主机名，或者用户名@主机名。我选了FreeBSD的那台，有兴趣的话还有ubuntu，Sun，甚至龙芯一系列主机可供挑选</p>
<div id="attachment_1166" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.litrin.net/wp-content/uploads/2010/02/ssh_proxy_putty_main.png"><img class="size-medium wp-image-1166" title="ssh_proxy_putty_main" src="http://www.litrin.net/wp-content/uploads/2010/02/ssh_proxy_putty_main-300x288.png" alt="Putty 主界面" width="300" height="288" /></a><p class="wp-caption-text">Putty 主界面</p></div>
<p>选择ssh-&gt;tunnels，在source栏里添加你要提供的端口号，一般随便填一个未使用的端口就可，我用了8080端口。选择Dynamic，点击add。这里需要说明的是，如果你的主机允许别人使用的话，请勾选最上面的Local ports accept connection from other hosts。</p>
<div id="attachment_1167" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.litrin.net/wp-content/uploads/2010/02/ssh_proxy_putty_tunnel_setting.png"><img class="size-medium wp-image-1167" title="ssh_proxy_putty_tunnel_setting" src="http://www.litrin.net/wp-content/uploads/2010/02/ssh_proxy_putty_tunnel_setting-300x288.png" alt="Putty ssh tunnel界面" width="300" height="288" /></a><p class="wp-caption-text">Putty ssh tunnel界面</p></div>
<p>点击Open确认连接，在接下来的窗口中输入用户名和密码。最小化窗口，不要关闭。</p>
<p>打开命令行，输入命令netstat -an，如果出现了你刚才输入的那个端口号的侦听，说明搭建成功！socket服务已经完成。</p>
<div id="attachment_1165" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.litrin.net/wp-content/uploads/2010/02/ssh_proxy_netstat.png"><img class="size-medium wp-image-1165" title="ssh_proxy_netstat" src="http://www.litrin.net/wp-content/uploads/2010/02/ssh_proxy_netstat-300x195.png" alt="netstat -an " width="300" height="195" /></a><p class="wp-caption-text">netstat -an </p></div>
<p>浏览器设置，IE:internet选项，连接，局域网设置，勾选“为LAN使用代理服务器”，高级，套接字选择127.0.0.1并填写端口号。完成设置。</p>
<div id="attachment_1168" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.litrin.net/wp-content/uploads/2010/02/ssh_proxy_IE.png"><img class="size-medium wp-image-1168" title="ssh_proxy_IE" src="http://www.litrin.net/wp-content/uploads/2010/02/ssh_proxy_IE-300x300.png" alt="IE 设置" width="300" height="300" /></a><p class="wp-caption-text">IE 设置</p></div>
<p>对应的命令行：</p>
<ol>
<li>plink : plink -C -N -f -D 端口号 用户名@主机名</li>
<li>ssh: ssh  -C -N -f -D 端口号 用户名@主机名</li>
</ol>
<p>PS:<br />
话两头说，如果你负责一个企业局域网的话，稍大点的企业如果要限网，SSH端口是绝对要加以限制使用的。伟大的防火墙亦是如此。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2010/02/09/%e7%94%a8ssh-tunnel%e7%a9%bf%e8%b6%8a%e9%98%b2%e7%81%ab%e5%a2%99/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>用ssh tunnel打造安全邮件系统</title>
		<link>http://www.litrin.net/2010/02/03/%e7%94%a8ssh-tunnel%e6%89%93%e9%80%a0%e5%ae%89%e5%85%a8%e9%82%ae%e4%bb%b6%e7%b3%bb%e7%bb%9f/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e7%2594%25a8ssh-tunnel%25e6%2589%2593%25e9%2580%25a0%25e5%25ae%2589%25e5%2585%25a8%25e9%2582%25ae%25e4%25bb%25b6%25e7%25b3%25bb%25e7%25bb%259f</link>
		<comments>http://www.litrin.net/2010/02/03/%e7%94%a8ssh-tunnel%e6%89%93%e9%80%a0%e5%ae%89%e5%85%a8%e9%82%ae%e4%bb%b6%e7%b3%bb%e7%bb%9f/#comments</comments>
		<pubDate>Wed, 03 Feb 2010 14:33:01 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Unix]]></category>
		<category><![CDATA[网络和安全]]></category>
		<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[桌面应用]]></category>

		<guid isPermaLink="false">http://www.litrin.net/?p=1156</guid>
		<description><![CDATA[近期，甚至于连Google这样的企业也感觉到了邮件系统的安全问题。这里采用了相对实现成本较低的方式，通过ssh的tunnel达到邮件在传输的过程中不会受到中间人攻击造成数据泄露。 故名思义，tunnel就是在邮件服务器和企业防火墙之后设置一条逻辑上的隧道。这条隧道一方面为了数据安全，另一方面，由于ssh的压缩功能也能在一定程度上减少邮件这类纯文本传输的网络需求。 先决条件： Unix like的邮件系统，并安装了ssh-server，本例中假定邮件服务器ip为1.2.3.4 企业路由器和内网：路由最好有vpn和防火墙功能。 内网的 一台主机，配置不必太高（我用了虚拟机，64M内存已经足够近百人使用），安装有ssh-client，如果是win主机，推荐使用putty的安装版本。经过测试，个人觉得FreeBSD下的性能较好。考虑到安全，这台主机尽量不要安装远程控制台并尽可能上锁。本例假定ip 192.168.1.1。 注意整个系统的安全策略，账户策略等，相比中间人攻击这样的“高级”黑客行为，破解密码，利用漏洞永远是成本最低的方法。 第一步：设置公钥方式登录： 内网主机上运行mkdir -p ~/.ssh;cd ~/.ssh;ssh-keygen –d，如果变态一点可以使用ssh-keygen -b 4096 -d增加强度，之后 不要输入任何信息，一律回车带过，很多人不能实现ssh的无验证通过，大多是因为这里没有弄好。这样~/.ssh目录下将会出现id_dsa 和id_dsa.pub两个文件。 将内网主机的id_dsa.pub文件拷贝邮件服务器，并在邮件服务器上执行cat id_dsa.pub &#62;&#62; ~/.ssh/authorized_keys 。尝试在内网主机上执行 ssh A主机的IP ，成功地话应该没有提示密码（即直接得到A主机的控制台）。 如果经常来小站做客的朋友会觉得这段很熟，没错它贴自这里，如果你用了windows作为内网主机，请参考这里的内容。 第二步：配置管道： 写个脚本 vi /usr/sbin/ssh_tunnel #!/bin/sh localIP='192.168.1.1' removteIP='1.2.3.4' ports='25 80 110' #3个端口，smtp http pop3 for port in $ports do /usr/bin/ssh -C -N -f -L $localIP:$port:$removteIP:$port root@$removteIP [...]]]></description>
			<content:encoded><![CDATA[<p>近期，甚至于连Google这样的企业也感觉到了邮件系统的安全问题。这里采用了相对实现成本较低的方式，通过ssh的tunnel达到邮件在传输的过程中不会受到中间人攻击造成数据泄露。</p>
<p>故名思义，tunnel就是在邮件服务器和企业防火墙之后设置一条逻辑上的隧道。这条隧道一方面为了数据安全，另一方面，由于ssh的压缩功能也能在一定程度上减少邮件这类纯文本传输的网络需求。</p>
<p>先决条件：</p>
<ol>
<li>Unix like的邮件系统，并安装了ssh-server，本例中假定邮件服务器ip为1.2.3.4</li>
<li>企业路由器和内网：路由最好有vpn和防火墙功能。</li>
<li>内网的 一台主机，配置不必太高（我用了虚拟机，64M内存已经足够近百人使用），安装有ssh-client，如果是win主机，推荐使用putty的安装版本。经过测试，个人觉得FreeBSD下的性能较好。考虑到安全，这台主机尽量不要安装远程控制台并尽可能上锁。本例假定ip 192.168.1.1。</li>
<li>注意整个系统的安全策略，账户策略等，相比中间人攻击这样的“高级”黑客行为，破解密码，利用漏洞永远是成本最低的方法。</li>
</ol>
<p><span id="more-1156"></span></p>
<div id="attachment_1161" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.litrin.net/wp-content/uploads/2010/02/ssh_tunnel.gif"><img class="size-medium wp-image-1161" title="ssh_tunnel" src="http://www.litrin.net/wp-content/uploads/2010/02/ssh_tunnel-300x115.gif" alt="SSH隧道实现安全mail" width="300" height="115" /></a><p class="wp-caption-text">SSH隧道实现安全Mail系统示意</p></div>
<p>第一步：设置公钥方式登录：</p>
<p>内网主机上运行mkdir -p ~/.ssh;cd ~/.ssh;<em>ssh-keygen –d，</em>如果变态一点可以使用ssh-keygen -b 4096 -d增加强度，之后<em> </em>不要输入任何信息，<strong>一律回车带过</strong>，很多人不能实现ssh的无验证通过，大多是因为这里没有弄好。这样~/.ssh目录下将会出现id_dsa 和id_dsa.pub两个文件。</p>
<p>将内网主机的id_dsa.pub文件拷贝邮件服务器，<strong>并在邮件服务器</strong><strong>上执行</strong><em>cat id_dsa.pub &gt;&gt; ~/.ssh/authorized_keys 。</em><strong>尝试在内网主机</strong><strong>上执行</strong> <em>ssh A</em><em>主机的IP </em>，成功地话应该没有提示密码（即直接得到A主机的控制台）。</p>
<p>如果经常来小站做客的朋友会觉得这段很熟，没错它贴自<a href="http://www.litrin.net/2007/09/29/%E6%90%AD%E5%BB%BA%E9%80%9A%E8%BF%87ssh%E5%8A%A0%E5%AF%86%E9%AA%8C%E8%AF%81%E7%9A%84rsync/" target="_blank">这里</a>，如果你用了windows作为内网主机，请参考<a href="http://www.litrin.net/2006/04/10/%E7%94%A8publickey%E9%AA%8C%E8%AF%81%E7%99%BB%E5%BD%95ssh%E6%9C%8D%E5%8A%A1%E5%99%A8/" target="_blank">这里的内容</a>。</p>
<p>第二步：配置管道：</p>
<div id="_mcePaste">写个脚本 vi /usr/sbin/ssh_tunnel</div>
<pre name=code class=bash>
#!/bin/sh
localIP='192.168.1.1'
removteIP='1.2.3.4'
ports='25 80 110' #3个端口，smtp http pop3
for port in $ports
do
    /usr/bin/ssh -C -N -f -L $localIP:$port:$removteIP:$port root@$removteIP  &#038;
done
chmod 755 /usr/sbin/ssh_tunnel
</pre>
<p>修改rc.local文件，在其中加入 /usr/sbin/ssh_tunnel，当然要放在exit那条之前。</p>
<p>windows不是很熟，写个笨蛋批处理吧ssh_tunnel.cmd</p>
<pre name=code class=bash>
start /min cmd /c 'C:\Program Files\PuTTY\plink.exe' -C -N -f -L 192.168.1.1:25:1.2.3.4:25 root@1.2.3.4
start /min cmd /c 'C:\Program Files\PuTTY\plink.exe' -C -N -f -L 192.168.1.1:80:1.2.3.4:80 root@1.2.3.4
start /min cmd /c 'C:\Program Files\PuTTY\plink.exe' -C -N -f -L 192.168.1.1:110:1.2.3.4:110 root@1.2.3.4
</pre>
<p>其实putty的那个plink效果完全等同于ssh，当然，win下面主要是用里面的窗口程序，大多数人不怎么用而已。win下比较烦的是每次重起后都要手工加载key，执行这个批处理。希望对win熟的朋友可以提供自动解决方法。</p>
<p>第三步：设置邮件服务器防火墙</p>
<p>通过邮件服务的防火墙关闭除25和22之外的所有端口。这样做是最安全的，但这样的后果是在企业局域网之外只能发不能收邮件。VPN是比较好的折中方案。当然，如果你的邮件系统只需要内部收发邮件（那还要什么邮件系统？），你尽可以连25号也封上。</p>
<p>第四步：设置本地邮件客户端</p>
<p>将局域网内所有邮件客户端的smtp和pop都设置为192.168.1.1即可。我这里由于用了webmail，webmail同样也通过192.168.1.1访问<br />
如果企业有自己的DNS服务器，甚至整个公司都在域管理模式之下。不妨通过本地的DNS服务器用本地IP覆盖掉外网真实IP。这样即便没有vpn，只要不封邮件服务器的110端口，在邮件客户端中设置域名，对用户来说在任何地方都是透明的。</p>
<p>总结：</p>
<ul>
<li>这种模式，从邮件服务器到企业局域网内的传输是加密透明的，外部很难窃取，如果定期为两边的ssh更换强化的秘钥，效果几乎可以达到变态的要求。据说4096位的秘钥的破解成本已经到了天文数字。</li>
<li>这种方式相对成本较低，不需要太多的投入，特别是在多个分支机构之间成本优势更加突出。本想通过smtp的tls和pop的SSL进行加密，可outlook下对没有根秘证书签名的秘钥会弹出讨厌的警告框，反而增加了用户的不安。申请根证书的签名价格也不菲。</li>
<li>由于企业的邮件系统最多的邮件往往来自于内部，这种方式可以减少差不多一半以上的互联网带宽。把带宽留给更重要的应用。</li>
<li>同理，利用此种方式可以实现其他多种安全方案，达到双宿主机或者多机虚拟的效果，进而可以为企业节约宝贵的外网IP资源。</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2010/02/03/%e7%94%a8ssh-tunnel%e6%89%93%e9%80%a0%e5%ae%89%e5%85%a8%e9%82%ae%e4%bb%b6%e7%b3%bb%e7%bb%9f/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Ubuntu下安装oracle11G up2</title>
		<link>http://www.litrin.net/2009/11/30/ubuntu%e4%b8%8b%e5%ae%89%e8%a3%85oracle11g-up2/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=ubuntu%25e4%25b8%258b%25e5%25ae%2589%25e8%25a3%2585oracle11g-up2</link>
		<comments>http://www.litrin.net/2009/11/30/ubuntu%e4%b8%8b%e5%ae%89%e8%a3%85oracle11g-up2/#comments</comments>
		<pubDate>Mon, 30 Nov 2009 07:39:38 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[数据库应用]]></category>
		<category><![CDATA[硬件相关]]></category>
		<category><![CDATA[网络和安全]]></category>
		<category><![CDATA[oracle]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.litrin.net/?p=1118</guid>
		<description><![CDATA[oracle的11G总算到了up2，这次的升级个人感觉最大的改善就是将clustter包成了标准包的一部分，看起来今后oracle数据库要越发的使用更多的机器了。目前官方只提供了Solaris和Linux的安装包，Win以及其他操作系统看起来还是要等。 oracle官方建议的linux仅限于Redhat, Suse, Asianux以及oracle自家的linux。但作为测试的一部分，我选择了ubuntu的新版本910 AMD64 server作为平台。不过理论上使用ubuntu Desktop或者Xubuntu更省力一点。系统内存为8G，根据建议（如下），设置了8G的swap。 之前还有一篇solaris下10up2的安装可以参考 Between 0 MB and 256 MB 3 times the size of RAM Between 256 MB and 512 MB 2 times the size of RAM Between 512 MB and 2 GB 1.5 times the size of RAM Between 2 GB and 16 GB Equal to the size of [...]]]></description>
			<content:encoded><![CDATA[<p>oracle的11G总算到了up2，这次的升级个人感觉最大的改善就是将clustter包成了标准包的一部分，看起来今后oracle数据库要越发的使用更多的机器了。目前官方只提供了<a rel="nofollow" target="_blank" href="http://www.oracle.com/technology/software/products/database/index.html">Solaris和Linux的安装包</a>，Win以及其他操作系统看起来还是要等。</p>
<p>oracle官方建议的linux仅限于Redhat, Suse, Asianux以及oracle自家的linux。但作为测试的一部分，我选择了ubuntu的新版本910 AMD64 server作为平台。不过理论上使用ubuntu Desktop或者Xubuntu更省力一点。系统内存为8G，根据建议（如下），设置了8G的swap。</p>
<p><a href="http://www.litrin.net/2007/11/15/solaris%e4%b8%8b%e5%ae%89%e8%a3%85oracle-10-up-2/" target="_blank">之前还有一篇solaris下10up2的安装可以参考</a></p>
<table title="RAM and Swap Space Relationship" dir="ltr" border="1" cellspacing="0" cellpadding="3" width="100%" frame="hsides" rules="groups" summary="RAM and swap space relationship">
<tbody>
<tr align="left" valign="top">
<td id="r2c1-t6" align="left">Between 0 MB and 256 MB</td>
<td align="left">3 times the size of RAM</td>
</tr>
<tr align="left" valign="top">
<td id="r3c1-t6" align="left">Between 256 MB and 512 MB</td>
<td align="left">2 times the size of RAM</td>
</tr>
<tr align="left" valign="top">
<td id="r4c1-t6" align="left">Between 512 MB and 2 GB</td>
<td align="left">1.5 times the size of RAM</td>
</tr>
<tr align="left" valign="top">
<td id="r5c1-t6" align="left">Between 2 GB and 16 GB</td>
<td align="left">Equal to the size of RAM</td>
</tr>
<tr align="left" valign="top">
<td id="r6c1-t6" align="left">More than 16 GB</td>
<td align="left">16 GB</td>
</tr>
</tbody>
</table>
<p><span id="more-1118"></span></p>
<p>安装完毕后还是个人习惯性的那一套：<br />
#sudo apt-get update<br />
#sudo apt-get upgrade</p>
<p>升级结束后安装必要的库：<br />
#sudo apt-get install gnome-core unzip build-essential libaio-dev(ms libaio 就可以)</p>
<p>设置环境变量：<br />
修改/etc/bash.bashrc，在末尾添加如下内容<br />
<code>ORACLE_HOME=/opt/oracle/product/11.2.0/Db_1<br />
export ORACLE_HOME<br />
ORACLE_BASE=/opt/oracle<br />
export ORACLE_BASE<br />
NLS_LANG=american_america.zhs16gbk<br />
export NLS_LANG<br />
PATH=$PATH:$ORACLE_HOME/bin<br />
ORACLE_SID=orcl<br />
export ORACLE_SID<br />
</code><br />
修改内核参数：（官方文档没有提及，保险起见，还是添加了）<br />
<code><br />
fs.file-max = 6815744<br />
fs.aio-max-nr = 1048576<br />
kernel.shmall = 2097152<br />
kernel.shmmax = 2147483648<br />
kernel.shmmni = 4096<br />
kernel.sem = 250 32000 100 128<br />
net.ipv4.ip_local_port_range = 9000 65500<br />
net.core.rmem_default = 262144<br />
net.core.rmem_max = 4194304<br />
net.core.wmem_default = 262144<br />
net.core.wmem_max = 1048576<br />
</code></p>
<p><code>重起机器。</code></p>
<p><code></p>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2009/11/30/ubuntu%e4%b8%8b%e5%ae%89%e8%a3%85oracle11g-up2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>圈圈</title>
		<link>http://www.litrin.net/2009/11/20/%e5%9c%88%e5%9c%88/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e5%259c%2588%25e5%259c%2588</link>
		<comments>http://www.litrin.net/2009/11/20/%e5%9c%88%e5%9c%88/#comments</comments>
		<pubDate>Fri, 20 Nov 2009 08:30:32 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[开源7788]]></category>
		<category><![CDATA[网络和安全]]></category>
		<category><![CDATA[业界话题]]></category>
		<category><![CDATA[桌面应用]]></category>

		<guid isPermaLink="false">http://www.litrin.net/?p=1105</guid>
		<description><![CDATA[就在今天Google宣布了他蓄谋已久的，以一个三色圈圈为Logo的单机操作系统——Chrome OS。由于正如Google的手机操作系统一样，这次又是一个Linux内核的操作系统。 Google的理念是：既然浏览器逐渐成为了一台PC最常用的软件，那为什么不把它升级为PC中唯一的软件？理念看似很超前。 不禁想起了N多年前IBM的预言：最终全世界只需要4台主机。这个想法至今看起来仍然很荒谬。但可以看得出，google以致这一阶段很是热门的“云计算”概念其实也是在实现IBM的理想。 说道这个理念，就不妨谈谈微软，这个利用一句：“每个书桌上都应该有一台PC。”瓦解了IBM的痴心妄想。IBM当初是专注于硬件的，最赚钱的是卖超级计算机而不是白菜价的PC，所以他们后来才会把PC业务卖掉；微软是做软件的，一台PC收一份钱，越多越好；google是做服务的，集中起来才能将效益最大。现在软件都像当初硬件一样“白菜化”了，今后如何。重新定义，再次赚钱。 当初IBM理念的失败之处在于错误的估计了网络的因素，将终端单纯的理解为了瘦客户机，之后成功转型为服务型公司，避免了老冤家SUN那样的命运。微软的成功之处在于利用了从90~10这20年左右的时间差猛赚了一笔，成了行业的领跑者。google的领先在于发现了如何通过免费的服务来赚钱；通过免费的午餐抓住所有人的命脉，并不断的引领下一个时代的网络发展。 我个人认为将来的互联网终端绝对不是PC的天下——从3G手机到物联网无一例外的传达了一个信息：未来通过什么东西上网是次要的，通过什么方式接入互联网是次要的，关键是用网络来干什么。随着传统PC逐步的被边缘化之后，将会有一个新的硬件平台取代当前PC的上网功能，现在还不知道那会是什么，但绝对不会是“上网本”这类的过渡产品。 三色的圈圈大概涵义如此吧。看云识天气。 就说这么多，有空再侃。]]></description>
			<content:encoded><![CDATA[<p>就在今天Google宣布了他蓄谋已久的，以一个三色圈圈为Logo的单机操作系统——<a rel="nofollow" target="_blank" href="http://google.org.cn/posts/live-blog-google-chrome-os-press-event.html" target="_blank">Chrome OS</a>。由于正如Google的手机操作系统一样，这次又是一个Linux内核的操作系统。</p>
<p>Google的理念是：既然浏览器逐渐成为了一台PC最常用的软件，那为什么不把它升级为PC中唯一的软件？理念看似很超前。</p>
<p>不禁想起了N多年前IBM的预言：最终全世界只需要4台主机。这个想法至今看起来仍然很荒谬。但可以看得出，google以致这一阶段很是热门的“云计算”概念其实也是在实现IBM的理想。</p>
<p>说道这个理念，就不妨谈谈微软，这个利用一句：“每个书桌上都应该有一台PC。”瓦解了IBM的痴心妄想。IBM当初是专注于硬件的，最赚钱的是卖超级计算机而不是白菜价的PC，所以他们后来才会把PC业务卖掉；微软是做软件的，一台PC收一份钱，越多越好；google是做服务的，集中起来才能将效益最大。现在软件都像当初硬件一样“白菜化”了，今后如何。重新定义，再次赚钱。</p>
<p><span id="more-1105"></span></p>
<p>当初IBM理念的失败之处在于错误的估计了网络的因素，将终端单纯的理解为了瘦客户机，之后成功转型为服务型公司，避免了老冤家SUN那样的命运。微软的成功之处在于利用了从90~10这20年左右的时间差猛赚了一笔，成了行业的领跑者。google的领先在于发现了如何通过免费的服务来赚钱；通过免费的午餐抓住所有人的命脉，并不断的引领下一个时代的网络发展。</p>
<p>我个人认为将来的互联网终端绝对不是PC的天下——从3G手机到物联网无一例外的传达了一个信息：未来通过什么东西上网是次要的，通过什么方式接入互联网是次要的，关键是用网络来干什么。随着传统PC逐步的被边缘化之后，将会有一个新的硬件平台取代当前PC的上网功能，现在还不知道那会是什么，但绝对不会是“上网本”这类的过渡产品。</p>
<p>三色的圈圈大概涵义如此吧。看云识天气。</p>
<p>就说这么多，有空再侃。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2009/11/20/%e5%9c%88%e5%9c%88/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>我眼中的通讯未来</title>
		<link>http://www.litrin.net/2009/10/30/%e6%88%91%e7%9c%bc%e4%b8%ad%e7%9a%84%e9%80%9a%e8%ae%af%e6%9c%aa%e6%9d%a5/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e6%2588%2591%25e7%259c%25bc%25e4%25b8%25ad%25e7%259a%2584%25e9%2580%259a%25e8%25ae%25af%25e6%259c%25aa%25e6%259d%25a5</link>
		<comments>http://www.litrin.net/2009/10/30/%e6%88%91%e7%9c%bc%e4%b8%ad%e7%9a%84%e9%80%9a%e8%ae%af%e6%9c%aa%e6%9d%a5/#comments</comments>
		<pubDate>Fri, 30 Oct 2009 04:41:38 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[网络和安全]]></category>
		<category><![CDATA[业界话题]]></category>

		<guid isPermaLink="false">http://www.litrin.net/?p=1096</guid>
		<description><![CDATA[公司呼叫中心的线路维护始终是大问题。由于线路老化，很多坐席的电话要么断线，要么信号不好，没有办法，很不标准的破拆了网络端口供电话线路使用——好在网络的端口好解决的多。  一直在想呼叫中心线路这块的种种不便，始终保持着“两套线路都不能断”实在是很头疼。那最为简单的方式就是通过VOIP技术来实现语音传输，这才是终极方案。不但从技术上、维护成本上，还是传输质量上都会提升到很大的一个高度。同时这样在多个分区的呼叫中心之间通过VOIP还可以减少一定的长途费用——尽管现在看起来，取消长途费用是大趋势。  抛开一切干扰因素，电话恐怕被取代是迟早的事情。作为提升质量之一的语音通话质量，2G网络到3G网络上并没有太多的变化，反倒是IP通讯速度上有了质的飞跃。何况2G本身在终端和基站之间用的就是数字通讯。现在的移动基站要维护语音和IP两套线路。 不妨看看中国移动出品的“飞信”。一个IM工具MS跟移动的业务没有什么太大的关系。不妨这么来看：现阶段考虑到可能会影响自己的腰包，飞信没有电脑对电脑语音/视频通信功能。加上此功能呢？在手机版上增加此功能呢？就是一个完整功能的skype（这里的完整是只可以拨打“真正的电话”）个人认为终究会有那么一天会有一家电信公司推出这么一套设备：语音功能通过内嵌一套IM工具实现，基站的功能成了一个AP而已。维护IP通讯的成本远比语音低得多。  从这里看出了飞信软件对于中国移动的战略地位。这些2G时代财大气粗的公司到了3G时代已经逐步沦为的渠道商。赚那么一点通讯费用，大头跑到内容提供商那边去了。不考虑渠道合作的话减低成本成了唯一途径。飞信就是这么一个东西。  这也无外乎google作为一个内容提供商会花功夫去主导一个手机操作系统的研发。无利不起早啊。]]></description>
			<content:encoded><![CDATA[<p>公司呼叫中心的线路维护始终是大问题。由于线路老化，很多坐席的电话要么断线，要么信号不好，没有办法，很不标准的破拆了网络端口供电话线路使用——好在网络的端口好解决的多。</p>
<p> 一直在想呼叫中心线路这块的种种不便，始终保持着“两套线路都不能断”实在是很头疼。那最为简单的方式就是通过VOIP技术来实现语音传输，这才是终极方案。不但从技术上、维护成本上，还是传输质量上都会提升到很大的一个高度。同时这样在多个分区的呼叫中心之间通过VOIP还可以减少一定的长途费用——尽管现在看起来，取消长途费用是大趋势。</p>
<p><span id="more-1096"></span> 抛开一切干扰因素，电话恐怕被取代是迟早的事情。作为提升质量之一的语音通话质量，2G网络到3G网络上并没有太多的变化，反倒是IP通讯速度上有了质的飞跃。何况2G本身在终端和基站之间用的就是数字通讯。现在的移动基站要维护语音和IP两套线路。</p>
<p>不妨看看中国移动出品的“飞信”。一个IM工具MS跟移动的业务没有什么太大的关系。不妨这么来看：现阶段考虑到可能会影响自己的腰包，飞信没有电脑对电脑语音/视频通信功能。加上此功能呢？在手机版上增加此功能呢？就是一个完整功能的skype（这里的完整是只可以拨打“真正的电话”）个人认为终究会有那么一天会有一家电信公司推出这么一套设备：语音功能通过内嵌一套IM工具实现，基站的功能成了一个AP而已。维护IP通讯的成本远比语音低得多。</p>
<p> 从这里看出了飞信软件对于中国移动的战略地位。这些2G时代财大气粗的公司到了3G时代已经逐步沦为的渠道商。赚那么一点通讯费用，大头跑到内容提供商那边去了。不考虑渠道合作的话减低成本成了唯一途径。飞信就是这么一个东西。</p>
<p> 这也无外乎google作为一个内容提供商会花功夫去主导一个手机操作系统的研发。无利不起早啊。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2009/10/30/%e6%88%91%e7%9c%bc%e4%b8%ad%e7%9a%84%e9%80%9a%e8%ae%af%e6%9c%aa%e6%9d%a5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>说说“专业”</title>
		<link>http://www.litrin.net/2009/09/11/%e8%af%b4%e8%af%b4%e2%80%9c%e4%b8%93%e4%b8%9a%e2%80%9d/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e8%25af%25b4%25e8%25af%25b4%25e2%2580%259c%25e4%25b8%2593%25e4%25b8%259a%25e2%2580%259d</link>
		<comments>http://www.litrin.net/2009/09/11/%e8%af%b4%e8%af%b4%e2%80%9c%e4%b8%93%e4%b8%9a%e2%80%9d/#comments</comments>
		<pubDate>Fri, 11 Sep 2009 10:12:24 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[www]]></category>
		<category><![CDATA[站长的blog]]></category>
		<category><![CDATA[网络和安全]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[业界话题]]></category>

		<guid isPermaLink="false">http://www.litrin.net/?p=1081</guid>
		<description><![CDATA[暂且不提中文里说你不专业是什么语气，至少来说，在英语语系里说一个人或者一家公司是“不专业的”，不管什么语境，总归是句很重的话。 公司的一家子公司，由于人少财弱，没有专职的网站开发人员。于是找了一个现在比较知名的免费网店全站程序。用的久了，不够用了，联系了那家公司进行开发。这本身也是符合免费软件生存法则的，没有什么不对。对方很专业的报价350块/小时。很是吓人的价钱。周瑜打黄盖，一个愿打一个愿挨。认了，付钱，问题才刚刚开始。 作为服务器的管理员，首先他们问我要root帐号，要知道，这台主机的网站差不多有几十个，谁会给？然后他们很发了顿牢骚。不得已，开了一个用户给他们，竟然蒙混过去，他们竟然以为得到了root，汗。 然后又是说ftp连不上，我很客气的说ftp没开，又是牢骚：“人家的linux都开ftp的，为什么？”我建议他们用sftp上传就OK，“不会用。”。又晕！嫌烦，现装了proftpd应付过去，又被人说密码太长太难记，彻底无语！ 大约一个礼拜左右（350块/小时，赚了不少吧？）我得知他们已经完成了网站的定制开发。OK，停ftp，删帐户。程序照旧是加密的php，一个根目录下的php.php引起了我的注意，好家伙！&#60;? phpinfo(); ?&#62; 嫌我的站点太安全了不成？仔细查找了一下发现根目录下还有一个data.zip文件，全是打包的程序文件，当然包括数据库配置的用户名和密码。一个“白版页面”只有一个文本栏和一个submit按钮，顺手输入了一句sql，很幸运的发现了这竟然是数据库的接口——甚至可以直接drop table。文件名，就叫做sql.php，当然还是在根目录下。 如果说他们是在测试机下，新手来做，我们可以理解，可要知道生产环境下的服务器，调试程序都会要了命。 如他们所说“以专业的功能、领先的技术以及快速的价值体现，获得了45万用户的肯定。”我只能说，最近黑客们的效率确实很低。如此厂商如何评价？]]></description>
			<content:encoded><![CDATA[<p>暂且不提中文里说你不专业是什么语气，至少来说，在英语语系里说一个人或者一家公司是“不专业的”，不管什么语境，总归是句很重的话。</p>
<p>公司的一家子公司，由于人少财弱，没有专职的网站开发人员。于是找了一个现在比较知名的免费网店全站程序。用的久了，不够用了，联系了那家公司进行开发。这本身也是符合免费软件生存法则的，没有什么不对。对方很专业的报价350块/小时。很是吓人的价钱。周瑜打黄盖，一个愿打一个愿挨。认了，付钱，问题才刚刚开始。</p>
<p><span id="more-1081"></span></p>
<p>作为服务器的管理员，首先他们问我要root帐号，要知道，这台主机的网站差不多有几十个，谁会给？然后他们很发了顿牢骚。不得已，开了一个用户给他们，竟然蒙混过去，他们竟然以为得到了root，汗。</p>
<p>然后又是说ftp连不上，我很客气的说ftp没开，又是牢骚：“人家的linux都开ftp的，为什么？”我建议他们用sftp上传就OK，“不会用。”。又晕！嫌烦，现装了proftpd应付过去，又被人说密码太长太难记，彻底无语！</p>
<p>大约一个礼拜左右（350块/小时，赚了不少吧？）我得知他们已经完成了网站的定制开发。OK，停ftp，删帐户。程序照旧是加密的php，一个根目录下的php.php引起了我的注意，好家伙！&lt;? phpinfo(); ?&gt; 嫌我的站点太安全了不成？仔细查找了一下发现根目录下还有一个data.zip文件，全是打包的程序文件，当然包括数据库配置的用户名和密码。一个“白版页面”只有一个文本栏和一个submit按钮，顺手输入了一句sql，很幸运的发现了这竟然是数据库的接口——甚至可以直接drop table。文件名，就叫做sql.php，当然还是在根目录下。</p>
<p>如果说他们是在测试机下，新手来做，我们可以理解，可要知道生产环境下的服务器，调试程序都会要了命。</p>
<p>如他们所说“以专业的功能、领先的技术以及快速的价值体现，获得了45万用户的肯定。”我只能说，最近黑客们的效率确实很低。如此厂商如何评价？</p>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2009/09/11/%e8%af%b4%e8%af%b4%e2%80%9c%e4%b8%93%e4%b8%9a%e2%80%9d/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>SSH的x-forwarding</title>
		<link>http://www.litrin.net/2009/06/01/ssh%e7%9a%84x%ef%bc%8dforwarding/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=ssh%25e7%259a%2584x%25ef%25bc%258dforwarding</link>
		<comments>http://www.litrin.net/2009/06/01/ssh%e7%9a%84x%ef%bc%8dforwarding/#comments</comments>
		<pubDate>Mon, 01 Jun 2009 06:47:23 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Unix]]></category>
		<category><![CDATA[硬件相关]]></category>
		<category><![CDATA[网络和安全]]></category>
		<category><![CDATA[服务器]]></category>

		<guid isPermaLink="false">http://www.litrin.net/?p=1013</guid>
		<description><![CDATA[记得N年前写过一篇东西，讲的是SSH的秘钥验证登录。这次就跳出命令行，讲讲X桌面的X-forwarding。 其实*nix下的桌面也是一个网络服务，可以通过SSH来远程执行。如果您使用的是Linux的桌面版，可以通过ssh的-X 或 -Y参数： litrin@litrin-laptop:~$ ssh -Y root@192.168.1.7 Last login: Mon Jun  1 14:04:47 2009 from 192.168.103.1 Sun Microsystems Inc.   SunOS 5.10      Generic January 2005 ================================================================================ 192.168.1.7       Oracle Server ================================================================================ You have new mail. # env DISPLAY=localhost:10.0 HOME=/ LANG=zh_CN.UTF-8 LOGNAME=root MAIL=/var/mail//root PATH=/usr/sbin:/usr/bin SHELL=/sbin/sh SSH_CLIENT=192.168.103.1 60802 22 SSH_CONNECTION=192.168.103.1 60802 192.168.1.7 22 SSH_TTY=/dev/pts/1 TERM=xterm TZ=PRC USER=root 如果出现了DISPLAY变量则说明配置OK，随便可以执行一个桌面程序了。 [...]]]></description>
			<content:encoded><![CDATA[<p>记得N年前写过<a href="http://www.litrin.net/2006/04/10/%e7%94%a8publickey%e9%aa%8c%e8%af%81%e7%99%bb%e5%bd%95ssh%e6%9c%8d%e5%8a%a1%e5%99%a8/" target="_blank">一篇东西</a>，讲的是SSH的秘钥验证登录。这次就跳出命令行，讲讲X桌面的X-forwarding。</p>
<p>其实*nix下的桌面也是一个网络服务，可以通过SSH来远程执行。如果您使用的是Linux的桌面版，可以通过ssh的-X 或 -Y参数：</p>
<p><span id="more-1013"></span>litrin@litrin-laptop:~$ ssh -Y root@192.168.1.7<br />
Last login: Mon Jun  1 14:04:47 2009 from 192.168.103.1<br />
Sun Microsystems Inc.   SunOS 5.10      Generic January 2005<br />
================================================================================</p>
<p>192.168.1.7       Oracle Server</p>
<p>================================================================================<br />
You have new mail.<br />
# env<br />
<span style="text-decoration: underline;">DISPLAY=localhost:10.0</span><br />
HOME=/<br />
LANG=zh_CN.UTF-8<br />
LOGNAME=root<br />
MAIL=/var/mail//root<br />
PATH=/usr/sbin:/usr/bin<br />
SHELL=/sbin/sh<br />
SSH_CLIENT=192.168.103.1 60802 22<br />
SSH_CONNECTION=192.168.103.1 60802 192.168.1.7 22<br />
SSH_TTY=/dev/pts/1<br />
TERM=xterm<br />
TZ=PRC<br />
USER=root</p>
<p>如果出现了DISPLAY变量则说明配置OK，随便可以执行一个桌面程序了。</p>
<p style="text-align: center;">
<div id="attachment_1015" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.litrin.net/wp-content/uploads/2009/06/x-forwarding.png"><img class="size-medium wp-image-1015" title="Ubuntu下x-forwarding Solaris 的 prodreg" src="http://www.litrin.net/wp-content/uploads/2009/06/x-forwarding-300x187.png" alt="Ubuntu下x-forwarding Solaris 的 prodreg" width="300" height="187" /></a><p class="wp-caption-text">Ubuntu下x-forwarding Solaris 的 prodreg</p></div>
<p>同样的在win+putty下，可以参照如下设置：</p>
<p style="text-align: center;">
<div id="attachment_1014" class="wp-caption aligncenter" style="width: 310px"><a href="http://www.litrin.net/wp-content/uploads/2009/06/putty_x-forward.png"><img class="size-medium wp-image-1014" title="putty x-forwarding" src="http://www.litrin.net/wp-content/uploads/2009/06/putty_x-forward-300x288.png" alt="putty x-forward" width="300" height="288" />.</a><p class="wp-caption-text">putty x-forwarding</p></div>
<p>同时，在使用putty登录之前请开启本地的X server客户端，推荐 <a rel="nofollow" target="_blank" href="http://sourceforge.net/projects/xming" target="_blank">Xming<br />
</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2009/06/01/ssh%e7%9a%84x%ef%bc%8dforwarding/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>DropBox-免费的网盘</title>
		<link>http://www.litrin.net/2009/05/12/dropbox-%e5%85%8d%e8%b4%b9%e7%9a%84%e7%bd%91%e7%9b%98/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=dropbox-%25e5%2585%258d%25e8%25b4%25b9%25e7%259a%2584%25e7%25bd%2591%25e7%259b%2598</link>
		<comments>http://www.litrin.net/2009/05/12/dropbox-%e5%85%8d%e8%b4%b9%e7%9a%84%e7%bd%91%e7%9b%98/#comments</comments>
		<pubDate>Tue, 12 May 2009 07:05:32 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[网络和安全]]></category>
		<category><![CDATA[桌面应用]]></category>

		<guid isPermaLink="false">http://www.litrin.net/?p=982</guid>
		<description><![CDATA[之前用过一段时间的Gdriver，那个把Gmail邮箱当作网盘的软件，感觉不错。可惜被google无情的封杀了。比较郁闷！ 今天，发现了Dorpbox这个工具，非常好用。比较少有的支持Windows Mac Linux多平台。免费支持2G的容量，如果你有钱的话还可以支持更多。 由于该网站还在测试，注册需要邀请。在这里发布邀请链接。 类似的还有一个，sugarsync，只支持win但在国内的速度不错，可以猛击这里获取]]></description>
			<content:encoded><![CDATA[<p>之前用过一段时间的Gdriver，那个把Gmail邮箱当作网盘的软件，感觉不错。可惜被google无情的封杀了。比较郁闷！</p>
<p>今天，发现了Dorpbox这个工具，非常好用。比较少有的支持Windows Mac Linux多平台。免费支持2G的容量，如果你有钱的话还可以支持更多。</p>
<p>由于该网站还在测试，注册需要邀请。在这里发布<a rel="nofollow" target="_blank" href="https://www.getdropbox.com/referrals/NTExMDk1NzQ5" target="_blank">邀请链接</a>。</p>
<p>类似的还有一个，sugarsync，只支持win但在国内的速度不错，可以猛击<a rel="nofollow" target="_blank" href="https://www.sugarsync.com/referral?rf=cqbojytvpcy7g">这里获取</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2009/05/12/dropbox-%e5%85%8d%e8%b4%b9%e7%9a%84%e7%bd%91%e7%9b%98/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>关于Postfix RBL设置的问题</title>
		<link>http://www.litrin.net/2009/03/20/%e5%85%b3%e4%ba%8epostfix-rbl%e8%ae%be%e7%bd%ae%e7%9a%84%e9%97%ae%e9%a2%98/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e5%2585%25b3%25e4%25ba%258epostfix-rbl%25e8%25ae%25be%25e7%25bd%25ae%25e7%259a%2584%25e9%2597%25ae%25e9%25a2%2598</link>
		<comments>http://www.litrin.net/2009/03/20/%e5%85%b3%e4%ba%8epostfix-rbl%e8%ae%be%e7%bd%ae%e7%9a%84%e9%97%ae%e9%a2%98/#comments</comments>
		<pubDate>Fri, 20 Mar 2009 09:50:36 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[网络和安全]]></category>
		<category><![CDATA[Mail]]></category>

		<guid isPermaLink="false">http://www.litrin.net/?p=859</guid>
		<description><![CDATA[在网上看了一下许多关于RBL配置的文章，不少都局限于postfix的较低版本——至少都是2.1以下的。考虑到目前postfix已经到了2.4版本以上，为避免各位绕弯路，把具体的设置方法分享给大家。 rbl的原理就是在拿到对方的IP以后，例如：1.2.3.4，反转后组成域名。例如xbl.spamhaus.org的RBL就会组成4.3.2.1.xbl.spamhaus.org送去DNS解析。正常的IP将会获得一个一个正常的IP回复，黑名单中的IP将会获得127.0.X.X的IP。 一般情况下在Postfix中会做如下设置启用RBL： smtpd_client_restrictions = permit_sasl_authenticated         permit_mynetworks         reject_rbl_client xbl.spamhaus.org=127.0.0.4          permit 需要说明的就是，至少我在postfix2.4下只有这种方式才会正常RBL，否则的话很容易就block全世界了。测试了几次，发觉并不向网上很多帖子说的那样是由于DNS被劫持引起的。关于127.0.X.X的返回值，可以到RBL的网站上查阅。 同时作为RBL的选择，其实一个就足够了，没有必要反复进行验证。]]></description>
			<content:encoded><![CDATA[<p>在网上看了一下许多关于RBL配置的文章，不少都局限于postfix的较低版本——至少都是2.1以下的。考虑到目前postfix已经到了2.4版本以上，为避免各位绕弯路，把具体的设置方法分享给大家。</p>
<p>rbl的原理就是在拿到对方的IP以后，例如：1.2.3.4，反转后组成域名。例如xbl.spamhaus.org的RBL就会组成4.3.2.1.xbl.spamhaus.org送去DNS解析。正常的IP将会获得一个一个正常的IP回复，黑名单中的IP将会获得127.0.X.X的IP。</p>
<p>一般情况下在Postfix中会做如下设置启用RBL：</p>
<p>smtpd_client_restrictions = permit_sasl_authenticated<br />
        permit_mynetworks<br />
        <span style="text-decoration: underline;">reject_rbl_client xbl.spamhaus.org=127.0.0.4<br />
</span>         permit<span id="more-859"></span><br />
需要说明的就是，至少我在postfix2.4下只有这种方式才会正常RBL，否则的话很容易就block全世界了。测试了几次，发觉并不向网上很多帖子说的那样是由于DNS被劫持引起的。关于127.0.X.X的返回值，可以到RBL的网站上查阅。</p>
<p>同时作为RBL的选择，其实一个就足够了，没有必要反复进行验证。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2009/03/20/%e5%85%b3%e4%ba%8epostfix-rbl%e8%ae%be%e7%bd%ae%e7%9a%84%e9%97%ae%e9%a2%98/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>netscreen的使用感受</title>
		<link>http://www.litrin.net/2009/02/19/netscreen%e7%9a%84%e4%bd%bf%e7%94%a8%e6%84%9f%e5%8f%97/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=netscreen%25e7%259a%2584%25e4%25bd%25bf%25e7%2594%25a8%25e6%2584%259f%25e5%258f%2597</link>
		<comments>http://www.litrin.net/2009/02/19/netscreen%e7%9a%84%e4%bd%bf%e7%94%a8%e6%84%9f%e5%8f%97/#comments</comments>
		<pubDate>Thu, 19 Feb 2009 01:35:42 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[硬件相关]]></category>
		<category><![CDATA[网络和安全]]></category>
		<category><![CDATA[Juniper]]></category>

		<guid isPermaLink="false">http://www.litrin.net/?p=504</guid>
		<description><![CDATA[一直没有空下来深入研究以下Juniper的Netscreen。正巧的是前些日子，公司有一台204-B出现了故障，这才有机会研究了一下。 公司的分支机构相对都很散，每个分支相对人数较少。Firwall+Route+VPN的组合维护起来非常方便。一般性的情况下NS5-GT这类的设备加10个用户授权就足够了。对于稍微人数多一点的机构，就需要204这类的东西了（MS是没有用户数限制的）。总部则使用了SSG550支撑。 相比其他的产品，Netscreen感觉上webUI的配置方式很是方便，特别适合像我这类懒的背命令的人——虽然看上去命令并不复杂。 关于升级，个人觉得netscreen的产品线搞得有点复杂：ScreenOS可以升级版本、功能扩展可以升级、用户授权可以升级……搞得很是复杂。网上的文档说是Netscreen本身就是一个封装好的FreeBSD，当然容易扩张，当然也容易把人搞晕。曾经试过他的反垃圾和反病毒模块，其实就是在此之上加一个诺顿的东西上去，谈不上有什么很彻底的革新。但至少对于绝大多数的应用，这已经足够了。 发现的部分问题： 兴许是公司舍不得花钱的缘故，一直觉得Netscreen的负载居高不下。至少觉得他的配置稍微有点偏低。 国外公司的缘故，对于国内的部分特色应用——如QQ，操作起来比较麻烦，需要自定义Service。 本地化的问题。]]></description>
			<content:encoded><![CDATA[<p>一直没有空下来深入研究以下<a rel="nofollow" target="_blank" href="http://www.juniper.com" target="_blank">Juniper</a>的Netscreen。正巧的是前些日子，公司有一台204-B出现了故障，这才有机会研究了一下。</p>
<p>公司的分支机构相对都很散，每个分支相对人数较少。Firwall+Route+VPN的组合维护起来非常方便。一般性的情况下NS5-GT这类的设备加10个用户授权就足够了。对于稍微人数多一点的机构，就需要204这类的东西了（MS是没有用户数限制的）。总部则使用了SSG550支撑。</p>
<p>相比其他的产品，Netscreen感觉上webUI的配置方式很是方便，特别适合像我这类懒的背命令的人——虽然看上去命令并不复杂。</p>
<p><span id="more-504"></span></p>
<p>关于升级，个人觉得netscreen的产品线搞得有点复杂：ScreenOS可以升级版本、功能扩展可以升级、用户授权可以升级……搞得很是复杂。网上的文档说是Netscreen本身就是一个封装好的FreeBSD，当然容易扩张，当然也容易把人搞晕。曾经试过他的反垃圾和反病毒模块，其实就是在此之上加一个诺顿的东西上去，谈不上有什么很彻底的革新。但至少对于绝大多数的应用，这已经足够了。</p>
<p>发现的部分问题：</p>
<ol>
<li>兴许是公司舍不得花钱的缘故，一直觉得Netscreen的负载居高不下。至少觉得他的配置稍微有点偏低。</li>
<li>国外公司的缘故，对于国内的部分特色应用——如QQ，操作起来比较麻烦，需要自定义Service。</li>
<li>本地化的问题。</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2009/02/19/netscreen%e7%9a%84%e4%bd%bf%e7%94%a8%e6%84%9f%e5%8f%97/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Kernel2.6编译mysql3的问题</title>
		<link>http://www.litrin.net/2008/12/09/kernel26%e7%bc%96%e8%af%91mysql3%e7%9a%84%e9%97%ae%e9%a2%98/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=kernel26%25e7%25bc%2596%25e8%25af%2591mysql3%25e7%259a%2584%25e9%2597%25ae%25e9%25a2%2598</link>
		<comments>http://www.litrin.net/2008/12/09/kernel26%e7%bc%96%e8%af%91mysql3%e7%9a%84%e9%97%ae%e9%a2%98/#comments</comments>
		<pubDate>Tue, 09 Dec 2008 02:04:19 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[www]]></category>
		<category><![CDATA[网络和安全]]></category>

		<guid isPermaLink="false">http://www.litrin.net/?p=499</guid>
		<description><![CDATA[前些天帮个朋友重装了个系统——Centos5.1下的LAMP。由于程序限制，必须在选择mysql3的数据库。 按照常理操作： #cd /mysql3XXX #./configure &#8211;prefix=/usr/local/mysql3 出现如下错误：This is a linux system and Linuxthreads was not found 系统中没有找到linux线程——比较搞笑，没有线程，那系统是怎么起来的？ 分析下来，这是由于mysql使用了较老的thread库，针对于kernel2.4的mysql3得不到支持。 ＃echo &#62;&#62; /usr/include/pthread.h ＃./configure –with-pthread –with-named-thread-lib=-lpthread  &#8211;prefix=/usr/local/mysql3 重新编译后搞定！  ]]></description>
			<content:encoded><![CDATA[<p>前些天帮个朋友重装了个系统——<a rel="nofollow" target="_blank" href="http://www.centos.org" target="_blank">Centos5.1</a>下的LAMP。由于程序限制，必须在选择mysql3的数据库。</p>
<p>按照常理操作：</p>
<p>#cd /mysql3XXX</p>
<p>#./configure &#8211;prefix=/usr/local/mysql3</p>
<p>出现如下错误：<strong><span style="color: #ff0000;"><span style="background-color: #ffff00;">This is a linux system and Linuxthreads was not found</span></span></strong></p>
<p>系统中没有找到linux线程——比较搞笑，没有线程，那系统是怎么起来的？</p>
<p>分析下来，这是由于mysql使用了较老的thread库，针对于kernel2.4的mysql3得不到支持。</p>
<p>＃echo &gt;&gt; /usr/include/pthread.h</p>
<p>＃./configure –with-pthread –with-named-thread-lib=-lpthread  &#8211;prefix=/usr/local/mysql3</p>
<p>重新编译后搞定！</p>
<p style="text-indent: 2em;"> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2008/12/09/kernel26%e7%bc%96%e8%af%91mysql3%e7%9a%84%e9%97%ae%e9%a2%98/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>远程控制Boinc</title>
		<link>http://www.litrin.net/2008/09/30/%e8%bf%9c%e7%a8%8b%e6%8e%a7%e5%88%b6boinc/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e8%25bf%259c%25e7%25a8%258b%25e6%258e%25a7%25e5%2588%25b6boinc</link>
		<comments>http://www.litrin.net/2008/09/30/%e8%bf%9c%e7%a8%8b%e6%8e%a7%e5%88%b6boinc/#comments</comments>
		<pubDate>Tue, 30 Sep 2008 05:39:59 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[网络和安全]]></category>

		<guid isPermaLink="false">http://www.litrin.net/?p=492</guid>
		<description><![CDATA[Boinc是加州大学波克利分校（怎么又是他？）开发的一个分布式运算的平台，支持了n多的分布计算项目，其中最初明的应该算是SETI＠home那个寻找“小绿人”的项目。 Boinc由客户端和管理器组成，默认的安装要求安装有桌面环境。这对于很多服务器而言似乎严格了一点。现在就分享一下使用控制器远程使用客户端的方法。 首先，安装Boinc     Fedora : yum install bonic-client     Debian : apt-get install boinc-client     Ubuntu :  sudo apt-get install boinc-client     FreeBSD : cd /usr/poot/net/boinc-client; make install clean     其他的系统可以直接去http://boinc.berkeley.edu下载安装程序。 这里需要说明的是，我在Freebsd上安装最新的程序，配置结束后系统老是提醒我平台不正确，那不到运算数据。看来同样波克利项目之一的Freebsd跟Boinc之间存在兼容问题，比较讽刺。 找到安装目录下的gui_rpc_auth.cfg文件，修改内容为控制密码，例如：123456 执行 boinc-client  &#8211;daemon &#8211;allow_remote_gui_rpc。 在远程，使用boinc-manager。 高级－&#62;选择计算机－&#62;填写主机ip和密码。按照向导添加项目。以后每次需要管理项目的时候也要采用类似的方法在几台主机之间切换。 如果要显得专业一点，可以修改相应的服务启动文件。 希望各位能够帮助大家提供更多的运算量！]]></description>
			<content:encoded><![CDATA[<p>Boinc是加州大学波克利分校（怎么又是他？）开发的一个分布式运算的平台，支持了n多的分布计算项目，其中最初明的应该算是SETI＠home那个寻找“小绿人”的项目。</p>
<p>Boinc由客户端和管理器组成，默认的安装要求安装有桌面环境。这对于很多服务器而言似乎严格了一点。现在就分享一下使用控制器远程使用客户端的方法。</p>
<p>首先，安装Boinc<br />
    Fedora : yum install bonic-client<br />
    Debian : apt-get install boinc-client<br />
    Ubuntu :  sudo apt-get install boinc-client<br />
    FreeBSD : cd /usr/poot/net/boinc-client; make install clean<br />
    其他的系统可以直接去http://boinc.berkeley.edu下载安装程序。</p>
<p>这里需要说明的是，我在Freebsd上安装最新的程序，配置结束后系统老是提醒我平台不正确，那不到运算数据。看来同样波克利项目之一的Freebsd跟Boinc之间存在兼容问题，比较讽刺。</p>
<p>找到安装目录下的gui_rpc_auth.cfg文件，修改内容为控制密码，例如：123456</p>
<p>执行 boinc-client  &#8211;daemon &#8211;allow_remote_gui_rpc。</p>
<p>在远程，使用boinc-manager。 高级－&gt;选择计算机－&gt;填写主机ip和密码。按照向导添加项目。以后每次需要管理项目的时候也要采用类似的方法在几台主机之间切换。</p>
<p>如果要显得专业一点，可以修改相应的服务启动文件。</p>
<p>希望各位能够帮助大家提供更多的运算量！</p>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2008/09/30/%e8%bf%9c%e7%a8%8b%e6%8e%a7%e5%88%b6boinc/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>QQ For Linux</title>
		<link>http://www.litrin.net/2008/08/17/qq-for-linux/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=qq-for-linux</link>
		<comments>http://www.litrin.net/2008/08/17/qq-for-linux/#comments</comments>
		<pubDate>Sat, 16 Aug 2008 23:05:41 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[网络和安全]]></category>

		<guid isPermaLink="false">http://www.litrin.net/?p=488</guid>
		<description><![CDATA[这么多年，腾讯总算官方支持了Linux了——比非官方支持至少晚了7～8年。反正作为一个OpenSourcer，看到几年前腾讯的所作所为，我抵制QQ已经很多年，考虑到各位可能有需要，请到QQ的官方下载。考虑到PR问题，本站不提供连接: h t t p : // im. qq. com / qq / linux / 还请大家自行整理。 比较乌龙的是，rpm版本的介绍中竟然说“遵从GPL“，令人联想到多年前腾讯的Skype抄袭事件。看来恶习难改啊！]]></description>
			<content:encoded><![CDATA[<p>这么多年，腾讯总算官方支持了Linux了——比非官方支持至少晚了7～8年。反正作为一个OpenSourcer，看到几年前腾讯的所作所为，我抵制QQ已经很多年，考虑到各位可能有需要，请到QQ的官方下载。考虑到PR问题，本站不提供连接:</p>
<p>h t t p : // im. qq. com / qq / linux /</p>
<p>还请大家自行整理。</p>
<p>比较乌龙的是，rpm版本的介绍中竟然说“遵从GPL“，令人联想到多年前腾讯的Skype抄袭事件。看来恶习难改啊！</p>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2008/08/17/qq-for-linux/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

