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

本文介绍了如何利用ipchains和策略路由来实现高级的网络控制。通过设置fwmark标记,可以针对不同来源的数据包指定不同的路由策略。例如,内部网B的目的端口80的数据包被允许通过特定路由,而内部网A的相同数据包则被禁止。此外,还展示了如何配置IP伪装,使得不同网络的数据包在转发时显示为不同的源地址。
摘要由CSDN通过智能技术生成

使用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配置有如下地址:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值