繁体中文
设为首页
加入收藏
当前位置:技术首页 >> 系统 >> Linux/Unix >> 实用技巧 >> 用Linux实现路由器和包过滤防火墙

用Linux实现路由器和包过滤防火墙 (1)

2006-12-12 21:36:31  作者:admin  来源:赛迪网  浏览次数:332  文字大小:【】【】【
关键字:Linux

路由器和防火墙

路由器是一种广泛运用在IP网段之间的设备,市场上有许多现成的产品。在应用中,我们经常将路由器跨接在广域网和局域网之间,大多数的路由器产品也就是基于这种需要来设计的。但是随着用户IP网络的扩展,我们需要一种能够在多个以太网络之间进行寻址的路由器,传统的路由器产品中偶尔有几款双以太网络接口的,但是这样的产品价格尤其昂贵,而且要是支持快速以太网络应用的话价格将是天文数字;第三层交换机可以实现这样的功能,但是第三层交换机也不是便宜的家伙。

路由器工作的时候,根据它的某个端口收到的数据包的目的IP地址,查询路由器自己的路由表,然后决定将数据包转发到相应的端口。路由器的路由表有几种:一种是根据路由器自己的每个端口IP地址和子网掩码计算出来的路由,这种路由叫做“固定路由”;第二种是有系统管理员种设置的到某个子网需要通过某个下一级路由器的路由,这种叫“静态路由”;还有就是在网络环境中让每个路由器都把自己的路由信息广播出去,让路由器之间进行互相学习,这样学到的路由就叫做“动态路由”。路由器还会把目的地址不在自己路由表中的数据包固定转发给一个预先设定IP地址,这样的路由设置又叫“默认路由”。在路由匹配的过程中,一般有这样的优先级:固定路由>静态路由>动态路由>默认路由。

路由器只会查看IP数据包的目的地址,也就是说原则上它是“照单全收”,而且全部转发,除非真的发不出去了。如果让路由器在转发数据包的时候,加一项检查,检查数据包的来源和数据包要求的应用层服务类型,根据预先设计的规则来判定这个数据包是应该转发还是作别的处理,这样这个路由器就不再是一个单纯意义上的路由器,而是一种类型的防火墙——包过滤防火墙。

包过滤防火墙可以检查数据包的来源、源端口、目的地址、目的端口,使用的传输层协议类型等项目,根据检查的项目的内容来匹配一个规则表,当符合规则表中的定义的时候,就执行规则表事先定义的操作。一般来说,规则表可以定义这样的操作:ACCEPT(通过)、NAT(MASQ地址转换)、DENY(丢弃)、REJECT(拒绝,同时回送‘不可用’消息给源端)。

当然目前市场上也能买到支持包过滤防火墙的现成产品,但是价格问题还是我们不得不考虑的重要因素。尤其大多数产品都有许多许可证、性能等方面的限制。

Linux操作系统应运IP网络而生,除了Linux价格上的优势之外,更吸引人的是它内建的强大的网络功能,除了做各种Internet上的应用服务之外,Linux还提供了完整的路由器功能和防火墙功能。而它所带来的系统造价和功能的比例是相当诱人的,为什么不一试呢?

Linux系统的准备

相对于现成的路由器产品,我们把这样的路由器称为“软路由器”,当然这样做出来的路由器性能绝对不会比“硬件路由器”的性能差,我们只要明白比如很多“25××”系列的路由器才只是采用25M主频的摩托罗拉68030CPU(性能相当于Intel 80386)我们就知道了。

用来做“软件路由器”的Linux系统主机硬件配置要求并不是太高,用作三五个局域网之间的路由选择,数百台计算机的话,选用奔腾133以上的主机就足够了,当然现在的市场上赛杨2或者奔腾4或者其他的CPU也不是很贵;配置64M内存,有条件的话可以配置到128M也无所谓;硬盘就不要太大了,否则也是浪费.

关键在于网络适配器的配置,Linux系统支持大多数市场上能见到的以太网络适配器,PCI卡的安装比较简单,只要内核支持,在开机的时候有多少卡都会被系统正确的识别出来。下面是我在实际使用过的能够正常工作的网卡:

★Intel EtherExpress Pro PCI100M

★RealTek 8029/8139 PCI 10M/100M

★D-link 系列 (使用Tulip 2114X驱动) PCI 10M

★ACCTON EN1207 (使用Tulip 2114X驱动) PCI 100M

★3COM全系列 (PCI/ISA 10M/100M)

★AMD PC-NET 32 PCI 10M

★大部分NE2000兼容网卡,Topstar、Dlink、ACCTON、SN2000等等

★HardLink PCMCIA 笔记本专用网卡 10M

当然Linux能支持的网卡远远不止这些。

将网卡驱动加挂到Linux中有几种方法,最常用的是用modprobe系统工具加挂一个内核模块,比如加载一个NE2000兼容网卡的驱动可以这样:

 

  #modprobe ne io=0x300

其实大多数的PCI网卡并不需要指定IO地址范围,就像加载一个ACCTON的EN1207c网卡可以这样:

 

  #modprobe tulip

将网卡驱动编译到Linux内核中是一种最高效的做法,在编译Linux内核的时候,使用

 

  #make menuconfig

代替很多老资料上提到的“#make config”,这样就会得到一个菜单,在菜单中“Network Device”选项下选定指定的网络适配器的驱动程序,编译完成以后就会得到一个完整的支持相应网卡的Linux内核。

责任编辑:admin

本文引用地址: http://tech.itzero.com/2006/1212/5153.html 请粘贴到你的QQ/MSN上推荐给你的好友

相关文章
Telnet入侵最完全手册(1)
详细解析 配置Telnet服务与Ftp服务
在Windows Vista中安装Telnet客户端
开启linux平台ftp/telnet服务
Linux与Unix比较Ftp/Telnet服务配置
Vista系统中使用Telnet服务器问题
Solaris TELNET ftp时间超长
Linux系统下实现自动Telnet
Telnet的命令模式(2)
Telnet的命令模式(1)
你了解什么是telnet吗?(5)
 

最新文章

更多

· Linux指令篇:设备管理--...
· SCO UNIX下磁盘设备的应...
· 简单方法确保 Linux 系统...
· 将SSH与PHP相连接 确保...
· 系统安全:快速安全地建立...
· 在Linux的系统环境下配置...
· 分级防御针对Linux服务器...
· Sendmail邮件服务器升级...
· 本文介绍最简单的Linux系...
· 手把手教授架设基于LINU...

热点文章

更多

· SCO UNIX下磁盘设备的应...
· Linux指令篇:设备管理--...

其它推荐