昨天晚上加班到凌晨一点多。
凌晨六点多躺下。
领导走后,我一个人在公司待着,诺大的机房,空旷……虽然机房里嗡嗡声不断,却感觉静得可怕,我坐在办公室里,却能听得很远……有点儿害怕了。
八点多睡来,被撞门声吵醒,然后就是同事陆续的到来……
今天一天都感觉头重脚轻……
很久没有这样的感觉了……恍惚记得在学校的日子天天如此……
重温Linux的netfilter
Posted by 曹宇伟 on 四月 28th, 2006Netfilter内建了5条链路来处理数据包,它们分别是:PREROUTING、INPUT、FORWARD、OUTPUT和POSTROUTING:
routing
decision
IN ——> PRE —> ——> FORWARD —–> —-> POST —–> OUT
interface ROUTING \ filter / ROUTING interface
DNAT | tracking ^ SNAT
REDIRECT | | MASQUERADE
v |
INPUT OUTPUT
| filter ^ filter,DNAT
v |
\–> Local Process –/
user-space programs
过滤表(Netfilter table)
数据包在每条内建的链路中传输时按如下过滤表中的规则进行处理。
* filter(数据包过滤器,链路中默认的过滤器)
o INPUT(作用于进入本机的数据包)
o FORWARD(作用于路由到本机的数据包)
o OUTPUT(作用于本地产生的数据包)
* nat(网络地址翻译)
o PREROUTING(作用于刚进入的待转换数据包)
o OUTPUT(作用于在路由之前待转换的本地产生的数据包)
o POSTROUTING(作用于待发出的已转换的数据包)
* mangle (network address mangling, good only after 2.4.18)
o 适用于所有5条链路。
过滤目标(Netfilter target)
Firewall rules have several targets:
* 4个基本目标:
o ACCEPT 允许数据包通过。
o DROP 阻拦数据包。
o QUEUE 允许数据包进入用户空间(userspace)(如果内核支持的话)。
o RETURN means stop traversing this chain and resume at the next rule in the previous (calling) chain.
* 扩展目标:
o LOG 打开内核日志。
o REJECT 回送错误数据包并阻拦该数据包。
o SNAT 修改数据包源地址,仅作用于POSTROUTING链路。(仅适用于nat过滤表)
–to-source ipaddr[-ipaddr][:port-port]
o MASQUERADE 作用和SNAT一样,但面向使用动态IP请求建立的连接(拔号连接)。(仅适用于nat过滤表)
–to-ports port[-port]
o DNAT 修改数据包目的地址,仅作用于PREROUTING、OUTPUT链路以及由它们调用的用户自定义链路。(仅适用于nat过滤表)
–to-destination ipaddr[-ipaddr][:port-port]
o REDIRECT 修改数据包目标地址使其发送给本机。
–to-ports port[-port]
网络过滤器命令
iptables的基本命令有:
iptables -N chain # create a chain
iptables -A chain \ # add rule to chain
-t table \ # use table (filter, nat, mangle)
-p protocol \ # tcp, udp, icmp, or all,
-s source-address[/mask] \
–sport port[:port] \ # source port if -p is tcp or udp
-d destination-address[/mask] \
–dport port[:port] \ # dest. port if -p is tcp or udp
-j target \ # what to do if match
-i in-interface-name \ # for INPUT, FORWARD, PREROUTING
-o out-interface-name # for FORWARD, OUTPUT, POSTROUTING
引用:
讨论与Blog相关的技术,不可不谈的就是RSS,这个缩写在英文中可以有几个源头,并被不同的技术团体做不同的解释。既可以是“Rich Site Summary”,或“RDF Site Summary”,也可以是“Really Simple Syndication”。为什么有这么多含义呢?这还要从RSS的一段今天也没有理清的关系说起。
今天肯定有人还记得IE 4刚刚推出来的时候有一个有趣的功能,那就是新闻频道。这个新闻频道的功能与Netscape推出的新闻频道是很相似的(当时Netscape还是市场上领先的浏览器)。为此Netscape 定义了一套描述新闻频道的语言,这就是RSS,只不过Netscape自当时起每况愈下,所以最终也没有发布一个正式的RSS规范(只发布了一个0.9版本)。而微软也在当时推出了支持自己IE的CDF(Channel Definition Format)数据规格,与RSS非常接近。微软试图用新闻频道的功能把“推”(Push)技术变成一个应用主流,并与Netscape抗衡。不过出乎预测的是,“推”技术自始至终没有找到合适的商业模型,而且伴随着其他各类网络特性的出现,也日益无法显现自身的优势。新闻频道在浏览器中的地位最终日暮西山,最后也在IE的后续版本中消失了。
新闻频道的确进入了低谷,但是RSS并没有被业界人士所抛弃。过去两年,Blog从一个专业群体开始,逐步成为了网络上最热门的新话题。而RSS成为了描述Blog主题和更新信息的最基本方法。于是RSS这项技术被著名Blogger/Geek戴夫·温那(Dave Winner)的公司UserLand所接手,继续开发新的版本,以适应新的网络应用需要。新的网络应用就是Blog,因为戴夫·温那的努力,RSS升级到了0.91版,然后达到了0.92版,随后在各种Blog工具中得到了应用,并被众多的专业新闻站点所支持。在广泛的应用过程中,众多的专业人士认识到需要组织起来,把RSS发展成为一个通用的规范,并进一步标准化。一个联合小组根据W3C新一代的语义网技术RDF对RSS进行了重新定义,发布了RSS 1.0,并把RSS定义为“RDF Site Summary”。这项工作并没有与戴夫·温那进行有效的沟通,而戴夫则坚持在自己设想的方向上进一步开发RSS的后续版本,也并不承认RSS 1.0的有效性。RSS由此开始分化形成了RSS 0.9x/2.0和RSS 1.0两个阵营,也由此引起了在专业人群中的广泛争论。
因为争论的存在,一直到今天,RSS 1.0还没有成为标准化组织的真正标准。而戴夫·温那却在2002年9月独自把RSS升级到了2.0版本,其中的定义完全是全新的模式,并没有任何RSS 1.0的影子。这引发了网络上进一步争议,究竟让一个越来越普及的数据格式成为一个开放的标准,还是被一家公司所定义和控制,成为了争议的焦点。戴夫·温那并没有为自己辩解,他的观点是RSS还需要进一步发展,需要专业人士更明确的定义,不过恐怕这种轻描淡写不能消除人们对RSS“被一家商业公司独占”的担心。
前面的铺垫对用户来说也许没有什么太大的意义,可能更多人关心如何在自己的Blog增加RSS输出,这样可以让很多新闻聚合工具(例如CNBlog刚刚推荐的NewzCrawler)很容易找到你并自动获得你在Blog中的更新内容。
它是什么:站点用来和其他站点之间共享内容的简易方式(也叫聚合内容)。 RSS使肵ML作为彼此共享内容的标准方式。
它代表什么:Really Simple Syndication (或RDF Site Summary,RDF站点摘要)
例如:一些免费的软件能够让你阅读那些RSS使能的站点,比如 NewsIsFree 和 Amphetadesk。
它有什么用处:让别人容易的发现你已经更新了你的站点,让人们很容易的追踪他们阅读的所有weblogs。
原文出处:博客中国
对这几种产品的性能先不做评价,只是先记录下来,回头再仔细学习研究。
这些均系低成本的中、低端(自认为)防火墙产品。
其中 SmoothWall,官方网址:http://www.smoothwall.org/
是基于Linux的一个防火墙产品,以前试用过一段,因为没有投入到应用环境中去,效果不明。
M0n0Wall 官方网址:http://www.m0n0.ch/wall/ (英文) http://www.m0n0.com.cn/wall/ (中文)
一个基于FreeBSD的防火墙产品。
1000gWall http://www.1000gwall.com/
知道是基于FreeBSD的,但尚不清楚属于什么产品。
一个关于路由器的网站:http://www.router.net.cn/
很多时候,路由器就充当成防火墙的角色,有空要再看看,可惜今天我打不开,估计是电信的网站。
今天烦啊、烦啊!
什么也不想说啊,什么也不想做啊!谁都别来招我啊!
我想我是走火入魔啦,肯定是因为我急于求成啦!
近日,NetApp的 DATA ONTAP OS,Juniper的NetScreen OS,再加上F5 BigIp的LTM OS,其实上还包括Cisco的IOS,这四个系统都让我遇到了不少问题,对我来说是学习的机会,是挑战,是好事儿。然而,几个系统同时需要调整,乱了、急了、看了、忘了、记不住了,于是烦了、躁了、还后悔了,后悔没有早入手学习了,应该早些时候就有机会撑握的没有下决心抽时间撑握了。便是如此也不至于现在有许多问题想不明白,急成这个样子了……
我要学习啊,我要学习啊!
日子天天去,技术却不见长啊,变懒了啊,懈怠啊!
我知道的东西实在太少啊,需要学习的东西实在太多啊。吾生有涯而学无涯啊~~路漫漫其修远啊~~吾有涯之生如何去求索啊??
烦啊,烦啊!
什么时候能把这四个系统认知的就像Linux/FreeBSD一样熟啊!
烦啊,烦啊!还要不停学习啊,要是能过目不忘多好啊!!!
学习啊,学习啊,我又去学习啦!脑子太笨啦……只能这样啦!!
使用串口访问FreeBSD/Linux系统
Posted by 曹宇伟 on 四月 7th, 2006 最近热衷于使用串口登录系统,这样就不用在需要调试系统的时候为系统连接显示器和键盘了。
FreeBSD中的串口通信,可以阅读它的手册,下面的地址是中文手册中的串口通信部分,可以仔细阅读它。
http://cnsnap.cn.freebsd.org/doc/zh_CN.GB2312/books/handbook/serialcomms.html
以下为引用:
在FreeBSD中,您可以通过 /dev 目录中的一个记录来访问每个串行端口。有两种不同的记录:
呼入端口被命名为/dev/ttydN, 这里 N 是端口号,从零开始。 通常,您使用呼入端口作为终端。呼入端口要求数据线使用载波检测 (DCD) 信号来工作。
呼出端口被命名为 /dev/cuadN。 您通常不使用呼出端口作为终端, 只使用modem。如果串行线或终端不支持载波检测数据传输, 您可以使用呼出端口。
注意: 在 FreeBSD 5.X 和更早版本中, 呼出端口的名字是 /dev/cuaaN。
如果您已经连接一个终端到第一个串行端口 (在 MS-DOS® 上是COM1), 则可以使用 /dev/ttyd0 来作为终端。 如果它是在第二个串行端口 (COM2), 那就是 /dev/ttyd1,等等。
引用完毕。
简单地来说,使用串口访问FreeBSD需要修改FreeBSD的配置文件/etc/ttys,我现在使用的版本是5.4的,找到
# Serial terminals
# The ‘dialup’ keyword identifiles dialin lines to login, fingerd etc.
ttyd0 “/usr/libexec/getty std.9600″ dialup off secure
ttyd1 “/usr/libexec/getty std.9600″ dialup off secure
ttyd2 “/usr/libexec/getty std.9600″ dialup off secure
ttyd3 “/usr/libexec/getty std.9600″ dialup off secure
……
将ttyd0行如下修改:
ttyd0 “/usr/libexec/getty std.38400″ vt100 on secure
然后让init 进程重新读取一下配置文件:
#kill -HUP1
使用命令:ps aux |grep getty 来查看是否运行
输出中包含
root 24331 0.0 0.1 1288 800 d0 Is+ 8:26PM 0:00.00 /usr/libexec/getty std.38400 ttyd0
表示ttyd0上已经有getty程序在监听。
然后,就可以使用串口线连接到服务器的COM1口,将波特率设置成38400,进行连接测试。需要说明的是:
引用:
如果 getty 进程确实在运行,但终端上仍然没有显示出登录提示, 或者虽然显示了单缺不允许您输入,您的终端或电缆可能不支持硬件握手。请尝试将 /etc/ttys 中的 std.38400 改为 3wire.38400 并一定能够记得在改完 /etc/ttys 之后 kill -HUP 1)。 3wire 记录和 std 类似,但忽略硬件握手。 您可能需要在使用 3wire 时减少波特率或启用软件流控制以避免缓冲区溢出。
我的是HP DL380 G3的服务器,FreeBSD 5.4的系统,Cisco自带的串口线,和一个RJ-45到RS-232转换器,我的设置是这样的:
ttyd0 “/usr/libexec/getty 3wire.38400″ vt100 on secure
当是std.38400时无法正常通信。
下面谈Linux系统。
在Linux系统中,让串口上运行监听程序比在FreeBSD中在容易的多。
大部分Linux发行版,在配置文件/etc/inittab中都已经包含了串口的getty配置信息,形似:
#S0:12345:respawn:/sbin/agetty -L 9600 ttyS0 vt100
只不过默认是注释掉的,把前面的“#”去掉,然后执行一下kill -HUP 1,ps aux |grep getty查看一下是否已经在运行,就可以了。可以看到,Linux中与FreeBSD中的串口设备命名是不一样的,不再赘述。
建议把9600改成38400,这样操作起来就真得跟插上显示器键盘操作的感觉相似了。
最后:
这种使用串口访问系统方式,只有在getty程序运行在串口的时候才能正常使用,就是说系统必然是正常在运行的,尽管可能网络不通。假如出现文件系统损坏需要修复的情况,串口就不能访问了,为了使串口在这种情况下也能使用,在Linux 中,可以在内核启动参数(kenel一行)中加入console=ttyS0,38400 ,这样会把内核console定义到ttyS0(COM1)上去。
不用困惑,试一下就明白了,其实上目前流行的服务器像HP DL380 G4等都支持串口,就是说系统启动,硬件POST自检的时候,串口上都有输出,而且可以互动操作。但是不要误以为终端屏幕(VT100)上所有的显示都会跟显示器(console)一样,Linux的话,从内核开始解压开始,终端上就没有任何信息了,除非内核接收到了console=ttyS0这样的参数,否则,串口会一直到系统启动完毕,才会在终端上显示login信息。
FreeBSD也可以让内核信息显示在串口上,甚至还可以在没有显示器,没有键盘的情况下从串口安装系统。这个在上面给出的FreeBSD手册串中通信中有详细的说明,没有我还没有用过,就不写了。
重启Oracle数据库
Posted by 曹宇伟 on 四月 4th, 2006sqlplus /nolog
connect /as sysdba
starup
exit
lsnrctl start #启动网络监听进程
Recent Comments