兰彻 发表于 2013-3-12 15:20:55

请教 2层bridge防火墙 如何阻止回应拨号691错误

pppoe拨号分为2个阶段
第一个阶段是pppoe discovery
第二个阶段是pppoe session
第一个阶段有四次握手分别是PADI,PADO,PADR,PADS.目前我遇到的难题是如何实现2个pppoeserver共存。一个pppoeserver是电信的,一个pppoeserver是联通的。我看了这样的一个英文文档 http://mum.mikrotik.com/presentations/AE12/charbel.pdf ,觉得很有参考意义,但是和我的实际情况不是一样。文档是利用bgp协议实现2个一模一样的4个pppoesever共存。ospf协议应该也可以。大玩家大大已经解决了没有vlan情况下2个pppoeserve共存的问题,方式非常巧妙。先利用radius免认证搭建pppoeserver。用户默认拨号到自己的pppoeserv上,然后收集用户名和mac地址根据用户名特征来识别用户属于电信还是联通。但是一旦加上vlan,这个问题就编的很复杂了。一个稍微大一点的网络没有vlan基本是不可能的、
在论坛多位高人的指点下,想到一个思路,默认阻断所以的pppoe discovery,允许所以的pppoe session,如这个文档一样。一次只开一个端口接受pppoe discovery。2个上联电信pppoeserver和上联联通pppoeserver的端口轮流打开。例如有一个电信的用户拨号是正好是联通的端口打开了,这样电信的pppoeserver会回应691错误。用户再拨好,正好电信的端口允许pppoe discovery.这样顺利的拨上号建立的pppoe session。用这样的脚本能不能拨上号有很大的巧合性,可能要拨号4,5次才能报上,建立一个pppoe discovery可能要几秒钟,准备让这个脚本3秒切换一次。如果能阻断pppoeserver目的地址691的错误回包。脚本就完美很多了。这样就不要考虑vlan,用户名的问题的。

目前遇到2个难题
难题一这个脚本怎么写
难题二怎样阻止pppoeserver 691的错误回包

rosabc 发表于 2013-3-12 18:56:16

没有VLAN的内网环境做多个pppoe-server很简单,和做一个没什么区别,只是多个pppoeserver和一个RADIUS对接。
如果多个VLAN,每个VLAN放一个pppoeserver,多个pppoeserver也和一个RADIUS对接。
如果你的pppoe-server够强劲,一个pppoeserver在接口划分多VLAN,每VLAN一个pppoe服务Instance,可供多个VLAN用户连接。

glb323 发表于 2013-3-12 19:03:34

rosabc 发表于 2013-3-12 18:56 static/image/common/back.gif
没有VLAN的内网环境做多个pppoe-server很简单,和做一个没什么区别,只是多个pppoeserver和一个RADIUS对接。 ...

lz好像不是那个意思。
他的意思是多个pppoe server对应不同的radius,对应不同的用户。一般情况下会出现691错误,想要解决这个问题。

兰彻 发表于 2013-3-12 23:56:44

rosabc 发表于 2013-3-12 18:56 static/image/common/back.gif
没有VLAN的内网环境做多个pppoe-server很简单,和做一个没什么区别,只是多个pppoeserver和一个RADIUS对接。 ...

我这里有2个bras接入我的链路,以前通过划分vlan来解决,这样的方法是在是太麻烦了。例如vlan1下的用户是联通的,那天他一开心改用电信的,我就要包这个端口划分到vlan2下,大师你不觉得这样做很2吗?所以想通过ros智能选择。开始以为大玩家大大完美解决这个终极难题了。后来加上vlan就傻眼了。
大玩家家大大的思路是首先建立一个pppoeserv,做个免认证,所以的账号都能拨上号,然后抓取这个用户的用户名和mac地址。识别用户名的特征判断这个用户属于电信还是联通,然后为这个用户指定pppoe discovery数据包的出口。真心觉得这个方案很巧妙。但是为什么有vlan就歇菜了,郁闷啊

9939781 发表于 2013-3-13 00:10:34

本帖最后由 9939781 于 2013-3-13 00:12 编辑

这样做维护量太大了伙计,后期会把人搞疯的。而且判断用户名是有个过程的,这样搞不是长久之计。

rosabc 发表于 2013-3-13 00:48:06

如果仅仅想让不同用户走不同运营商,不用考虑用户在哪个VLAN,不用考虑有几台RADIUS,用pppoe地址池就可以了。
现在RADIUS都支持对用户下发地址池参数,然后不同地址池走不同运营商就行了。

glb323 发表于 2013-3-13 00:49:23

我感觉这个问题还是应该在radius里解决,给用户加个属性,拨号的时候去判断用户是电信还是联通,然后下发信息给ros,然后ros分配相应的地址给用户,从而让用户使用联通或者电信的网络

glb323 发表于 2013-3-13 00:56:05

rosabc 发表于 2013-3-13 00:48
如果仅仅想让不同用户走不同运营商,不用考虑用户在哪个VLAN,不用考虑有几台RADIUS,用pppoe地址池就可以了 ...

同意你这个

兰彻 发表于 2013-3-13 01:18:43

rosabc 发表于 2013-3-13 00:48 static/image/common/back.gif
如果仅仅想让不同用户走不同运营商,不用考虑用户在哪个VLAN,不用考虑有几台RADIUS,用pppoe地址池就可以了 ...

大师你这样做是没有用的,我为这个问题熬夜十个晚上以上了。你用这种方法能解决我真要膜拜了。2个bas是电信和联通的。只是小区的链路是老板自己搭建的。电信和联通都把以太出口给卡死了。用这种方式合作。

rosabc 发表于 2013-3-13 02:03:35

兰彻 发表于 2013-3-13 01:18 static/image/common/back.gif
大师你这样做是没有用的,我为这个问题熬夜十个晚上以上了。你用这种方法能解决我真要膜拜了。2个bas是电 ...

不论什么方式合作,不论你电信和联通怎么卡死你了,至少你的电信和联通是可以上网的,这就足够了。
你难道对你内网没有完全控制权?你如果有完全控制权,这就更足够了.

ksw520 发表于 2013-3-13 10:17:37

之前处理过这样的一个网络,也是没想到比较好的方式。
目前的思路是,电信用户的mac地址,允许从指定的端口通过,
比较简单的用桥做mac地址过滤,用户多了ros处理效率是个问题,一直没机会测试rb系列所带的switch这方面的性能,
用交换机性能稍微好点,可管理上是个麻烦,不方便做mac地址查找和添加。
楼主可以了解下VMPS的内容,用户多管理相对容易些。

tangdong 发表于 2013-3-13 10:36:51

这个问题确实比较难搞!!去年本来是想在交换机上做点文章

表于 2012-08-26 11:50 | 只看该作者 9303能不能做到通过用户名包含的域来选择BAS 现在环境是9303上联挂了两台BAS,用户拨号随机选择,基本是各自一半的概率,我先前的想法是叫运营商那边给两台BAS起不同的服务名,我再给用户填写服务名来区分,两台BAS属于两家运营商的,我现在客户拨号691的概率很大,运营商也不太配合做这个事情,没办法,想问问93上面能不能做到,用户名为@163的选择BAS-A,用户名为@16900的选择BAS-B

华为的高级点的交换机可以做基于数据包前80个字节的ACL匹配规则,然后我就想用用户名中特定的@163和 @16900来配合ACL做,实验了不行,然后华为给的答复是不支持非标准协议的匹配。麻烦点的做法就是把用户少的那边的MAC全部记录下来,deny掉它们和本地BAS的通信:lol:lol

兰彻 发表于 2013-3-13 11:05:13

tangdong 发表于 2013-3-13 10:36 static/image/common/back.gif
这个问题确实比较难搞!!去年本来是想在交换机上做点文章

表于 2012-08-26 11:50 | 只看该作者 9303能不 ...

关键难搞的就是pppoe discovery这个阶段,一个有4个握手包。PADI,PADO,PADR,PADS.而且这是一个2层的广播包。就是所有在这个局域网里的bras都可以收到,谁能先收到,就要看bras的远近了。在桥防火墙那里过滤mac是唯一的办法。不管怎么样都绕不开mac这个坎。到时有为大师发了一个帖子要50金币才能看。他是用radius解决的。但是我觉得理论就行不通。如果能行的通那过程就是这样的。例如我在radius建立一个dx123,密码123的用户。这时候dx123拨号上来。ros首先请求radius。radius发现这这账号符合,然后告诉ros,这个账号是对的,但这账号不归我管,这个账号是电信的,把这个pppoediscovery请求转发的电信的出口。然后ros把这个pppoe discovery请求转发到电信的bras,电信发现这个账号是对的,于是建立的pppoe session。radius可以控制ros转发pppoediscovery吗?很疑问,帖子看不了啊

兰彻 发表于 2013-3-13 11:24:27

ksw520 发表于 2013-3-13 10:17 static/image/common/back.gif
之前处理过这样的一个网络,也是没想到比较好的方式。
目前的思路是,电信用户的mac地址,允许从指定的端口 ...

谢谢大师,指点。

wasps 发表于 2013-3-14 20:40:57

如果你对用户有完全控制权,就在ros上做个桥,将电信和联通的接口放入一个桥内,再在桥内对每个用户的mac建立建立两个规则,一个建立在出电信或一个联通的出口上,一个默认input即可。再在下面建立一个dorp所有!
这样,当第一个出口规则是dorp时,假设为联通。那么这时拥有联通的用户拨号时就不绝不会跑电信的,会自动跑联通的,不会报691,电信的也不会报691。如果那天联通的人想跑回电信的,直接把前面那个dorp规则dis掉就可以了。只不过这样做,先期要做几天的MAC收集,建立个脚本让它自动处理即。
页: [1] 2
查看完整版本: 请教 2层bridge防火墙 如何阻止回应拨号691错误