📄 00000014.htm
字号:
255.255.255.255 * 255.255.255.255 UH 0 0 0 eth0 <BR> <BR> 202.199.249.0 * 255.255.255.0 U 0 0 0 eth1 <BR> <BR> 202.199.248.0 * 255.255.255.0 U 0 0 0 eth0 <BR> <BR> 127.0.0.0 * 255.0.0.0 U 0 0 0 lo <BR> <BR> 显然,到202.199.248.*和202.199.249.*的广播路径都已经正确了,下一步是按照上 <BR>一节的办法启动IP转发: <BR> <BR> echo "1" > /proc/sys/net/ipv4/ip_forward <BR> <BR> 现在要面对我们作软件路由器的一个主要问题了。如同我们说的那样,系统的主路由 <BR>器是202.199.248.1,而202.199.248.x的机器都将其缺省网关指向了这个路由。这意味 <BR>着,如果有一个数据包从202.199.249.x发送到202.199.248.y,那么发送过程中不会有 <BR>什么问题,而当202.199.248.y回应这个信息的时候,它将数据包发送到202.199.248.1 <BR>,但是202.199.248.1并不知道202.199.249.0的任何事情,它无法正确投递这个数据包 <BR>。 <BR> <BR> 解决的办法是将202.199.248.6加入到202.199.248.1的投递路径中去,设置202.199. <BR>248.1的缺省投递路径,使得它碰到目标地址是202.199.249.x的数据包就投递到202.19 <BR>9.248.6: <BR> <BR> route add –net 202.199.249.0 netmask 255.255.255.0 gw 202.199.248.6 <BR> <BR> (这里我把事情简化了。实际上,202.199.248.1是一个cisco路由器,它的配置要使用 <BR>自己的语法,不过内容是一样的)。 <BR> <BR> 现在两个子网已经可以正确地互相访问了,但是,为了使202.199.249.x的机器能够访 <BR>问internet,需要定义202.199.248.6的缺省投递路径,让它把对外的访问投递到202.1 <BR>99.248.1: <BR> <BR> route add default gw 202.199.248.1 <BR> <BR> 这样,就在系统中添加了一个子网。如果你需要作更复杂的网络连接,只要按照自己 <BR>的设计定义递送路径,然后打开核心转发就可以了。 <BR> <BR> 8.1.3 广播路由路径 <BR> <BR> 很容易看出来,我们上面使用的是缺省路由传递的方式。整个配置中,我们使用的一 <BR>直是静态路径。在很多情况下,让路由器动态广播它所知道的路径更好一些。 <BR> <BR> 要广播路由路径,基本的方法是使用路由守护进程。最基本的路由守护进程是routed <BR>。它作为Linux的一部分提供,可以收听网络上的路由广播,或者自己发出路由广播。不 <BR>过,routed的功能有限,同时又很占服务器资源。 <BR> <BR> 要使用routed,方法很简单,在命令行下面直接使用routed: <BR> <BR> routed [-s] [-q] <BR> <BR> -s和-q是routed的两种工作模式,简单地说,-s是服务器模式,routed将不断地广播 <BR>和接受各种路由信息,-q则是客户模式,routed将只是接受别的机器广播的路由信息, <BR>并且以此为根据修正自己的路由表。一般来说,routed会根据机器上的网络接口自动确 <BR>定路由信息,因此不需要提供其他信息。有时,你的系统比较复杂,这时你需要用/etc <BR>/gateways文件来设定一下静态路由信息。关于gateways文件的信息详情可以参考route <BR>d的手册页面。 <BR> <BR> 更常用的路由守护进程是gated。这个程序是一个路由外壳程序,可以插入各种路由通 <BR>信协议的支持。例如RIP,HELLO,IGRP等等。 <BR> <BR> 配置gated是一件很痛苦的事情,因为需要管理的事情实在是太多了。我们建议尽可能 <BR>地使用静态路由路径,只有在迫不得已的时候才使用gated守护进程(或者routed)来通 <BR>过广播动态设置路由路径。 <BR> <BR> 再申明一次:routed和gated在Linux中仅仅起到了一个广播路由信息的作用,真正的 <BR>路由工作是由Linux内核完成的。因此,如果你的网络配置全是静态路径,那么,你并不 <BR>需要使用这种程序,简单地打开内核IP转发和正确地配置路由表就是你需要的一切。 <BR> <BR> 8.2 IP过滤和代理 <BR> <BR> 在前面我们已经看到,配置Linux作为一个静态路由其实是非常简单的事情,但是,在 <BR>实际的情况中,问题也许会比较复杂,例如,你需要对Linux内核转发的IP进行过滤以便 <BR>构造一个防火墙系统,或者你需要把你的私用网络接入到Internet。这一节我们就来讨 <BR>论这方面的问题。 <BR> <BR> 8.2.1 ipchains和IP过滤 <BR> <BR> 正常情况下,内核会转发一切它认为应该转发的数据包,也许你想对这种转发加以控 <BR>制,Linux的绝大部分发行版本中都包含了一个用于控制这种转发的工具,称为ipchain <BR>s。在早期版本的Linux中,有一个产品叫ipfwadm,两者在语法上是相当近似的,不过在 <BR>现在版本的Linux中,使用的都是ipchains。 <BR> <BR> 要使用ipchains,你必须首先安装这个产品,例如: <BR> <BR> rpm –i ipchains-1.3.9-3.rpm <BR> <BR> 接下来就可以使用ipchains了。 <BR> <BR> 链 <BR> <BR> 要理解ipchains,首先应该知道它是基于所谓“链”的概念,所谓的“链”基本上是 <BR>一个TCP/IP连接模式,可以在这个模式上运用各种过滤规则,在缺省情况下,ipchains <BR>定义了三个基本的链: <BR> <BR> input 由网络接口进入本机 <BR> <BR> output 由网络接口输出 <BR> <BR> forward 在各个网络接口之间转发 <BR> <BR> 你也可以建立自己的链,但是前面三个链不能更改,而且自己建立的链是没有缺省定 <BR>义的。要建立自己的链,使用ipchains –N指令: <BR> <BR> ipchains –N mychains <BR> <BR> 这样就建立了一个名为mychains的链。要删除某个链,使用ipchains –X指令,如 <BR> <BR> ipchains –X mychains <BR> <BR> 匹配模式 <BR> <BR> 第二个需要理解的概念是匹配模式,匹配模式就是对TCP/IP连接的源/目的地址、端口 <BR>、协议等进行匹配,例如,可以在连接请求中过滤所有源地址是202.199.240.2,目标地 <BR>址是18.0.0.3的部分: <BR> <BR> -s 202.199.240.2 –d 18.0.0.3 <BR> <BR> 在匹配规则中可以使用下面的一些选项: <BR> <BR> -s 源地址 -d 目标地址 <BR> <BR> 这两个选项都可以使用网络地址,例如,要过滤源地址在子网202.199.248.0-202.19 <BR>9.248.255中,目标地址在202.199.249.0-202.199.249.255中的请求,可以使用下面两 <BR>种方法(等价) <BR> <BR> -s 202.199.248.0/24 –d 202.199.249.0/24 <BR> <BR> -s 202.199.248.0/255.255.255.0 –d 202.199.249.0/255.255.255.0 <BR> <BR> 如果在某个匹配规则中没有标出源地址或者目标地址,那么缺省是0.0.0.0/0,即 <BR> <BR> -s 202.199.248.0/24 等价于-s 202.199.248.0/24 –d 0.0.0.0/0 <BR> <BR> -p 连接协议 <BR> <BR> -p选项用来设置使用的连接协议,可以是TCP,UDP或者ICMP,例如: <BR> <BR> -s 202.199.248.0/24 –p TCP <BR> <BR> 所有从C类子网202.199.248.0出发的TCP连接。 <BR> <BR> 在ICMP连接的情况下有一个特殊情况,就是可以使用-icmp-type来指出ICMP的类型。 <BR> 这个类型一般用数字标出,常用的有: <BR> <BR> 数值 含义 常见应用 <BR> <BR> 0 网络回应 ping <BR> <BR> 3 网络不可达 TCP/IP寻址失败 <BR> <BR> 5 路由重定向 静态路由主机 <BR> <BR> 8 请求回应 ping <BR> <BR> 11 网络超时 traceroute <BR> <BR> 例如,-s 127.0.0.1 –p ICMP –-icmp-type 0 表示所有从127.0.0.1发出的ping回 <BR>应。 <BR> <BR> 端口号 <BR> <BR> 直接在源/目的地址的后面加上的数字表示端口号,但是要注意端口号必须和协议类型 <BR>一起使用,例如,通往C类网202.199.248.0内任何www服务器的连接可以表示成 <BR> <BR> -d 202.199.248.0/24 80 -p TCP <BR> <BR> 也可以使用名字代替端口号,例如上面的形式也可以写成 <BR> <BR> -d 202.199.248.0/24 www –p TCP <BR> <BR> 没有限定端口号的规则表示适用于任何端口。 <BR> <BR> 端口号可以使用段落,方法是[最小端口号]:[最大端口号]。例如从A类网10.0.0.0/ <BR>8出发的所有源端口大于1024小于4096的UDP请求可以写成: <BR> <BR> -s 10.0.0.0/8 1024:4096 –p UDP <BR> <BR> 上下界可以省略,例如所有大于64的端口可以写成64:,小于1024的端口号写成:1023 <BR>等等。 <BR> <BR> 也可以使用-source-port和-destination-port来标志端口号。 <BR> <BR> 否定 <BR> <BR> !符号用于对地址规则取否定,例如-s !202.199.248.0/24代表所有源地址不是C类地 <BR>址202.199.248.0的数据包。在端口、协议类型等处也可以使用!符号。 <BR> <BR>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -