QUOTE:原帖由 ljj1998 于 2006-6-28 09:06 发表
第一个不通,因为DROP了,而第二种通,因为ACCEPT了。
但我的疑惑是这样做有什么意义呢?
据有些文章说要在INPUT和OUTPUT中打开LO环回才能转发包,
而我做过echo "1" > /proc/sys/net/ipv4/ip_fo ...
很多网络应用程序,是把本机也看做一个网络节点来对待的。。。比如我要用mysql, 那么我怎么用客户端工具来连接它呢?所以就有了-h localhost(localhost就是 127.0.0.1) 一说,当然这个是默认的,真正使用的时候省略了此参数时就是默认连它。
那么这样做有什么好处呢?
1.对应用程序的开发来说简单化了,可以把本机也视作网络节点来对待,不必要单独为本机对程序的操作而独立地写上很多代码和程序;
2.不这样做有什么影响呢?很多时候,我们虽然连上了外网,但是对应用程序的连接是本地的。就如1提到的一样,我连的本地的mysql等。。。 虽然此时理论上而言,用网卡的ip地址也是可以成功连接的(mysql是个特例,它的默认root用户和某些版本的安全设置默认是设置了只监听lo的),但是,这样一来,不论是我们对应用程序的操作,还是应用数据的反馈,都跑到网卡上去绕了一圈。不光是浪费了网卡的吞吐量,也浪费了从主板-->网卡-->主板的资源和请求时间。就在本机硬盘上的网络程序,由于第1点提到的程序开发方便性,竟然让程序去网卡上绕一圈实在是很讽刺的事吧? 于是就有了lo的诞生。。。
当然,以上2点只是简单提及,打字太麻烦了。。。 举一反三,想想如果没有lo这个接口会带来什么麻烦就晓得该怎么样利用它了。 至于限制么。。。 根据你的特殊需要而定了哦。。。。 比如你想要不露声色地让其他客户端可以使用某程序,而本机却无法操作的时候。。。。(当然,这样做后果自负,因为很多时候程序本身也是要利用lo这个端口来进行一些中间数据的传递的)