免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 22081 | 回复: 62
打印 上一主题 下一主题

基于策略路由的IP地址控制 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-04-14 16:55 |只看该作者 |倒序浏览
基于策略路由的IP地址控制

===========================================================================

最近做了一套路由策略,觉得LINUX真的太强大了!于是心潮澎湃,写了这个文档!!!

一、背景描述
如图,LINUX是一台网关服务器,内有3块网卡
eth1绑定 172.17.0.0/16 的IP,该网段IP可以通过 172.17.1.1 上网
eth0绑定 192.168.10.0/24 的IP,该网段IP可以通过 192.168.10.1 上网
eth2绑定 192.168.1.1,是内网用户的网关

二、需求分析
内网用户应该走 172.17.1.1 这个路由上网
但由于工作需要,部分用户应该有访问图中“专用网络”的权限
也就是说,应该走 192.168.10.1 这个路由

另外一点,所有人应该可以访问FTP服务器,这个服务器的IP是 192.168.10.xx
也就是说,走 172.17.1.1 路由的人,也应该能访问 192.168.10.xx,且可以上网

三、解决方案
要解决这个问题,用到了一下几个命令,具体使用方法需要另查资料
ip route
ip rule
arp
注:关于 ip 命令的用法,请查阅ip中文手册,www.google.com 上有

1、绑定IP
ifconfig eth1 172.17.3.x netmask 255.255.0.0
ifconfig eth0 192.168.10.2 netmask 255.255.255.0
ifconfig eth2 192.168.1.1 netmask 255.255.255.0
然后分别修改 /etc/sysconfig/network-script/ifcfg-ethx 文件,以使计算机启动自动设置IP地址

2、创建特殊路由表
vi /etc/iproute2/rt_table

  1. #
  2. # reserved values
  3. #
  4. 255     local
  5. 254     main
  6. 253     default
  7. 0       unspec

  8. 200     NET10
  9. #
  10. # local
  11. #
  12. #1      inr.ruhep
复制代码

上面那个 200 NET10 为新添加,自定义编号为 200,名字为 NET10

3、向NET10 路由中添加它自己的默认路由

  1. ip route add default via 192.168.10.1 table NET10
复制代码

注意,这个 table NET10 一定不要忘了写,否则写到了主路由表中

4、创建特殊路由规则
用 ip rule 可以看到计算机当前的路由规则
0:      from all lookup local
32766:  from all lookup main
32767:  from all lookup default

可以看到,规则中走了3个路由表,local、main、default
我们平常用route看到的,实际是路由表main
这些规则是按序号大小顺序走的,一个不同,则走下一个,知道通路或走完为止

开始添加我们自己的路由NET10到路由表中

  1. ip rule add from 192.168.1.222 pref 10000 table NET10
复制代码

这个意思是说,如果来自IP地址为 192.168.1.222 的访问,则启用NET10的路由表中的路由规则
而NET10的路由规则是什么呢?上面已经设置了,走的是 192.168.10.1 的网段
接下来,使 LINUX 可以 NAT(这里不再细说 HOW TO 了)

5、让所有人可以访问 192.168.10.xx(这个IP不便说出来)
因为其余人都走了 172.17.1.1 这个路由,所以他们是无法访问 192.168.10.xx 的
怎么才能实现呢?再添加个策略就可以了!

  1. ip rule add to 192.168.10.xx pref 10001 table NET10
复制代码

这句话的意思是说,所有人,如果目的IP是 192.168.10.xx,则临时使用 NET10 的路由表
这样做,安全会不会有安全问题呢?路由变了,他们会不会访问到专用网络呢?
不会的,因为路由规则是 to 192.168.10.xx,也就是目标是 xx 时,才该路由的,访问别的网站还是走原来的路由。
如果说访问到专用网络的机器,也就只有10.xx这一台而已。
这里,我们还可以做一个小技巧,不告诉别人 192.168.10.xx 的地址,只告诉他们网关 192.168.1.1 上有这个服务
iptables -t nat -A PREROUTING -d 192.168.1.1/32 --dport 21 -j DNAT --to 192.168.10.xx

6、防止其他人篡改IP地址而获得特殊权限
arp有个静态功能 CM,不是 C,大家可能知道
如果给一个IP地址强行绑定一个非他自己的 MAC,会怎么样呢?双方会话将会失败!
好,我们来利用这一点!

首先,我写了一个文件iproute.c

  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. main ()
  4. {
  5.         int i;
  6.         for(i=2;i<255;i++)
  7.                 printf("192.168.1.%d\t\t00:00:00:00:00:00\n",i);
  8. }
复制代码

gcc iproute.c -o iproute
将编译出一个可执行文件
注:不应该包括主机IP地址本身,所以从 2 循环到 254(255 是广播)

其次,生成一个 C 的 IP 地址和全为 00 的 MAC 地址

  1. # ./iproute > /etc/ethers
复制代码


tips: 上面的方法写于不会 shell 时候的我,利用 bash 的特性可以很简单的将上面步骤简化为

  1. # 修改于 2005.10.24
  2. # for((i=2;i<=254;i++));do echo -e "192.168.1.$i\t00:00:00:00:00:00";done > /etc/ethers
复制代码


再次,修改IP-MAC匹配列表
vi /etc/ethers
具体怎么该我就不用细说了,相信大家都会

最后,做静态 IP-MAC 绑定
arp -f

7、为了安全,建立防火墙,修改main路由表
默认的路由表应该有 192.168.10.0/24 和 172.17.0.0/16 网段的内容,为了安全,可以去掉
另外,如果是AS3的话,还会有 169.254.0.0/16 的路由,具体为什么我不知道,去掉
然后写一个防火墙教本,利用iptables,把你的机器变得更加坚固!


好了,终于写完了!
昨天和好好先生聊天,他说了一句话让我深有感触!
“任何东西只要你能活学活用,它的功能都会很强大!”
同志们,努力吧!

[ 本帖最后由 platinum 于 2006-10-13 12:43 编辑 ]

net.jpg (14.6 KB, 下载次数: 275)

网络拓扑图

网络拓扑图

论坛徽章:
0
2 [报告]
发表于 2004-04-14 18:38 |只看该作者

基于路由策略的IP地址控制

Good

论坛徽章:
0
3 [报告]
发表于 2004-04-14 19:33 |只看该作者

基于路由策略的IP地址控制

我感觉只要硬件稳定性够,网卡插槽够,完全可以做一个跑 NAT 的核心交换

论坛徽章:
0
4 [报告]
发表于 2004-04-15 10:31 |只看该作者

基于路由策略的IP地址控制

好贴!顶!

论坛徽章:
0
5 [报告]
发表于 2004-04-16 09:26 |只看该作者

基于路由策略的IP地址控制

强~~

论坛徽章:
0
6 [报告]
发表于 2004-04-16 10:27 |只看该作者

基于路由策略的IP地址控制

写得很好,考虑得也很周密。
但普通PC的网卡性能有限,你有没有试过同事有100-200台计算机要求这个LINUX网关交换数据包,没有吧,我可以说,就算你用的是3COM的网卡,基本上也无法负荷。
而用到如此浮动路由网络环境的企业一般也不会考虑用一台PC作为gateway来实现以上功能,所以在商业应用中的实际价值有限,对爱好者的实验环境来说是个好的方法。
不过还是佩服你得水平

论坛徽章:
0
7 [报告]
发表于 2004-04-16 10:29 |只看该作者

基于路由策略的IP地址控制

看来PC就是PC呀

论坛徽章:
0
8 [报告]
发表于 2004-04-16 11:29 |只看该作者

基于路由策略的IP地址控制

申请此帖进精华,此法可以给中小企业的网管们多一个价廉物美的选择。

论坛徽章:
0
9 [报告]
发表于 2004-04-16 11:33 |只看该作者

基于路由策略的IP地址控制

[quote]原帖由 "andyliu"]此法可以给中小企业的网管们多一个价廉物美的选择。[/quote 发表:

为什么呢?

论坛徽章:
0
10 [报告]
发表于 2004-04-16 12:01 |只看该作者

基于路由策略的IP地址控制

其实LINUX中的ip rule相当于CISCO router的策略路由。
用PC代替专业路由器节约了成本,这就考虑到底是银子重要还是性能重要了。

“这里,我们还可以做一个小技巧,不告诉别人192.168.10.xx的地址,只告诉他们网关192.168.1.1上有这个服务
iptables -t nat -A PREROUTING -d 192.168.1.1/32 --dport 21 -j DNAT --to 192.168.10.xx:21 ”

这个方法好像更简单些,起码解释起来方便,而且画拓扑图也好画些。不过192.168.10.xx网段里如果还有其他机器也要你开放FTP服务,用NAT的方法就无法实现了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP