jump to navigation

踉跄在儒家思想下的中国科技 一月 27, 2005

Posted by wansion in Life.
add a comment

作为经济增长四大源泉之一的科技在现代社会中越来越强劲的展示出了其空前的活力。世界经济发展的情况愈益表明,科学技术是经济增长的决定性力量。二次大战后,随着新科技革命的到来,以电子计算机为主力军,形成了微电子技术、宇宙空间技术、生物工程技术、海洋开发技术、新材料、新能源、核能、激光、光纤通讯等等庞大的高新技术群,使人类进入高科技时代,使得科学技术与生产的关系日益密切,科学技术的发展和在生产当中的应用,呈现出以往所不曾显露的特点。而科学知识的高密度、高难度、高效益、高增值性、高速度、高性能等等确立了科学技术在经济增长中不可磨灭的地位,它的巨大作用充分显示出来,科学技术在经济增长中的作用更是日益受到人们的重视。有鉴于此,探求科技发展的影响因子就显得尤为重要,于是越来越多的人们开始反思与探求影响科技进步的各方要素。

而在这诸多要素当中,一个国家的科技发展方向和速度无疑的与在该国占统治地位的传统文化与思想体系的联系是最为密切的。

中华民族的文化是一个多元的统一体,先秦时儒、道并为显学,不分高下;到汉武帝时提出“三纲五常”、“独尊儒术”;唐代时儒、道恢复并用;两宋之际,程朱理学融合儒、释、道而为心性之学;真正崇儒则始于元代。秦汉以前,孔子只不过是个圣人而已。但到元代,一跃而为圣者之王——“大成至圣文宣王”。自此以降,尊儒崇儒之风一直延及清末。

历想这一时期,由北宋时理学兴起,周张二程重建儒学的体系,反拨佛老,回到孔孟,恢复儒学的权威为序幕。再有朱熹提出“道统”的名称,以为周程直接孟子之传,创立理学家的道统说。宋儒的道统观念在一定意义上保卫了民族文化独立的地位。佛教在中国虽然广泛流传,但是中国没有成为佛教国,儒学始终居于主导的地位,这与道统说有着一定关系。后来蒙古灭宋,元代统治者在信仰佛教的同时,内心却极度尊崇儒家的道统。清初满族入主中原,更是肯定道统的尊严。

所以儒家思想在中国是据有绝对统治地位的思想体系,中国的科技发展方向和水平也是同它的关系最大。

作为中国封建时代的正统思想,统治中国思想界达两千多年,其影响之广、之深是世所少见的。虽然道统之说对于汉文化的绵延不绝,常盛不衰,起了一定的积极作用。但是道统说又有扼制自由思想、窒息创造性思维的消极作用。两宋开创的程朱理学,志在追寻维护封建道统的“秩序”,“存天理,灭人欲”,从此不仅使中国女人缠上了小脚,也使中国人的思想套上了枷锁。“平日坐而谈心性,临危一死报君王”。坐而论道,一旦国家危难,却是那样无可奈何。这就是戴震所抨击的“以理杀人”。自南宋以后,少数民族接而连三地入主中原,契丹“辽”、女真“金”、蒙古“元”、满族“清”,小而取大,弱而胜强。历史的变迁反映了文化对现实的回应能力,中古以前是中国文化的鼎盛时期,那时无论政治、经济、军事、科技都处于世界领先地位,到了南宋末期,中国文化的衰势已露端睨,延至清末,已无力回应西方文化的挑战。

而且在这样一种大一统思想的长期管制下,中国社会的评价或评判体系也随之以强调“修身、齐家、治国、平天下”的人生定位,也就不可避免地在客观上约束或限制了人生发展目标的多样性。导致长期以来,中国的政府及其官员和富人阶层,很少会想到去资助民众去搞科学研究,甚至把科学技术视之为“奇技淫巧”而加以排斥。
然而英国科学家李约瑟在他的巨著《中国科学技术史》中写道:中国人“在许多重要方面有一些科学技术发明,走在那些创造出著名的希腊奇迹的传奇式人物的前面,和拥有古代西方世界全部文化财富的阿拉伯人并驾齐驱,并在公元三世纪到十三世纪之间保持一个西方所望尘莫及的科学知识水平”。的确,从秦汉到宋元的千余年间,中国的科学技术曾长期处于世界的领先地位,在人类文明发展的过程中作出了巨大贡献。但在十三世纪以后,中国的科学技术就停留在经验阶段,科学技术的理论没有进一步发展,近代科学也首先出现在伽利略时代的西方,而不是在中国,这就是著名的“李约瑟难题”。

现在,以今人的眼光和从多年来的研究结果不难看出,造成这一难题的根本原因就是与在中国思想界占统治地位的儒学以及由此而派生出来的具有鲜明的中国特色的社会伦理型结构、中国的实用性科技和有着整体性观念的科学研究密不可分的

中国的古代社会是一个伦理型的社会,占主导地位的儒家思想主要强调“修身、齐家、治国、平天下”,强调人的道德修养和人格完善。儒学所扮演的也始终是官方学说的角色。孔子核心思想的“仁爱”不是西方宗教意义上的“博爱”,而是有等差的“爱”;孔子的“礼”是维护等差格局的理性工具,儒学是一种纯粹世俗化的伦理学说,而不是建立在形而上学或宗教意义上的伦理学说,虽然“仁”与“礼”的结合,在培养整个民族的良好道德方面获得了成功,为中华民族赢得“礼仪之邦”的美誉做了贡献。但是,由于儒家偏重于“内在超越”,即所谓的“修身养性”,注重精神内敛,而不是象西方文化那样向外欲求、向外发展、征服自然、改造世界的“外在超越”,这就铸造了中国人怯懦、忍耐、冷漠、保守的民族性格,求静、求稳、怕变,即所谓“天不变,道亦不变”。再者,儒家虽然强调人际关系的和谐,但更注重君臣、父子的等差序列,用“忠”来维系君臣关系,用“孝”来维系宗法血缘关系,用表层的温情脉脉遮蔽了社会内在的不平等。人与人的相对距离拉大,人人面对的是大大小小的专制权威,整个教育所培养的目标也只是维护封建统治秩序的各级官吏,因而与此相悖的科学技术活动就被视为“旁门左道”。一部二十四史,写满帝王将相、文人学士、贞女烈妇的事迹,却偏偏没有科技发明者的专门章节。所以从中国传统儒学的内在基因来看,其自身很难由“内圣”开出“新外王”,而其对科学技术的指导作用也只能是一纸空文,它跟民主与科学的时代潮流更是相去甚远。

虽然古代儒家兼重仁智,对于知识是比较肯定的。但儒家所重视的智主要是人文知识,向来注重人伦日用,注重切近的效益,表现出很强的实用主义倾向,对于自然知识却不甚注意。如荀子所说:“万物之怪书不说。无用之辩,不急之察,弃而不治;若夫君臣之义、父子之亲、夫妇之别,则曰切磋而不舍也。”(《荀子·天论》)把对于万物的探究都看作“无用之辩,不急之察”,导致自然科学没有受到应有的重视。,这也是中国没有产生自己的近代实验科学的原因之一。可是通过实践证明:自然科学知识和以科学为依据的技术是重要的生产力,能满足生产的最大需要,具有很强的功用价值。同时也有一些知识,虽并无直接用处,与生产技术没有直接联系,但其却是客观实际的正确反映,也不能武断地就否认掉它的全部内在价值。

正是由于中国古代对知识采取了狭隘的实用主义态度,所以中国的科学技术也就不能例外的带有超强的实用性特点,形成一切学科、一切研究,都以“国家”的实用为最终目的的局面。如在中国古代,天文学有很高的成就,而且比较发达,但其科学研究活动都是为王朝的一统天下寻求“授命于天”的根据;如中国古代的农学也很发达,仅农书即达三百余种,但它也是历代王朝“以农立国”和“民以食为天”的一种反映;即使是著名的“四大发明”,也与国家的实用性目的有关。因此,中国古代的科学著作大多是经验型的总结,而不是理论型的探讨,所记各项发明,都是为了解决国家与社会生活中的实际问题,而不是企图在某一研究领域获得重大突破。

从研究方法来说,儒学长于辨证思维,却不善于分析思维,谈论问题往往是浑论不析,习惯于把天地万物看做一个整体,在整体中各个部分息息相关。这个观点发展到科技中来就是重视综合性的整体研究,重视从整体上把握事物,不能把研究对象从错综复杂的联系中分离出来,独立研究它们的实体和属性,细致探讨它们的奥秘。如在儒学世界中一直强调一种“有对”是事物运动变化的源泉的观点。最早提出事物有对的可能是《周易》,它通过事物的有对,即对立面的相互作用来说明事物运动变化的原因,同时记载了许多属于对立方面的范畴,反映了中国古代辩证法的存在。朱熹认为:“天地万物之理,无独必有对。”他认为世界上的一切事物都有对立面。在另一个事物内部也有对,“然就一言之,一中又自有对。且如眼前一物,便有背有面。有上有下,有内有外。”朱熹把它的这些接近辩证法本质的看法与邵雍的“一分为二”、张载的“一物两体”相结合,进一步提出“有对”就是“一分为二”。这种将“一分为二”看作事物运动变化普遍规律的观念未免有些狭隘。也正是这样一种非此即彼,非表即里的狭隘主义,忽略了事物发展还有处于中间状态的第三性,忽略了对事物本身的进一步的研究。导致:一方面局限了中国古代科技理论创新和发展的视野,另一方面同时也禁锢了中国人的辩证思维的进一步发展。

这也是中国的科技水平长期处于发展的初级阶段而没能象西方一样向实验科学转变的最主要原因。

当成吉思汗的铁骑横扫欧亚大陆之后,中国在宋代蓬勃发展的科学技术遭到沉重的打击,而欧洲人则从黑暗的中世纪惊醒过来,不断反思。西方文化或曰基督教文化;古希腊、古罗马是其上升时期,中世纪是神权统治一切,丧失了基督教文化的生命力,后经文艺复兴运动,特别是16世纪席卷欧洲的加尔文新教改革,动摇了传统神学的统治基础,为旧神学注入了新教义,使远离人间的神秘宗教从天堂降临到大地,回到世俗化的人间来。经过改革后所形成的新教伦理,为西方近代资本主义的形成和发展起了重要的促进作用。众所周知,西方的近代科学技术是在突破宗教对自由思想、理性思维的禁锢后,才得以发展起来。正是在这种背景下,当哥白尼等科学家认识到太阳系的结构,指出地球不是宇宙的中心,而是围绕太阳旋转的一颗普通行星的时候,圣经的权威被打破了,欧洲的宗教信徒从而迸发出前所未有的追求科学的热情。此后,随着达尔文进化论的发现,圣经再也无力干涉科学,或者与科学对抗。由此,宗教不得不把上帝创造生命的权力还给大自然,给予人们怀疑和反思的权利。
反观中国,中古以后,特别自元代崇儒之风大盛。儒学一旦定于一尊,成为封建统治阶级的意识形态,便具有不容置疑的权威性,用封建纲常伦理来禁锢人们的头脑。加之文化的传承者主要是“学而优则仕”的科举士大夫文人,为了世卿世禄,不得不去维护那个不变的“道”,在家做孝子,在朝做忠臣,一旦失意还可以在道家那里做隐士。其结果只能是轻贱工、商,仅是去皓首穷经,从圣贤书中体会其微言大义,而对于有实用知识的书籍却弃若敝履,由此科学技术就失去其生存的背景和条件,科技的发展与进步也就成为一句空话。

儒学大家们都善于在对话中运用修辞的技巧来教导、启迪学生并表达自己的观点。儒家重“道”轻“器”,重人文轻理工,慎修身体斥技艺。“君子不器”是儒家的传统。儒家所追求的是“修身、齐家、治国、平天下”,是“内圣外王”;在儒生们的心目中,“穷天理,明人伦,讲圣言,通世故”乃是做学问的主要目的和任务。在中国,学哲学的目的不是做西方式的“学者”、“科学家”、“思想家”,而是铸就有修养的“人”,只有简洁,哲学才能在民间推广,达到熏陶每个人的目标。因此,儒家学者一般说来大都是思想者而不是科学家,也不是技术专家。儒家的这种思想和选择确实不利于科技的发展。

在儒家伦理中,思维的工具方式主要不是用来征服自然,借助人与自然的对立关系激励科学创造的精神,而是用于调适社会,解开人与人之间各种关系的“结”,目的是为了从根本上适应现实而不是质疑现实,这种伦理模式只能满足于自然所赐予的农耕文明范畴,以及世俗宗法力量所支配的人文环境。而西方哲学认为天地自然与人的关系,是冲突的两极,所以人是把自然作为满足自我欲望的索取对象,只要满足生存的自我目的,达到战胜自然的目标,可以不计手段和途径。这种工具主义理性激励了人的科学进取精神和创造精神,也促进了实现自身价值的要求和欲望。西方这种救赎性的工具伦理,目的是为了否认现世的种种压制,实现对自然力和世俗宗法力量的超越,它是依靠个人创造进而依靠追求幸福的价值心理来开拓人生,把人生目的与劳动本身融合在一起,并使象征工具创造和人文理性的自我价值最终服膺于社会。

正如梁漱溟先生在其《东西文化及其哲学》一书中认为的,“西方文化是以意欲向前要求为其根本精神的”,其突出贡献是民主与科学;而“中国文化是以意欲自为调和持中为其根本精神的”,所以儒家的突出贡献是伦理道德,而不是推动科技的发展。

中国儒学的基本精神之一是贵“和”持“中”。注重和谐,坚持中庸,是浸透中华民族文化肌体每一个毛孔的精神。孔子讲:礼之用,和为贵。先王之道,斯为美,小大由之。有所不行,知和而和,不以礼节之,亦不可行也。”(《论语·学而》)这是强调以礼为标准和谐,是一种贵和须息争,息争以护和的和谐论。“中”,即中庸之道,不偏不倚谓之中庸。《中庸》将孔子所主张的持中的原则,从“至德”提到“天下之大本”、“天下之达道”的哲理高度。贵“和”持“中”作为中华民族的一项基本精神,使得中国人十分注重和谐局面的实现和保持,做事不走极端,着力维护集体利益,求大同而存小异,成了人们的普遍思维原则。这种追求和谐的天人关系和人际关系,形成了中华民族温良、平和的性格特征,静态的、整体的和谐观,有利的促进了文化的延续、思维趋同和社会稳定,对于民族精神的凝聚和扩展,统一的多民族政权的维护同样起着积极作用。

但是,中国儒学这种贵“和”持“中”、贵“和”轻“争”,讲和谐,求统一的观念否认斗争、排斥竞争和简单协同的道德理想,对于科技的反思就有着很大的不足,它缺乏了积极进取的精神,求稳怕变,也制约了社会、科学和生产力的发展。中华传统儒学的特质在于一个“和”字,而西方文明的特质刚好与中华文化相反,在于一个“争”字,西方的传统文化具有贵“争”轻“和”,追求主体性,讲征服,形成主客对立的特点。伯里克利认为“人是第一重要的”。洛克讲:“追求个人幸福或快乐是人的本性”。在洛克那里,人、社会、国家要尽可能地帮助和保护人的幸福和快乐。科莱蒂强调“人的本质是社会历史的主体”。《圣经》则更进一步强调“人是世界的主宰”。在这里,西方的传统文化强调一个“争”字,强调人的主体性,追求对自然和社会的分析、理解、征服。促进人们进取、创新,促进思想解放,使得人们具有独立、批判精神,促进社会时时更新,蓬勃发展。资本主义的原始积累、新航路开辟以来的殖民侵略,三次工业革命无不体现了这一点。

当然这种“争”的消极面也是显而易见的,“获显利而忧隐患,得近利而播远忧”虽有些绝对,但并不是没有一定的道理。正是由于这种“显利”和“近利”的驱动,包含“争”的特质的西方文明得以盛行于世,经过三百多年“工业文明”的发展历年所伏的“隐患”渐渐显化为“明患”,历年所播的“远忧”渐渐进逼为“近忧”,西方文明强调突出个人,强调物质财富,务求一枝独秀。由于人与人的竞争的激烈,经常发生人与人之间;过分地追逐奢侈豪华,从而导致人与自然的对立,造成愈演愈烈的社会危机和生态危机,以致威胁到人类的生存。

文艺复兴以来,随着培根“知识就是力量”的论断,一种强烈的、带有侵略性的、以科学技术为主的实证主义思潮在西方始终占主导地位,而人文主义则受到抑制。人类可以征服自然,创造新的生存条件,但自然资源是有限的。人类自身所处的生态环境有很多薄弱环节。人在征服自然的过程中破坏了生态环境,最终的结果是同归于尽。

人们在认真反省当今世界千秋工业化的发展所带来的新的伦理挑战与困惑后,给世界发出了一个忠告:“如果人类要在21世纪生存下去,必须回首二千五百年,去汲取孔子的智慧。”可见,虽然中国的儒学对科学技术的发展没有促进作用,但是在当今道德衰退、生态环境恶化、人种退化等由工业化带来的挑战和威胁下,可以将儒学作为科技发展的护航员、一个补充来重建科技伦理道德。

科学技术的飞速发展犹如一把双刃剑,在使人类享受极其丰富物质利益的同时,也迫使人类卷入了人与自然、人与社会、人与人、人的心灵与追求之间以及不同文明之间的冲突,人类日益吞食着因生态、社会、道德、精神乃至价值等危机带来的苦果,而人类最新的科技成果更带来了新的伦理问题。科学技术作为人类认识自然的活动,离不开协调主体际关系的活动而独自存在和发展。当“科学研究成果开始获得应用时,这也就标志着伦理思考和道德思考的闯入”。在科学活动中科学家有双重身份;一方面他是科学探索者,必须有科学精神,以追求真理和科学为目标,坚持科学的客观性;另一方面他又是社会中的个体,对社会负有责任,他要用他的科学活动服务于社会、这种双重身份使得科学活动不可能是纯粹的探索真理的活动,同时必须是价值活动为实现一定目标而从事的活动、科学家不能保持价值中立,他要对自己的行为负责,要接受社会对他工作的评价,并且把自己的活动放到社会价值活动之中。在科技迅猛发展的今天,任何一项科学技术的使用,它所带来的影响都不能说只仅仅影响某个人抑或是某些人,它所涉及的一定是全人类的利益。因此,在这种情况下,为了留给后代一个健康、美丽、和谐的生存空间,发掘传统儒学的优秀精神,重建科技伦理已成为世人之共识。

儒家伦理是中国文化的特征,它不是一种宗教,而是道德的总和。它是在历史的长河中不断吸收其他思想而得到丰富和发展的,它维护了中国的整个社会秩序。儒家传统是一种历史现象,又是一种生命形态,其中有其哲学意义、宗教意义、人文学意义、人类学意义。它不仅是中国文化不可分割的一部分,而且是东亚文明的体现。中国传统儒学属于人文类型,其核心内容是内圣外王之学,注重探讨理想人格与理想世界,回答社会与人生的问题。儒学中“天人合一”、“明礼诚信”、“贵和尚中”、“仁爱宽囿”“、忧患意识”等基本精神和价值观念都是解决现代社会危机、重建伦理道德不可多得的精神财富。

人类征服自然过程中导致了生态环境的严重破坏,使人类的继续生存受到严重威胁,其出路是人类确立与自然协调共进的意识。儒家“天人合一”的思想就是认为宇宙间的一切事物都具有共同的本源,并且密不可分的连结在一起。这种观点虽然与近代科学发展的理念背道而驰,没有承认人世间有人世间的规律,有人世间复杂的现象,自然有自然界的复杂现象,两者不能混淆,混为一谈;但是它却将人类现实利益与理性智慧、科学态度与道德精神相结合,强调人与自然是统一的,人也要善待、善处万物和自然,彼此共生共存,造就了中国儒学解决当今生态危机的一把钥匙。正如英国学者唐通所说的那样:“中国的传统是很不同的。它不奋力征服自然,也不通过研究、分析去理解自然,目的在于与自然订立协议,实现并维持和谐。”
“明礼诚信”原本属于传统儒家所一贯提倡并力求践履物道的原则和行为规范。它作为一种普世性的价值观和道德观,无论对于处理国际关系、社团关系、人际关系抑或个人的安身立命,都具有十分重要的意义和作用。在面对以科技和知识为发展主导的大潮流,“明礼诚信”将成为融洽国际关系、促进国家发展、导正社会风俗、完善个人道德、提升民族素质的一个十分重要的行为准则,也是解决人与人之间道德危机的另一把钥匙。

儒学思想通过多种渠道和方式影响、渗透于中华民族的政治、经济、哲学、伦理、心理、美学、民俗等社会生活的各个方面,产生了陶冶情操、崇尚人格、尊老爱幼、安定家庭、协调社会、治国安邦、顺应自然、天人和谐等多种功能和影响,对中华民族丰富多彩、博大精深的古代文化和优良传统的形成,做出了重要的贡献。在现代生活中,儒家伦理仍具有一定的现代价值。在科技日新月异的今天,儒学应更加开放,接纳科学知识及相关经验法则,应平衡教育,冀使儒家的仁爱道德精神与科技相结合,东西文化得以互补而相得益彰,同时以儒家的道德教育来抑制物欲膨胀,由此德性之知,连贯心性涵养、伦理规范,使得现代化的生活,更臻和谐而完美,以期老“内圣”能真正的开出新“外王”。

最后,我们可以用“国际智者”阿诺德·约·汤因比的观点来为本文做结。他在《历史研究》中预言21世纪将是中国的文化时代,并在一次“展望21世纪”的演讲中阐述了这一观点,他指出中国文化将是21世纪人类走向全球一体化、文化多元化的凝聚力和粘合剂,特别是人类掌握了可以毁灭自身的高度技术文明手段,同时又处于极端对立的政治、意识形态营垒中,最需要的精神就是中国文化的精髓——宽容与和谐。他指出如果中国文明不能取代西方文明成为人类的主宰,那么整个人类的前途将是可悲的。

俱往矣!在全球科技发展的“革故鼎新”的时代,儒家的理论缺失定会得到厘正,其贡献也定将会得到发扬光大,其时当是儒家子民之幸,全民之幸!

Advertisements

逍遥游 一月 27, 2005

Posted by wansion in 图书.
add a comment

       北冥有鱼,其名为鲲。鲲之大,不知其几千里也。化而为鸟,其名为鹏。鹏之背,不知其几千里也。怒而飞,其翼若垂天之云。是鸟也,海运则将徙于南冥。南冥者,天池也。

  《齐谐》者,志怪者也。《谐》之言曰:“鹏之徙于南冥也,水击三千里,抟扶摇而上者九万里,去以六月息者也。”野马也,尘埃也,生物之以息相吹也。天之苍苍,其正色邪?其远而无所至极邪?其视下也,亦若是则已矣。

  且夫水之积也不厚,则其负大舟也无力。覆杯水于坳堂之上,则芥为之舟。置杯焉则胶,水浅而舟大也。风之积也不厚,则其负大翼也无力。故九万里则风斯在下矣,而后乃今培风;背负青天而莫之夭阏者,而后乃今将图南。

  蜩与学鸠笑之曰:“我决起而飞,抢榆枋,时则不至而控于地而已矣,奚以之九万里而南为?”适莽苍者,三餐而反,腹犹果然;适百里者,宿舂粮;适千里者,三月聚粮。之二虫又何知!

  小知不及大知,小年不及大年。奚以知其然也?朝菌不知晦朔,蟪蛄不知春秋,此小年也。楚之南有冥灵者,以五百岁为春,五百岁为秋;上古有大椿者,以八千岁为春,八千岁为秋。而彭祖乃今以久特闻,众人匹之,不亦悲乎!

  汤之问棘也是已:穷发之北,有冥海者,天池也。有鱼焉,其广数千里,未有知其修者,其名为鲲。有鸟焉,其名为鹏,背若泰山,翼若垂天之云,抟扶摇羊角而上者九万里,绝云气,负青天,然后图南,且适南冥也。

  斥鴳笑之曰:“彼且奚适也?我腾跃而上,不过数仞而下,翱翔蓬蒿之间,此亦飞之至也,而彼且奚适也?”此小大之辩也。

  故夫知效一官,行比一乡,德合一君,而徵一国者,其自视也,亦若此矣。而宋荣子犹然笑之。且举世而誉之而不加劝,举世而非之而不加沮,定乎内外之分,辩乎荣辱之境,斯已矣。彼其于世,未数数然也。虽然,犹有未树也。

  夫列子御风而行,泠然善也,旬有五日而后反。彼于致福者,未数数然也。此虽免乎行,犹有所待者也。

  若夫乘天地之正,而御六气之辩,以游无穷者,彼且恶乎待哉!故曰:至人无己,神人无功,圣人无名。

  尧让天下于许由,曰:“日月出矣,而爝火不息,其于光也,不亦难乎!时雨降矣,而犹浸灌,其于泽也,不亦劳乎!夫子立而天下治,而我犹尸之,吾自视缺然。请致天下。”许由曰:“子治天下,天下既已治也,而我犹代子,吾将为名乎?名者,实之宾也,吾将为宾乎?鹪鹩巢于深林,不过一枝;偃鼠饮河,不过满腹。归休乎君,予无所用天下为!庖人虽不治庖,尸祝不越樽俎而代之矣。”

  肩吾问于连叔曰:“吾闻言于接舆,大而无当,往而不返。吾惊怖其言犹河汉而无极也,大有径庭,不近人情焉。”连叔曰:“其言谓何哉?”“曰‘藐姑射之山,有神人居焉。肌肤若冰雪,淖约若处子;不食五谷,吸风饮露;乘云气,御飞龙,而游乎四海之外;其神凝,使物不疵疠而年谷熟。’吾以是狂而不信也。”连叔曰:“然,瞽者无以与乎文章之观,聋者无以与乎钟鼓之声。岂唯形骸有聋盲哉?夫知亦有之。是其言也,犹时女也。之人也,之德也,将旁礴万物以为一,世蕲乎乱,孰弊弊焉以天下为事!之人也,物莫之伤,大浸稽天而不溺,大旱金石流、土山焦而热。是其尘垢粃糠,将犹陶铸尧舜者也,孰肯以物为事!”

  宋人次章甫而适越,越人断发文身,无所用之。

  尧治天下之民,平海内之政。往见四子藐姑射之山,汾水之阳,杳然丧其天下焉。

  惠子谓庄子曰:“魏王贻我大瓠之种,我树之成而实五石。以盛水浆,其坚不能自举也。剖之以为瓢,则瓠落无所容。非不呺然大也,吾为其无用而掊之。”庄子曰:“夫子固拙于用大矣。宋人有善为不龟手之药者,世世以洴澼絖为事。客闻之,请买其方百金。聚族而谋之曰:‘我世世为洴澼絖,不过数金。今一朝而鬻技百金,请与之。’客得之,以说吴王。越有难,吴王使之将。冬,与越人水战,大败越人,裂地而封之。能不龟手一也,或以封,或不免于洴澼絖,则所用之异也。今子有五石之瓠,何不虑以为大樽而浮乎江湖,而忧其瓠落无所容?则夫子犹有蓬之心也夫!”

  惠子谓庄子曰:“吾有大树,人谓之樗。其大本臃肿而不中绳墨,其小枝卷曲而不中规矩。立之涂,匠者不顾。今子之言,大而无用,众所同去也。”庄子曰:“子独不见狸狌乎?卑身而伏,以候敖者;东西跳梁,不避高下;中于机辟,死于罔罟。今夫嫠牛,其大若垂天之云。此能为大矣,而不能执鼠。今子有大树,患其无用,何不树之于无何有之乡,广莫之野,彷徨乎无为其侧,逍遥乎寝卧其下。不夭斤斧,物无害者,无所可用,安所困苦哉!

MPLS技术研究及应用 一月 19, 2005

Posted by wansion in 技术.
add a comment

摘要:本文对MPLS技术进行了全面介绍,指出MPLS技术将发展成为运营商全国骨干网及各城域网的核心技术,同时简要介绍了MPLS技术在中国铁通IP骨干网络中的应用。

  关键词:MPLS VPN TE

  MPLS(多协议标签交换)是一种可提供高性价比和多业务能力的交换技术, 它解决了传统IP分组交换的局限性,在业界受到了广泛的重视,并在中国网通、中国铁通全国骨干网等网络建设中得到了实践部署。采用MPLS技术可以提供灵活的流量工程、虚拟专网等业务,同时,MPLS也是能够完成涉及多层网络集成控制与管理的技术。

1.MPLS概述

1.1、MPLS的基本原理

  MPLS是一种第三层路由结合第二层属性的交换技术,引入了基于标签的机制,它把路由选择和数据转发分开,由标签来规定一个分组通过网络的路径。MPLS网络由核心部分的标签交换路由器(LSR)、边缘部分的标签边缘路由器(LER)组成。LSR的作用可以看作是ATM交换机与传统路由器的结合,由控制单元和交换单元组成;LER的作用是分析IP包头,用于决定相应的传送级别和标签交换路径(LSP)。标签交换的工作过程可概括为以下3个步骤:

(1)由LDP(标签分布协议)和传统路由协议(OSPF、IS-IS等)一起,在LSR中建立路由表和标签映射表;

(2)LER接收IP包,完成第三层功能,并给IP包加上标签;在MPLS出口的LER上,将分组中的标签去掉后继续进行转发;

(3)LSR对分组不再进行任何第三层处理,只是依据分组上的标签通过交换单元对其进行转发。

整个操作过程如图1:

 

图1

  IETF标准文档中定义的MPLS包头是插入在传统的第二层数据链路层包头和第三层IP包头之间的一个32位的字段,如图2所示:

图2

Label字段:20位,标签字段。

EXP:3位,实验字段。

S字段:1位,堆栈(Stack)字段。

TTL字段:8位,生存时间字段。

1.2、MPLS信令方式

  目前MPLS实现信令的方式可分为两类,一类是LDP/CR-LDP(Label Dispatch Protocol, Constrain based Routing Label Dispatch Protocol),源于ATM网络的思想。CR-LDP和LDP是同一个协议,CR-LDP是LDP的扩展,它使用与LDP相同的消息和机制,如对等发现、会话建立和保持、标签发布和错误处理。另外一类是RSVP,它基于传统的IP路由协议。RSVP和LDP/CR-LDP是两种不同的协议,它们在协议特性上存在不同,有不同的消息集和信令处理规程。从协议可靠性上来看,LDP/CR-LDP是基于TCP的,当发生传输丢包时,利用TCP协议提供简单的错误指示,实现快速响应和恢复。而RSVP只是传送IP包。由于缺乏可靠的传输机制,RSVP无法保证快速的失败通知。从网络可扩展性上看,LDP较RSVP更有优势,一般电信级网络中尤其是ATM网络中,应采用MPLS/LDP。ITU-T倾向于在骨干网中采用CR-LDP。 目前所有支持MPLS功能的路由设置都同时支持CR-LDP和RSVP两种MPLS的信令协议。

1.3、MPLS的网络构成

  MPLS网络由标签边缘路由器(LER)和标签交换路由器(LSR)组成。在LSR内,MPLS控制模块以IP功能为中心,转发模块基于标签交换算法,并通过标签分配协议(LDP)在节点间完成标签信息以及相关信令的发送。值得注意的是,LDP信令以及标签绑定信息只在MPLS相邻节点间传递。LSR之间或ISR与LER之间依然需要运行标准的路由协议,并由此获得拓扑信息。通过这些信息LSR可以明确选取报文的下一跳并可最终建立特定的标签交换路径(LSP)。MPLS使用控制驱动模型,即基于拓扑驱动方式对用于建立LSP的标签绑定信息的分配及转发进行初始化。LSP属于单向传输路径,因而全双工业务需要两条LSP,每条LSP负责一个方向上的业务。

1.4、MPLS的核心技术LDP

  MPLS通过简单的核心机制来提供丰富的标签分配及相关处理功能。构成MPLS协议框架的主要元素有标签分配协议(LDP),标签映射表(LIB)和转发信息库(FIB),其中LIB和FIB分别为存储标签绑定信息和相应的标签转发信息的数据库。为了能够在MPLS域内明确定义、分配标签,同时使用网络内各元素充分理解其标签含义,LDP提供一套标准的信令机制用于有效地实现标签的分配与转发功能。LDP基于原有的网络层路由协议构建标签信息库,并根据网络拓扑结构,在MPLS域边缘节点(即入节点与出节点)之间建立LSP。LDP信令位于TCP/UDP之上,它通过TCP层保证信令消息可靠传输,同时基于UDP传送发现消息。LDP信令传输使用的TCP和UDP知名端口号均为646。相邻的LSR之间必须建立一条非MPLS连接链路作为信令通道,用于传送LDP信令报文。

1.5、MPLS的主要技术特点

(1)流量工程

  传统IP网络一旦为一个IP包选择了一条路径,则不管这条链路是否拥塞,IP包都会沿着这条路径传送,这样就会造成整个网络在某处资源过度利用,而另外一些地方网络资源闲置不用,MPLS可以控制IP包在网络中所走过的路径,这样可以避免IP包在网络中的盲目行为,避免业务流向已经拥塞的节点,实现网络资源的合理利用。

(2)负载均衡

  MPLS可以使用两条和多条LSP来承载同一个用户的IP业务流,合理地将用户业务流分摊在这些LSP之间。

(3)路径备份

  可以配置两条LSP,一条处于激活状态,另外一条处于备份状态,一旦主LSP出现故障,业务立刻导向备份的LSP,直到主LSP从故障中恢复,业务再从备份的LSP切回到主LSP。

(4)故障恢复

  当一条已经建立的LSP在某一点出现故障时,故障点的MPLS会向上游发送Notification消息,通知上游LER重新建立一条LSP来替代这条出现故障的LSP。上游LER就会重新发出Request消息建立另外一条LSP来保证用户业务的连续性。

(5)路径优先级及碰撞

  在网络资源匮乏的时候,应保证优先级高的业务优先使用网络资源。MPLS通过设置LSP的建立优先级和保持优先级来实现的。每条LSP有n个建立优先级和m个保持优先级。优先级高的LSP先建立,并且如果某条LSP建立时,网络资源匮乏,而它的建立优先级又高于另外一条已经建立的LSP的保持优先级,那么它可以将已经建立的那条LSP断开,让出网络资源供它使用。

1.6、MPLS QoS

  有两种方法用以MPLS流中指示服务类别。一种是IP Precedence,可以指出8种服务类别。它被拷贝到MPLS头中的CoS字段,典型应用是在核心路由器。在另一种方式中,MPLS可用不同组的标签指定服务类别,交换机可自动获知流量需要按优先级排队。目前,MPLS支持最多8种服务类别,编码与IP Precedence相同。这一数量不久将增加,原因是标签的数量多于IP前导的服务类别。采用标签分类后实际的服务类别数量是无限的。

2、基于MPLS的VPN技术

  VPN被一致认可为网络运营商的核心应用。网络运营商经常面临的挑战是商业用户需要将他们建立的网络通过VPN扩展到分支机构或外部用户网。这些基于IP的主流应用要求网络的特殊处理,包括私密性,服务质量以及any-to-any的连通性。网络运营商的VPN业务必须具备高度的可扩展性,高性价比并可适应广泛的用户需求。

2.1 基本原理

  目前基于MPLS的VPN方案中,以RFC 2547中规定的BGP/MPLS VPN得到了大多数厂家的支持,如Cisco,Juniper等。BGP/MPLS VPN概念中,把整个网络中的路由器分为三类:用户边缘路由器(CE)、运营商边缘路由器(PE)和运营商骨干路由器(P);其中,PE充当IP VPN接入路由器。由于BGP/MPLS VPN采用PE之间通过扩展后的BGP协议(MP-BGP)来承载VPN成员关系和VPN网络可达性,所以使MPLS VPN网络具有良好的扩展性、灵活性和可靠性。

MPLS VPN的工作过程如图3:

图3

  (1) CE到PE间通过IGP路由或BGP将用户网络中的路由信息通知运营商路由器(PE),在PE上有对应于每个VPN的虚拟路由表(VRF),类似有一台独立的路由器与CE进行连接。

  (2)PE之间采用MP-BGP传送VPN内的路由信息以及相应的标签(VPN的标签,以下简称为内层标签),而在PE与P路由器之间则采用传统的IGP协议相互学习路由信息,采用LDP协议进行路由信息与标签(用于MPLS标签转发,以下称为外层标签)的绑定。到此时,CE,PE以及P路由器中基本的网络拓扑以及路由信息已经形成。PE路由器拥有了骨干网络的路由信息以及每一个VPN的路由信息(VRF)。

  (3)当属于某一VPN用户端路由器(CE)有数据进入时,在CE与PE连接的接口上可以识别出该CE属于哪一个VPN,进而到该VPN的VRF路由表中去读取下一跳的地址信息,同时,在前传的数据包中打上VPN标签(内层标签)。下一跳地址为与该PE作Peer的PE的地址,为了到达这个目的端的PE,在起始端PE中需读取MPLS骨干网络的路由信息,从而得到下一个P路由器的地址,同时采用LDP在用户前传数据包中打上用于MPLS标签交换的标签(外层标签)。

  (4)在MPLS骨干网络中,初始PE之后的P均只读取外层标签的信息来决定下一跳,因此骨干网络中只是简单的标签交换。

  (5)在达到目的端PE之前的最后一个P路由器时,将把外层标签去掉,读取内层标签,找到VPN,并送到相关的接口上,进而将数据传送到VPN的目的地址处

  (6)P路由器是MPLS LSR。P路由器完全依据MPLS的标签来作出转发决定。由于P路由器完全不需要读取原始的数据包信息来作出转发决定,P路由器不需要拥有VPN的路由信息。因此P只需要参与骨干IGP的路由,不需要参加MP-BGP的路由。

  从MPLS VPN工作过程可见,MPLS VPN丝毫不改变CE和PE原有的配置,一旦有新的CE加入到网络时,只需在PE上作简单配置,其余的改动信息由BGP自动通知到CE和P。

2.2 主要优点

(1)提供一个可快速部署实施增值IP业务的平台,包括内部网、外部网、话音、多媒体及网络商务。

(2)通过限制VPN路由信息的传播,仅在VPN成员内部并采用MPLS前转,可提供与第二层VPN相同的私密性及安全性。

(3)提供与用户内部网的无缝集成。

(4)高扩展性,每个网络运营商可以设定数十万VPN,每个VPN可有数千个现场。

(5)提供IP业务类别,支持VPN内部多级别业务,VPN间的优先级,灵活的服务级别选定。

(6)提供方便的VPN成员管理及新VPN创建功能以利于业务的快速实施。

3、MPLS技术的实际应用

  中国铁通IP骨干网全面采用MPLS技术进行构架,它采用了Cisco 公司的12000系列及7000系列的高端路由器组建。

  通过在全国各大城市部署专用MPLS VPN路由器(PE),中国铁通IP骨干网可在全国范围内提供的MPLS VPN 业务。这种结构可提供方便的演进策略,使铁通可以根据自己的计划及客户的需求逐步引入VPN业务。将来更多的MPLS VPN 功能会要求更新的软件版本,采用专用VPN路由器后,这些软件的更新都不会影响其它路由器。

  采用 MPLS VPN的网络,所有PE路由器运行IBGP以交换VPN信息,包括 VPN-IP地址、路由目标(RT)、下一跳和标记,这就要求所有PE间的全网状IBGP连接,这就存在N2问题不便管理,通过路由反射(RRs)技术可满足这个要求。中国铁通IP骨干网采用专用VPN-RR,这种方式可带来以下优势:

(1)只有PE需要与VPN-RR对应,这样可使VPN-RR有更好的扩展性。

(2)骨干网的拓扑变化不会影响VPN-RR,同时VPN内部需求的变化也不会影响骨干网中的RR。

(3)VPN-RR的部署非常灵活,在MPLS VPN 推广的初期,只配置少量VPN-RR。当网络规模变得非常大时,可以采用多RR组,每个RR组只对某个选定的MPLS VPN组提供服务。

4. MPLS发展前景

  MPLS作为网络的核心技术已经被大量运用到网络运营商的全国骨干网及各省市的城域网建设中,一些大型的园区网、企业网甚至也将MPLS技术用于组建VPN网络等应用中。

  随着光波长路由技术的进一步发展,以及标准化工作的不断深入,光波长路由器间交换控制信息和建立光通路所用的协议MPλS(多协议波长交换)将逐渐可以与IP层面的MPLS(多协议标记交换)互通,从而为IP Over Optical网络建立起统一的、开放的、标准的控制平面提供了可能。

 

Linux LVM(逻辑卷管理器)总结 一月 18, 2005

Posted by wansion in 技术.
add a comment

一LVM的基本概念

LVM(logical volume manager) 逻辑卷管理器

其中主要分为这几个概念
1物理卷-简称PV
物理卷在逻辑卷管理器中属于最底层的,任何的逻辑卷和卷组都必需依靠物理卷来建立,物理卷可以是一个完整的硬盘,也可以是硬盘中的莫一个分区
2卷组-简称VG
卷组是建立在物理卷之上,一个卷组中可以包含一个物理卷组或者多个物理卷
3逻辑卷-简称LV
逻辑卷是建立在卷组之上的,卷组中的空间可以建立多个逻辑卷,并且逻辑卷可以随意从卷组的空闲空间中增减,逻辑卷可以属于一个卷组,也可以属于不同的多个卷组
4 物理区域-简称PE
物理区域是物理卷中最小的可分配储存单元
5 逻辑区域-简称-LE
逻辑区域是逻辑卷中可用于分配的最小储存单元
6 卷组描述区域-简称VGDA
用于描述物理卷,卷组,逻辑卷分配的所由信息

一个建立逻辑卷的流程如下
PV-VG-LV
物理卷包含卷组,卷组包含逻辑卷

二redhat9中使用逻辑卷管理器

1使用vgscan生成默认的配置文件,配置文件在/etc下的lvmconf 和lvmtab 2个文件

2 为逻辑卷管理器分配物理卷
我这里使用一个分区来作/dev/hda9
#fdisk hda
>t
>9
>8e (为LVM分区)
>w
重起
#pvcreate /dev/hda9
使用
#pvdisplay /dev/hda9查看是否建立
这样就建立好了物理卷

3在物理卷中建立卷组
#vgcreate vg0 /dev/hda9 其中vg0为要建立的卷组名程.这里的PE值我们使用默认的4M如需要增大可以使用-L 选想,记住一旦设定以后不可更改PE的值
#vgdisplay 查看是否建立成功

4 在卷组中建立逻辑卷
#lvcreate -L 100M -n vg1 vg0
其中-L 选项表示你想的逻辑卷大小,以后可以用命令增减 -n指定逻辑卷的名程和卷组的名程,也可以使用绝对路径来达到上述目的
#lvdisplay /dev/vg0/vg1
查看是否建立成功

5 为逻辑卷建立文件系统
#mkfs.ext3 /dev/vg0/vg0
然后挂载尝试是否建立成功
#mount /dev/vg0/vg1 /home
这样一个逻辑卷就基本成型了

三 逻辑卷的管理

1增加新的物理卷到卷组
当卷组中没有足够的空间分配给逻辑卷时,可以用给卷组增加物理卷的方法来增加卷组的空间
# vgextend vg0 /dev/hda8
这里注意hda8必需为LVM分区

2 扩充和减小逻辑卷的容量
#e2fsadm -L +100M /dev/vg0/vg1
-L 表示增减空间 +表示加 -表示建
#e2fsadm -L -100M /dev/vg0/vg1
这里要注意文件系统必需是ext2或ext3,而且需要卸载文件系统来执行,减小的时候需要知道剪掉空间的大小,不然会造成丢失
在reiserfs文件系统中未作测试

3 删除逻辑卷-卷组-物理卷 (必需按照先后顺序来执行删除)
#lvremove /dev/vg0/vg1 删除逻辑卷
#vgremove /dev/vg0 删除卷组
这里有一个问题,如果建立的卷组是活动的,他就不能删除
这里需要使用一个命令来是他变成固定的,以便删除
#vgchage -a n /dev/vg0
-a 参数指定卷组是否是活动的,n表示固定,y表示活动
#vgremove /dev/vg0
成功
物理卷的删除,移除/etc下的lvmconf 和lvmtab的两个文件,然后将分区转换为linux的就可以了

四 检查物理卷,卷组,逻辑卷

分别使用3个命令
1pvscan 检查物理卷
2vgscan 检查卷组
3lvscan 检查逻辑卷

这里只是介绍了逻辑卷管理器的基本建立和删除
应为今天时间有限,明天积蓄补充,希望此文对你有所帮助

明天内容
如何备份逻辑卷
如何用LVM作镜像卷
如何改变逻辑卷的属性

五 为逻辑卷作备份

1当你要备份你的卷组信息是,你就需要为卷组作备份,使用vgcfgbackup来备份
#vgcfgbackup vg0
备份的信息就是我们前面提到的VGDA备份到/etc/lwmconf/VG.conf

2当你的卷组信息意外丢失时,你可以使用这个文件来恢复你的卷组信息,前提是你要备份了的
#vgcfgrestor -n vg0 /dev/hda8
或者
#vgcfgrestor -f /etc/lvmconf/XXX.conf
重卷组vg0中恢复物理卷的VGDA信息 -n参数指定卷组的名程 -f 制定备份文件路径

3 恢复了物理卷及卷组的信息后我们还要恢复原来的建立的卷组和逻辑卷的设备文件
#vgmknods
这样如果物理卷,卷组,逻辑卷的信息丢失或者设备文件被破坏是就可以用来及时恢复

六 卷组的合并于拆分

当你想合并2个卷组时可以使用一下命令

这里有2个前提条件 1 卷组的PE(物理区域)大小相等 2 2个卷组必需是非活动的,这个可以用前面提到的vgchange命令来更改,做到以上2个条件就可以了

#vgmerge vg1 vg2
其中vg1为原始卷组,vg2是你想合并到到vg1的卷组

七 逻辑卷管理器管理命令(针对整个逻辑卷管理器,不针对物理卷,卷组,逻辑卷,是全局命令)注:全局命令都是以lvm开头的

1复位逻辑卷管理器(全局命令)
#lvmchange -R
这个命令用来复位逻辑卷管理器,也就是reset,该命令会使所由的卷组和逻辑卷处于非活动状态,也就是不能使用卷组和逻辑卷,所以使用时一定小心

2 查看逻辑卷管理器日志
# lvmsadc
命令可以直接输出到标准输出,也就是屏幕上,也可输出到文件中
# lvmsadc 1.txt
使用lvmsar 命令可一查看lvmsdac生成的日志文件
#lnmsar 1.txt
日志文件显示逻辑卷管理器中设备的读写统计信息
显示如下
total read :12 total write :222

3 利用LVM作逻辑卷的镜像卷或成快照卷
快照卷不需要和父卷大小一致,我们假设不需要保存太多的快照文件,可以设置成10M
#lvcreate -s -L 10M -n kuaizhao /dev/vg0/vg1
这样就从逻辑卷vg1中分出快照卷/dev/vg0/kuaizhao
这里又有一个问题,redhat9默认快照卷是以只读方式挂载的,只读方式的快照卷是不能和父卷同步数据的
这里需要使用lvchange命令使快照卷为读写方式挂载
#lvchange -p rw /dev/vg0/kuaizhao
然后
#mount /dev/vg0/vg1 /home
#mount /dev/vg0/kuaizhao /opt
目录随便,我这里只是测试
#cd /home
#touch test
#cd /opt
#ls
恭喜你可以看到文件数据已经同步了
注:如快照卷不能容纳超过自身设置的容量时,将被LVM管理器自动删除
解决的方法:
1及时清理不必要的快照文件
2 设置逻辑快照卷和父逻辑卷大小一致

Linux下双网卡绑定技术实现负载均衡和失效保护 一月 17, 2005

Posted by wansion in 技术.
add a comment

Linux下双网卡绑定技术实现负载均衡和失效保护
cgweb
保持服务器的高可用性是企业级 IT 环境的重要因素。其中最重要的一点是服务器网络连接的高可用性。网卡(NIC)绑定技术有助于保证高可用性特性并提供其它优势以提高网络性能。
我们在这介绍的Linux双网卡绑定实现就是使用两块网卡虚拟成为一块网卡,这个聚合起来的设备看起来是一个单独的以太网接口设备,通俗点讲就是两块网卡具有相同的IP地址而并行链接聚合成一个逻辑链路工作。其实这项技术在Sun和Cisco中早已存在,被称为Trunking和Etherchannel技术,在Linux的2.4.x的内核中也采用这这种技术,被称为bonding。bonding技术的最早应用是在集群——beowulf上,为了提高集群节点间的数据传输而设计的。下面我们讨论一下bonding 的原理,什么是bonding需要从网卡的混杂(promisc)模式说起。我们知道,在正常情况下,网卡只接收目的硬件地址(MAC Address)是自身Mac的以太网帧,对于别的数据帧都滤掉,以减轻驱动程序的负担。但是网卡也支持另外一种被称为混杂promisc的模式,可以接收网络上所有的帧,比如说tcpdump,就是运行在这个模式下。bonding也运行在这个模式下,而且修改了驱动程序中的mac地址,将两块网卡的Mac地址改成相同,可以接收特定mac的数据帧。然后把相应的数据帧传送给bond驱动程序处理。
说了半天理论,其实配置很简单,一共四个步骤:
实验的操作系统是Redhat Linux Enterprise 3.0
绑定的前提条件:芯片组型号相同,而且网卡应该具备自己独立的BIOS芯片

双网卡邦定的拓朴图(见下图)

1.编辑虚拟网络接口配置文件,指定网卡IP
vi /etc/sysconfig/ network-scripts/ ifcfg-bond0
[root@rhas-13 root]# cp /etc/sysconfig/network-scripts/ifcfg-eth0 ifcfg-bond0
2 #vi ifcfg-bond0
将第一行改成 DEVICE=bond0
# cat ifcfg-bond0
DEVICE=bond0
BOOTPROTO=static
IPADDR=172.31.0.13
NETMASK=255.255.252.0
BROADCAST=172.31.3.254
ONBOOT=yes
TYPE=Ethernet
这里要主意,不要指定单个网卡的IP 地址、子网掩码或网卡 ID。将上述信息指定到虚拟适配器(bonding)中即可。
[root@rhas-13 network-scripts]# cat ifcfg-eth0
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=dhcp
[root@rhas-13 network-scripts]# cat ifcfg-eth1
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=dhcp

3 # vi /etc/modules.conf
编辑 /etc/modules.conf 文件,加入如下一行内容,以使系统在启动时加载bonding模块,对外虚拟网络接口设备为 bond0
 
加入下列两行
alias bond0 bonding
options bond0 miimon=100 mode=1
说明:miimon是用来进行链路监测的。 比如:miimon=100,那么系统每100ms监测一次链路连接状态,如果有一条线路不通就转入另一条线路;mode的值表示工作模式,他共有0,1,2,3四种模式,常用的为0,1两种。
mode=0表示load balancing (round-robin)为负载均衡方式,两块网卡都工作。
mode=1表示fault-tolerance (active-backup)提供冗余功能,工作方式是主备的工作方式,也就是说默认情况下只有一块网卡工作,另一块做备份.
bonding只能提供链路监测,即从主机到交换机的链路是否接通。如果只是交换机对外的链路down掉了,而交换机本身并没有故障,那么bonding会认为链路没有问题而继续使用
4 # vi /etc/rc.d/rc.local
加入两行
ifenslave bond0 eth0 eth1
route add -net 172.31.3.254 netmask 255.255.255.0 bond0

到这时已经配置完毕重新启动机器.
重启会看见以下信息就表示配置成功了
…………….
Bringing up interface bond0 OK
Bringing up interface eth0 OK
Bringing up interface eth1 OK
…………….

下面我们讨论以下mode分别为0,1时的情况

mode=1工作在主备模式下,这时eth1作为备份网卡是no arp的
[root@rhas-13 network-scripts]# ifconfig 验证网卡的配置信息
bond0 Link encap:Ethernet HWaddr 00:0E:7F:25:D9:8B
inet addr:172.31.0.13 Bcast:172.31.3.255 Mask:255.255.252.0
UP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metric:1
RX packets:18495 errors:0 dropped:0 overruns:0 frame:0
TX packets:480 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1587253 (1.5 Mb) TX bytes:89642 (87.5 Kb)

eth0 Link encap:Ethernet HWaddr 00:0E:7F:25:D9:8B
inet addr:172.31.0.13 Bcast:172.31.3.255 Mask:255.255.252.0
UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
RX packets:9572 errors:0 dropped:0 overruns:0 frame:0
TX packets:480 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:833514 (813.9 Kb) TX bytes:89642 (87.5 Kb)
Interrupt:11

eth1 Link encap:Ethernet HWaddr 00:0E:7F:25:D9:8B
inet addr:172.31.0.13 Bcast:172.31.3.255 Mask:255.255.252.0
UP BROADCAST RUNNING NOARP SLAVE MULTICAST MTU:1500 Metric:1
RX packets:8923 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:753739 (736.0 Kb) TX bytes:0 (0.0 b)
Interrupt:15
那也就是说在主备模式下,当一个网络接口失效时(例如主交换机掉电等),不回出现网络中断,系统会按照cat /etc/rc.d/rc.local里指定网卡的顺序工作,机器仍能对外服务,起到了失效保护的功能.

在mode=0 负载均衡工作模式,他能提供两倍的带宽,下我们来看一下网卡的配置信息
[root@rhas-13 root]# ifconfig
bond0 Link encap:Ethernet HWaddr 00:0E:7F:25:D9:8B
inet addr:172.31.0.13 Bcast:172.31.3.255 Mask:255.255.252.0
UP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metric:1
RX packets:2817 errors:0 dropped:0 overruns:0 frame:0
TX packets:95 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:226957 (221.6 Kb) TX bytes:15266 (14.9 Kb)

eth0 Link encap:Ethernet HWaddr 00:0E:7F:25:D9:8B
inet addr:172.31.0.13 Bcast:172.31.3.255 Mask:255.255.252.0
UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
RX packets:1406 errors:0 dropped:0 overruns:0 frame:0
TX packets:48 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:113967 (111.2 Kb) TX bytes:7268 (7.0 Kb)
Interrupt:11

eth1 Link encap:Ethernet HWaddr 00:0E:7F:25:D9:8B
inet addr:172.31.0.13 Bcast:172.31.3.255 Mask:255.255.252.0
UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
RX packets:1411 errors:0 dropped:0 overruns:0 frame:0
TX packets:47 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:112990 (110.3 Kb) TX bytes:7998 (7.8 Kb)
Interrupt:15

在这种情况下出现一块网卡失效,仅仅会是服务器出口带宽下降,也不会影响网络使用.

通过查看bond0的工作状态查询能详细的掌握bonding的工作状态
[root@rhas-13 bonding]# cat /proc/net/bonding/bond0
bonding.c:v2.4.1 (September 15, 2003)

Bonding Mode: load balancing (round-robin)
MII Status: up
MII Polling Interval (ms): 0
Up Delay (ms): 0
Down Delay (ms): 0
Multicast Mode: all slaves

Slave Interface: eth1
MII Status: up
Link Failure Count: 0
Permanent HW addr: 00:0e:7f:25:d9:8a

Slave Interface: eth0
MII Status: up
Link Failure Count: 0
Permanent HW addr: 00:0e:7f:25:d9:8b

Linux下通过网卡邦定技术既增加了服务器的可靠性,又增加了可用网络带宽,为用户提供不间断的关键服务。用以上方法均在redhat的多个版本测试成功,而且效果良好.心动不如行动,赶快一试吧!
参考文档:
/usr/share/doc/kernel-doc-2.4.21/networking/bonding.txt

conntrack 表满的处理方法 一月 17, 2005

Posted by wansion in 技术.
add a comment

前段时间配置的iptables+squid做的proxy server ,一直工作正常。今天我上控制台上发现
Jun 18 12:43:36 red-hat kernel: ip_conntrack: table full, dropping packet.
Jun 18 12:49:51 red-hat kernel: ip_conntrack: table full, dropping packet.
Jun 18 12:50:57 red-hat kernel: ip_conntrack: table full, dropping packet.
Jun 18 12:57:38 red-hat kernel: ip_conntrack: table full, dropping packet.

IP_conntrack表示连接跟踪数据库(conntrack database),代表NAT机器跟踪连接的数目,连接跟踪表能容纳多少记录是被一个变量控制的,它可由内核中的ip- sysctl函数设置。每一个跟踪连接表会占用350字节的内核存储空间,时间一长就会把默认的空间填满,那么默认空间时多少?我以redhat为例在内存为64MB的机器上时4096,内存为128MB是 8192,内存为256MB是16376,那末就能在/proc/sys/net/ipv4/ip_conntrack_max里查看、设置。
例如:增加到81920,可以用以下命令:
echo "81920" > /proc/sys/net/ipv4/ip_conntrack_max

那样设置是不会保存的,要重启后保存可以在/etc/sysctl.conf中加:
net.ipv4.ip_conntract_max =81920
按照此方法改变后一切正常,要是在满了可以加大其值.

BIND域名服务器安全增强 一月 11, 2005

Posted by wansion in 技术.
add a comment

为什么要写这篇文章?第一个原因当然就是前段时间出现的BIND 8.2.x TSIG
安全漏洞(还有去年公布的BIND 8.1.x/8.2.x NXT安全漏洞),直到目前为止,国
内也还没有关于DNS服务安全配置方面的较为完整的文章(即使是国外也不多见)。
另一个原因是经过调查发现,几乎任何一种UNIX家族的操作系统,都使用BIND软件
作为其DNS的唯一实现,比起其它诸如ftp/http/pop3等网络服务有各种各样的发行
版本,所以一旦被发现有安全问题,则受影响的主机之多也是其它漏洞很难比拟的。
所以觉得应该写一份针对BIND DNS服务软件的安全配置资料,充分利用BIND自身已
经实现的保护功能,加强BIND安全性,从而能抵御目前已知的BIND安全漏洞,并使
潜在的安全漏洞所可能对服务器造成的影响尽可能地减少。

配置环境:
FreeBSD 4.1-RELEASE
BIND 8.2.3

—[[ 启动安全选项 ]]—————————————————

  named进程启动选项:

-r:关闭域名服务器的递归查询功能(缺省为打开)。该选项可在配置文件的
options中使用"recursion"选项覆盖。

-u <user_name>和-g <group_name>:定义域名服务器运行时所使用的UID和GID。
这用于丢弃启动时所需要的root特权。

-t <directory>:指定当服务器进程处理完命令行参数后所要chroot()的目录。

—[[ 配置文件中的安全选项 ]]——————————————-

1、假如希望记录安全事件到文件中,但同时还希望保持原有的日志模式,可以添
加以下内容:

logging {
channel my_security_channel {
file "my_security_file.log" versions 3 size 20m;
severity info;
};
category security {
my_security_channel;
default_syslog; default_debug; };
}

  其中my_security_channel是用户自定义的channel名字,my_security_file.log
是安全事件日志文件,可包含全路径(否则是以named进程工作目录为当前目录)。
安全事件日志文件名为my_security_file.log,保存三个最近的备份
(my_security_file.log0、my_security_file.log1、my_security_file.log2),
日志文件的最大容量为20MB(如果达到或超这一数值,直到该文件被再次打开前,
将不再记录任何日志消息。缺省(省略)时是没有大小限制。)

2、在options节中增加自定义的BIND版本信息,可隐藏BIND服务器的真正版本号。

version "Who knows?";
// version 9.9.9;

  此时如果通过DNS服务查询BIND版本号时,返回的信息就是"Who knows?"。^_^

3、要禁止DNS域名递归查询,在options(或特定的zone区域)节中增加:

recursion no;
fetch-glue no;

4、要增加出站查询请求的ID值的随机性,在options节中增加:

use-id-pool yes;

  则服务器将跟踪其出站查询ID值以避免出现重复,并增加随机性。注意这将会
使服务器多占用超过128KB内存。(缺省值为no)

5、要限制对DNS服务器进行域名查询的主机,在options(或特定的zone区域)节
中增加:

allow-query { <address_match_list> };

address_match_list是允许进行域名查询的主机IP列表,如"1.2.3.4; 5.6.7/24;"。

6、要限制对DNS服务器进行域名递归查询的主机,在options(或特定的zone区域)
节中增加:

allow-recursion { <address_match_list> };

address_match_list是允许进行域名递归查询的主机IP列表,如
"1.2.3.4; 5.6.7/24;"。

7、要指定允许哪些主机向本DNS服务器提交动态DNS更新,在options(或特定的
zone区域)节中增加:

allow-update { <address_match_list> };

address_match_list是允许向本DNS服务器提交动态DNS更新的主机IP列表,如
"1.2.3.4; 5.6.7/24;"。
缺省时为拒绝所有主机的提交。

8、要限制对DNS服务器进行区域记录传输的主机,在options(或特定的zone区域)
节中增加:

allow-transfer { <address_match_list> };

address_match_list是允许进行区域记录传输的主机IP列表,如"1.2.3.4;
5.6.7/24;"。

9、要指定不接受哪些服务器的区域记录传输请求,在options(或特定的zone区域
)节中增加:

blackhole { <address_match_list> };

address_match_list是不接受区域记录传输请求的主机IP列表,如"1.2.3.4;
5.6.7/24;"。

10、在options节中还有一些资源限制选项,不同用户可根据实际情况灵活设置,
但一定要注意不当的设置会损失DNS服务的性能。

coresize <size_spec> ; // core dump的最大值。缺省为default。

datasize <size_spec> ; // 服务器所使用的最大数据段内存。缺省为
default。

files <size_spec> ; // 服务器能同时打开的最大文件数。缺省为
// unlimited(不限制)。
// (注意,并非所有操作系统都支持这一选项。)

max-ixfr-log-size <size_spec> ; // (目前版本暂不使用。)限制增量区域

录传输时会话日志的大小。

stacksize <size_spec> ; // 服务器所使用的最大堆栈段内存。缺省为
default。

11、定义ACL地址名(即用于上面的<address_match_list>)。注意,如果要使用
这里定义的列表名,必须先定义,后使用!
例如:

acl intranet {
192.168/16;
};
acl partner {
!172.16.0.1;
172.16/12; // 除172.168.0.1外172.16.0.0/12网络中其它主机
};

BIND已内置以下四个ACL:

all // 允许所有主机
none // 禁止所有主机
localhost // 本机的所有网络接口
localnets // 本机所在网络

12、BIND域名服务器的一个有用功能(慎用!!!):

控制管理接口controls节语法格式:

controls {
[ inet ip_addr
port ip_port
allow { <address_match_list>; }; ]
[ unix path_name
perm number
owner number
group number; ]
};

controls节提供管理接口。如果使用第一种(inet),则在指定IP(接口)和端
口上监听,但只允许在allow中限定允许与其连接的IP地址列表。如果使用第二种
(unix),则产生一个FIFO的控制管道,权限、属主和用户组都由其参数限定。

—[[ 通过TSIG对区域记录传输进行认证和校验 ]]—————————

首先请确保你的BIND域名服务器软件已更新到最新版本!
在BIND 8.2+中,能够使用事务签名(Transaction Signatures,即TSIG!)
来对区域记录数据进行验证和校验。它要求在主域名服务器和辅助域名服务器上配
置好加密密钥,并通知服务器使用该密钥与其它域名服务器通讯。(注意,TSIG的
使用要求域名服务器必须进行时钟同步!)

A、如果需要用TSIG签名来进行安全的DNS数据库手工更新,具体操作步骤很简单:

1、使用BIND自带的dnskeygen工具生成TSIG密钥。

# dnskeygen -H 128 -h -n tsig-key.

则会生成两个文件。’Ktsig-key.+157+00000.key’内容如下:

tsig-key. IN KEY 513 3 157 awwLOtRfpGE+rRKF2+DEiw==

‘Kvip-key.+157+00000.private’内容如下:

Private-key-format: v1.2 Algorithm: 157 (HMAC) Key: awwLOtRfpGE+rRKF2+DEiw==

注意这些密钥都已经过BASE64编码了。将它们放到本地域名服务器的配置文件中。例如

key tsig-key. { algorithm hmac-md5; secret "awwLOtRfpGE+rRKF2+DEiw=="; };

zone "dns.nsfocus.com" {


allow-update { key tsig-key. ; };
}

记住要重启named守护进程。

  然后将这两个密钥文件复制到客户端系统(或辅助域名服务器),例如为/var
/named/tsig目录。最后运行如下命令即可:

nsupdate -k /var/named/tsig:tsig-key.

B、如果需要对区域记录传输(自动或手工)进行TSIG签名,则:

1、用dnskeygen生成TSIG密钥,方法同上。

2、主域名服务器配置文件的内容(节选)如下:

// 定义认证的方法和共享密钥
key master-slave {
algorithm hmac-md5;
secret "mZiMNOUYQPMNwsDzrX2ENw==";
};
// 定义辅助域名服务器的一些特性
server 192.168.8.18 {
transfer-format many-answers;
keys { master-slave; };
};
// 区域记录定义
zone "nsfocus.com" {
type master;
file db.nsfocus.com;
allow-transfer { 192.168.8.18; };
};

3、辅助域名服务器配置文件的内容(节选)如下:

// 定义认证的方法和共享密钥
key master-slave {
algorithm hmac-md5;
secret "mZiMNOUYQPMNwsDzrX2ENw==";
};
// 定义与主域名服务器通讯时的一些特性
server 192.168.8.19 {
transfer-format many-answers;
keys { master-slave; };
};
// 区域记录定义
zone "nsfocus.com" {
type slave;
file "bak.db.nsfocus.com";
masters { 192.168.8.19; };
allow-transfer { none; };
};

—[[ 实施DNSSec功能 ]]————————————————-

说实在的,我一直在考虑需不需要在目前的版本中实施DNSSec功能。因为虽然ISC
早已在BIND 8.1.x版本后增加了DNSSec的实现,但实际的应用却不常见,而且去年
公布的NXT远程安全漏洞和DNSSec有关(实际上NXT就属于DNSSec实现的功能之一)。
最后我决定在本文不讨论如何实施DNSSec安全功能。
但不可否认,DNSSec确实是一项很好的安全技术,它通过加密DNS数据来提高了DNS
服务的安全性。主加密密钥用于对第一级域名的加密密钥进行加密签字,第一级域
名(.com, .cn等)密钥用于对自身数据及其子域名密钥进行加密签名,以此类推。
例如,nsfocus.com的域名服务器由.com域密钥签名,nsfocus.com域密钥则用于对
www.nsfocus.com域名进行加密签名。

—[[ 实现BIND的chroot ]]—————

(以FreeBSD系统平台为例)

步骤一:BIND-8的最新源代码版本获取和安装

请到ISC FTP站点下载BIND的最新版本。
BIND 8:http://www.isc.org/products/BIND/bind8.html
BIND 9:http://www.isc.org/products/BIND/bind9.html

步骤二:构造静态(static)的named和named-xfer二进制文件

在编译和安装后,你需要构造可执行文件的静态链接版本。只要对%BIND%/src
/port/freebsd目录下的Makefile.set文件稍加修改后即可。
  修改文件内容:

‘CDEBUG= -O2 -g’

替换为:

‘CDEBUG= -O2 -static’

切换到BIND的源代码路径,执行"make clean"和"make"命令。在下面的步骤中
将会把这些文件复制到chroot()目录下。

# cd /tmp/bind/src
# make clean ; make

本步骤构造的静态链接执行文件在运行时无需装载动态链接库。在chroot()环
境中,这种“独立”可执行文件可避免出现缺少链接库文件问题。它在chroot()环
境中无需任何静态链接库,可使服务配置简单化。其它所有的网络守护进程也可以
编译和使用这种静态链接版本。

步骤三:构造BIND目录

为chroot()环境构造BIND目录。这个目录将在chroot()环境中被BIND当作系统
根目录。在这里我使用/chroot/bind作为chroot后的根目录。

# cd /chroot/bind
# mkdir /chroot
# mkdir /chroot/dev
# mkdir /chroot/etc
# mkdir /chroot/etc/namedb
# mkdir /chroot/usr
# mkdir /chroot/usr/sbin
# mkdir /chroot/var
# mkdir /chroot/var/run

  需要复制以下文件到其下的相应子目录中,和进行一些必要的处理:

# cp /etc/namedb/named.conf /chroot/bind/etc/
# cp /etc/localtime /chroot/bind/etc/
# grep bind /etc/group > /chroot/bind/etc/group
# cp -R /etc/namedb/ /chroot/bind/etc/namedb/
# mknod /chroot/bind/dev/null c 2 2
# chmod 666 /chroot/bin/dev/null
# cp /tmp/bind/src/bin/named/named /chroot/bind/usr/sbin/
# cp /tmp/bind/src/bin/named-xfer/named-xfer /chroot/bind/

另外还可根据需要指定日志记录目录(如/var/log),请参考下面的章节或
named.conf的手册页。

步骤四:添加bind用户和组(如果没有的话。如果已经有bind或named之类的用户
和组,请跳过本步骤。)

在/etc/passwd和/etc/group文件中添加bind用户和组。它们是DNS服务器运行
时的UID/GID。

此时,你可以到chroot环境中执行"chown -R bind.bind /chroot/bind/etc/
namedb"命令。这样当你向系统发送中断信号(kill -INT )时,named进程能够保存
服务器缓存和统计信息。如果该目录为root所有则named进程无法将输出写到目录
中,但不会影响named服务器功能。另一个选择是仅改变目录权限(使named用户具
有写权限),而属主仍然是root。这种方法也是可行的,但必须小心设置,确保其
它用户不会修改named记录!

*** 重要警告***
不要用一个已存在的UID/GID(如"nobody")运行named。记住,以chroot环境
中使用任何已存在的UID/GID都可能会影响到服务的安全性。必须养成在chroot环
境中为每一个守护进程提供独立的UID/GID的习惯。

步骤五:其它必要调整

  如果在named.conf中还指定了另外的目录和文件,也要相应地在chroot()环境
中(在本例中即/chroot/bind/目录)进行设置。

步骤六:调试

1、终止系统中原有的syslogd和named守护进程。

# killall syslogd named

2、用适当的参数重新启动syslogd守护进程。

# syslogd -s -p /chroot/bind/var/run/log

3、用适当参数重新启动named守护进程。

# /chroot/bind/named -u bind -g bind -t /chroot/bind

4、检查syslogd/named守护进程、监听端口是否正常,和/var/log/messages文件
中named进程启动时是否正常。

# ps auwx|grep syslogd
root 5896 0.0 1.7 896 508 ?? Ss 9:44PM 0:00.10 syslogd -s -p
/chroot/bind/var/run/log
# ps auwx|grep named
bind 5941 0.0 4.9 1652 1444 ?? Is 9:52PM 0:00.01
/chroot/bind/usr/sbin/named -u bind -g bind -t /chroot/bind
# netstat -an|grep 53
tcp4 0 0 127.0.0.1.53 *.* LISTEN
tcp4 0 0 192.168.8.19.53 *.* LISTEN
udp4 0 0 127.0.0.1.53 *.*
udp4 0 0 192.168.8.19.53 *.*

步骤七:修改系统启动脚本

  对于FreeBSD系统,在/etc/rc.conf文件中增加如下内容即可:

syslogd_enable="YES"
# 如果希望禁止向外发送日志,将-s换成-ss。
syslogd_flags="-s -p /chroot/bind/var/run/log"

named_enable="YES"
named_program="/chroot/bind/usr/sbin/named"
named_flags="-u bind -g bind -t /chroot/bind"

  注:如果在其它系统平台,如OpenBSD、Linux、Solaris,则可能会稍有不同。
主要是不同平台上的syslog实现不尽相同。例如对于OpenBSD和Linux系统,打开日
志别名socket的命令是"syslogd -a /chroot/bind/var/run/log",而Solaris的
syslogd守护进程则不支持别名。因此Solaris系统平台上的chroot需要通过另外的
方法实现,关于具体的实现过程我会在另外的文章中说明。

—[[ 结束语 ]]———————————————————

  安全增强配置的文章写完了,但并不是说只要你按本文提到的方法和技术实施
就能万无一失,高枕无忧了。其实以上设置对NXT和TSIG远程漏洞攻击并不没太多
的防御作用,充其量只不过是要编写更多的shellcode代码来突破chroot环境的限
制。即使用allow-query等极其严格地限制查询客户端(实际上在互联网上并不现
实),基于UDP协议的TSIG攻击技术也只需构造伪造IP地址的数据包即可绕过其限
制。
  所以,在对BIND(还有其它应用服务)进行安全增强配置的基础上,安全管理
员仍然需要密切关注最新的安全公告、安全补丁和安全技术,经常与专业的计算机
安全专家交流知识和经验,再辅以必要的安全产品和安全服务,才能更充分地保护
好自己的网络和计算机用户,抵御各种恶意攻击。

DNS正常查询中,什么时候会用TCP53,是否只有在区域传输过程中会用TCP,多谢 一月 11, 2005

Posted by wansion in 技术.
add a comment

呵呵,这个我知道,当客户端发出一个查询请求,名字服务器首先会返回一个udp的响应,如果该响应的TC(删减标志)为1,表明该响应超过了512字节,该响应被截断了,客户端就会用TCP重新发出这个查询请求,名字服务器会返回一个TCP的响应,当然了,主dns和辅dns在区域传输的时候肯定要用TCP了。

陪女友逛街完全手册 一月 7, 2005

Posted by wansion in Life.
1 comment so far

准备工作:

  1、随行物品

  A、太阳帽一顶--以备长时间高温工作之需

  B、墨镜一副--

  a、装酷

  b、可自由欣赏四周的“人文”景观而不被女友发现。注意:切莫流口水或有其它墨镜无法掩护之反应。

  c、在付款时可掩饰复杂的内心活动与激烈的思想斗争。

  C、劣质皮鞋一双(球鞋,布鞋,草鞋可根据时代背景与现实需要相应选用)--

  原因参考第3条。同时穿此物可向对方暗示自己对物质享受的立场与目前的经济状况。聪明的女友便会在购物场所选择观赏而非消费;富贵的女友更可能主动为你买一双新皮鞋以充面子顺带表示关心。此物的用意可谓深刻。

  D、雨伞一柄——

  a、参考第3条。

  b、伞的尺寸以只能遮一人为准,届时可最大限度地增加二人的亲密度,方便肢体交流。使用时可尽量使女友的衣衫淋湿少许……此中乐趣,只可意会不可言传)

  E、速效救心丸一瓶--

  女友试穿一套华服,笑吟吟:“亲爱的,这衣服真合身啊!”在你凑上去看标价时,请立即取出此装备。

  F、帐篷一个--

  使用方法参照第18条。

  2、取钱。注意事项:务必让女友知道你取过钱却不了解你取出金额的数量。

  3、密切关注天气预报,择晴转暴雨之日出行最佳。

  4、熟悉地形。重点掌握以下场所的分布:商场、鞋城、美容院、服装店、首饰行、电影院、公园、广场、银行、公厕、医院等。然后在有女友的朋友指导下制定行走路线(以安全、经济、高效为原则)。

  5、出发前做眼保健5遍,保证视力在1、5以上;服用洋参丸与醒脑冲剂,有条件者可吃一两只猴脑,保持精力充沛和反应敏捷。以上措施为保证第13条的有效实施。

  6、认真阅读《陪女友逛街完全手册》。

逛街要领:

  7、不可深入人群拥挤处,假如你女友符合以下条件中任何一条:

  A、美若天仙

  B、丑若榴莲

  C、动若脱兔,静若母猪

  D、动静皆若母猪

  E、心智不健全

  F、B+D+E

  8、不得随地大小便,属狗的同志例外。

  9、在对陌生美女抛媚眼之前,应先目测其身旁男友的身高、体重、爆发力、精神状态、病史、家庭背景、性取向……

  10、不得在红绿灯下接吻,以免造成交通阻塞或事故。

  11、设男方的身高=A 女方的身高=B

  行进中双方之间的距离=C 则应遵循以下推论

  当B>A,C=10*(B-A)

  当A>B,C=1/10*(A+B)

  当A=B,C<0

  12、迎面过来一位美女,须做熟视无睹状。机灵的女友此时会问:“你看这个女孩多漂亮。”

  参考对策:答曰:“跟你在一起,我眼里不会有第二个美女。”然后乘女友微微低头做娇羞状之机,用目光狠狠亵渎那美女一番。

  13、行进中保持精神高度集中,眼观六路,耳听八方。如发现经营珠宝、服装、化妆品、高档皮鞋等物品的场所,能绕行则绕行。

  14、若由于第5条完成不得力或外界不可抗力导致绕行失败,千万不可有懊丧或愤慨之表情及举动,要尽量使面部肌肉松弛、自然,以分泌少许迷人笑容为最佳状态。(注:若自知由于先天不足或营养不良等原因,分泌出的笑容有可能反应内心真实感受而形成苦笑或哭笑不得,以不分泌为最佳状态。)

  15、不可与女友共同进入珠宝店,假如双方尚无结婚的共同意思表示。不可与女友共同进入更衣室,假如双方尚无进入珠宝店的共同意思表示。

  16、当女友看上某化妆品时,参考对策:温情地抚摩其脸庞,柔声道:“亲爱的,你素面朝天,不施粉黛一样美若天仙……而一旦用了它反掩盖了你的清新。” 副作用:说完之后会产生违背了良心的感觉,并伴有呕吐的症状,一两天内不会消失。

  17、进入服装城之前,务必将钱包中90%资金转移至鞋垫之下。此工作亦可在出发前完成。

  18、当女友进试衣室时,请取出帐篷,是睡个好觉的时候了。

  19、若于夏天逛街,购买冷饮时需掌握以下要点:

  A、同样的价格,雪碧比可乐含二氧化碳略多,因此比较胀肚子,建议选择雪碧以延长使用寿命从而推迟下一次购买冷饮的时间;

  B、同样的一瓶冷饮,结冰的比不结冰的耐消耗,且更具去暑效果,因此易选择前者以减少财政支出;

  C、同一牌子的冷饮,建议观察出产日期,易选择已过期者,其副作用可直接影响消费者的食欲,从而有可能降低午餐的消费指数。

  20、返回途中,一定要含情脉脉地对女友说:“陪你逛街,是我一生难忘的回忆。”此话含义不同凡响,因为不论痛苦的还是美好的回忆,都是难忘的。而由于你是“含情脉脉”地说的,女友自然会理解成后者。:)

  最后,祝你在美人与金钱的夹缝中游刃有余。

Dns配置高级篇 一月 7, 2005

Posted by wansion in 技术.
add a comment

 
这里假设你已经独立或参考我的
《架设dns攻略》将dns服务器成功架设起来,并且dns已经能够正常运行了。

现在我们dns开始工作了,是不是我们的工作已经OK了呢?不,不,不,named.conf文件还有很多东西需要我们配置呢。

DNS的配置文件named.conf是有非常多的可选项的,这里只是介绍一点常用的配置。如果你觉得还想继续研究下去,那也不需要在网上到处找资料的,直接用“man named.conf”就可以得到一个非常非常详细的说明。

这里首先感谢我的同事yiming先生对服务器安全性的不懈研究,否则我们也不会经常安装、配置最新版本的DNS服务器了。而且,这个named.conf是他配置的。好了,言归正传,Follow me,我们继续。

1.Options 我们通过options可以定制一个性能更优、安全性更高的dns服务器。

Version “I am cpss”;

别人想探测我们dns版本,然后根据该版本的漏洞来攻击我们。休想!配置了这条命令后,别人再探测的版本后就是“I am cpss”了,呵呵。

Allow-transfer {192.168.1.1;192.168.1.4;};

如果没有配置这一条命令,任何人都可以通过nslookup工具来得到你域里面的zone文件,也就是说他得到了你的主机列表,然后再分析,再……。当然,slave dns需要你允许它能够传送,否则它就得不到master dns上的zone文件,也就没办法工作了。这里假设192.168.1.1和192.168.1.4是该dns服务器的slave服务器,在master服务器上配置了如上命令。

Listen-on{192.168.1.2;};

增加上这条命令,启动dns时就不会监听所有网络接口的53端口了,只监听指定网络接口的53端口。

Blackhole {hatenets;};

我们不想让某些网段使用我们的dns服务器,就用这条命令吧。不过还需要配置一个acl来定义匹配的网段,如下所示:

acl hatenets {

1.0.0.0/8;

2.0.0.0/8;

};
这两个网段的地址是无法使用我们的dns了。

2.logging 通过该选项,我们可以生成我们想要的日志。通过日志,我们可以更好地维护dns服务器。

Logging {

Channel syslog_info {

File “/var/log/bindall.log” versions 20 size 2m;

Print-category yes;

Print-time yes;

Severity notice;

};

category default {

syslog_info;

};

};
上例中我们建立了一个安全级别为notice的日志,dns的报错信息都会存放在“/var/log/bindall.log”日志文件了,分析该文件,我们就能轻松找出dns工作不正常的原因了。

Logging里面的安全级别很多,大家可以根据自己需要来制定一个或多个logging。下面是logging的语法:

logging {

[ channel channel_name {

( file path_name

[ versions ( number | unlimited ) ]

[ size size_spec ]

| syslog ( kern | user | mail | daemon | auth | syslog | lpr |

news | uucp | cron | authpriv | ftp |

local0 | local1 | local2 | local3 |

local4 | local5 | local6 | local7 )

| null );

[ severity ( critical | error | warning | notice |

info | debug [ level ] | dynamic ); ]

[ print-category yes_or_no; ]

[ print-severity yes_or_no; ]

[ print-time yes_or_no; ]

}; ]

[ category category_name {

channel_name; [ channel_name; … ]

}; ]

};

我们named.conf的样本

acl hatenets {

1.0.0.0/8;

2.0.0.0/8;

};

options {

files 10000;

# boot file for name server

#

directory "/var/named";

version "I am cpss";

notify no;

datasize 300m;

allow-transfer {192.168.1.1;

192.168.1.4;

};

blackhole { hatenets; };

interface-interval 0;

cleaning-interval 120;

listen-on {192.168.1.2;

};

statistics-interval 60;

logging {

channel syslog_query {

file "/var/log/bindquery.log" ;

severity notice;

};

channel syslog_info {

file "/var/log/bindall.log" versions 20 size 2m;

print-category yes;

print-time yes;

print-severity yes;

severity notice;

};

channel syslog_manitenance {

file "/var/log/bindmaint.log" versions 10 size 2m;

severity notice;

};

channel syslog_secu {

syslog local6;

severity info;

};

channel syslog_xfer {

file "/var/log/bindxfer.log" versions 20 size 2m;

print-category yes;

print-time yes;

print-severity yes;

severity notice;

};

channel syslog_os {

syslog local3;

severity info;

};

channel syslog_panic {

syslog local4;

severity info;

};

channel syslog_stat {

syslog local5;

severity info;

};

channel syslog_config {

file "/var/log/bind_config.log" versions 20 size 2m;

print-category yes;

print-time yes;

print-severity yes;

severity info;

};

category "xfer-in" {

syslog_xfer;

};

category default {

syslog_info;

};

category security {

syslog_secu;

};

category os {

syslog_os;

};

category panic {

syslog_panic;

};

category statistics {

syslog_stat;

};

category config {

syslog_config;

};

category maintenance {

syslog_manitenance;

};

category lame-servers {null; };

category cname {null; };

};

#

# type domain source host/file

#

zone "." {

type hint;

file "/var/named/named.ca";

};

zone "0.0.127.IN-ADDR.ARPA" {

type master;

file "local.rev";

};