找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4513|回复: 8

[转贴]基于路由策略的IP地址控制

[复制链接]
发表于 2005-5-5 22:47:59 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

×
基于路由策略的IP地址控制 作者:白金 网名:platinum(chinaunix) 超超白金(白金论坛) 欢迎转载,转载请保留上述信息 =========================================================================== 最近做了一套路由策略,觉得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.96 也就是说,走172.17.1.1路由的人,也应该能访问192.168.10.96,且可以上网 三、解决方案 要解决这个问题,用到了一下几个命令,具体使用方法需要另查资料 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 代码: # # reserved values # 255     local 254     main 253     default 0       unspec 200     NET10 # # local # #1      inr.ruhep  上面那个200 NET10为新添加,自定义编号为200,名字为NET10 3、向NET10路由中添加它自己的默认路由 代码: 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到路由表中 代码: 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的 怎么才能实现呢?再添加个策略就可以了! 代码: ip rule add to 192.168.10.xx pref 10001 table NET10  这句话的意思是说,所有人,如果目的IP是192.168.10.xx,则临时使用NET10的路由表 这样做,安全会不会有安全问题呢?路由变了,他们会不会访问到专用网络呢? 不会的,因为路由规则是to 192.168.10.xx,也就是目标是96时,才该路由的,访问别的网站还是走原来的路由。 如果说访问到专用网络的机器,也就只有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:21 6、防止其他人篡改IP地址而获得特殊权限 arp有个静态功能CM,不是C,大家可能知道 如果给一个IP地址强行绑定一个非他自己的MAC,会怎么样呢?双方会话将会失败! 好,我们来利用这一点! 首先,我写了一个文件iproute.c 代码: #include  #include  main () {         int i;         for(i=2;i /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,把你的机器变得更加坚固! 好了,终于写完了! 昨天和好好先生聊天,他说了一句话让我深有感触! “任何东西只要你能活学活用,它的功能都会很强大!” 同志们,努力吧!
net.jpg
routeros
发表于 2005-5-5 23:10:11 | 显示全部楼层
第6点写得比较特别。生成一张空的MAC表,会出现问题,请楼主考虑。如果要一条条地改MAC的对应关系,这样做好象不是最好的做法。用MAC来绑的方法,之前有不少讨论了。
routeros
回复

使用道具 举报

 楼主| 发表于 2005-5-5 23:46:49 | 显示全部楼层
会出什么样的问题呢??
routeros
回复

使用道具 举报

发表于 2005-5-6 00:12:11 | 显示全部楼层
你的这个方案到第6条前,按我的理解是正确的。第6条不知是我的理解有误还是表达交待不清的原因,我认为对所谓的非授权用户的正常使用有影响。原因是如果不对每个IP做MAC对应,就会出现不能访问的问题。这样做,如果用户数量有限并且相对固定,当然是可能接受的,但正如我之前所说,不是一个好的解决办法。不知道这个方案实际上是否已经被使用了?
routeros
回复

使用道具 举报

 楼主| 发表于 2005-5-6 00:29:54 | 显示全部楼层
这个方案是使用了才写文档的..  详见:http://bbs.chinaunix.net/forum/viewtopic.p...hlight=platinum
routeros
回复

使用道具 举报

发表于 2005-5-6 00:57:44 | 显示全部楼层
我所指的是这部分:...注:不应该包括主机IP地址本身,所以从2循环到254(255是广播) 其次,生成一个C的IP地址和全为00的MAC地址 代码: ./iproute > /etc/ethers 再次,修改IP-MAC匹配列表...这种修改是手工的,比较的麻烦,情况上面已经说清楚了。另:你莫非就是原文的作者?或是这个方案的执行者?
routeros
回复

使用道具 举报

 楼主| 发表于 2005-5-6 01:11:01 | 显示全部楼层
我是作者的朋友..   过几天他回来这个论坛的.. 这久他在忙实验failover(LINUX路由器热备份)
routeros
回复

使用道具 举报

发表于 2005-5-6 04:27:16 | 显示全部楼层
在搞 failover?很好啊! 有什么进展可以通报一下,我们也来看看。
routeros
回复

使用道具 举报

 楼主| 发表于 2005-5-6 14:59:09 | 显示全部楼层
好像你依然没说出方案中的第六点会出什么问题...
routeros
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|手机版|小黑屋|软路由 ( 渝ICP备15001194号-1|渝公网安备 50011602500124号 )

GMT+8, 2024-11-24 02:14 , Processed in 0.065096 second(s), 6 queries , Gzip On, Redis On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表