网络安全 频道

Linux环境下基于策略的路由6

使用ipchains实现高级策略路由

  在指定策略规则时可以使用的一个选项就是允许通过fwmark值来匹配某个规则。fwmark是一个数字标签,数据报过滤工具ipchains能将fwmark值附加给某个数据报。如果你对ipchains并不是很熟悉,你需要首先阅读ipchains-howto.

  例 5:简单基于fwmard的策略路由

  首先从一个简单的例子开始-利用上面示例中的多路由表,希望实现来自内部网B的、目的端口为80的数据发送到Internet,但是来自内部网A的、目的端口为80的数据则被禁止。首先清空这些路由表:

 ip route flush table goodnet1
 ip route flush table goodnet2

 ip route flush table badnet1

 ip route flush table badnet2

 ip route flush table internet

 ip route flush cache

  而目前删除策略规则的方法就是将其一一列出来然后将其手工删除,也就是首先通过ip rule list命令将策略规则列出来然后使用ip rule del priority <#>将其删除。但这里假设当前没有任何规则并且路由表也是空的。

  为了使用fwmark标记,首先应该指定希望使用ipchains标记的数据报,然后使用标记值来指定一条策略规则来处理该数据报。应该设定ipchians自动将十进制的标记转化为十六进制。ip rule希望输入为一个十六值。

  首先配置ipchains规则使用合适的值标记输入数据报。假设当前没有其他防火墙规则:

 ipchains -I input -p tcp -s 192.168.2.0/24 -d 0/0 80 -m 2
 ipchains -I input -p tcp -s 192.168.1.0/24 -d 0/0 80 -m 16

  现在设立策略规则,在上面为内部网A的标记值为十机制的16,下面定义相关的策略(应该注意到策略定义中使用的是十六进制,因此为10):

 ip rule add fwmark 2 table goodnet1
 ip rule add fwmark 10 prohibit

  最后为路由表goodnet1定义如下的路由:

 ip route add default via 172.17.1.254 table goodnet1

  关于策略路由的一个常见问题是策略路由和IP伪装之间如何交互,这里我们不对该问题进行深入研究但是通过一个快速的示例来加以说明。需要注意的是在转发链之前对路由表进行查询。这意味着如果使用IP伪装,则路由选择器返回的任何源地址都将被作为进行IP伪装的地址。

  例6:朵IP地址的IP伪装

  使用上面的网络配置,我这里将对到三个网络的连接进行伪装处理,希望从系统中得到如下的输出:

  从内部网A到网络C的数据报被伪装为10.254.254.2
  从内部网络B到网络A的数据报被伪装为172.17.1.2
  内部网到互联网的数据报都被伪装为172.17.1.128
  eth0配置有如下地址:

 10.254.254.2/30
 172.17.1.128/24
 
http://netadmin.77169.com/HTML/20040615190500.html

0
相关文章