Chinaunix首页 | 论坛 | 博客
  • 博客访问: 170809
  • 博文数量: 33
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 501
  • 用 户 组: 普通用户
  • 注册时间: 2013-03-26 11:00
文章分类

全部博文(33)

文章存档

2014年(11)

2013年(22)

我的朋友

分类: LINUX

2014-01-14 19:00:24

由于我们假定WTP不知道AC的IP地址是多少,所以WTP需要盲目的找:
  • 用224.0.1.140为目的地址发送Discover包
  • 用255.255.255.255为目的地址发送Discover包
我更倾向于224.0.1.140.(RFC5415有规定224.0.1.140为CAPWAP用的组播地址),基于此,我们有以下问题要注意:

1. AC需要在处理目的地址224.0.1.140的包

为了让AC处理目的地址224.0.1.140的包,需要配置config.ac:

  1. ...
  2.   <AC_MCAST_GROUPS>
  3.   ...
  4. + 224.0.1.140
  5.   ...
  6.   </AC_MCAST_GROUPS>
  7.   ...
即需要在AC_MCAST_GROUPS域里添加224.0.1.140这么一行,否则AC不会去处理目的地址为224.0.1.140的包。

而我们要求WTP在224.0.1.140这个组里发现AC,所以AC必须出来目的地址为224.0.1.140的包。

2. WTP把发现包发往224.0.1.140

为了让WTP把发现包发往224.0.1.140,需要修改config.wtp:

  1. ...
  2.   <AC_ADDRESSES>
  3.   ...
  4. + 224.0.1.140
  5.   ...
  6.   </AC_ADDRESSES>
  7.   ...
添加224.0.1.140这样一行的话,WTP就会把发现包发往224.0.1.140

3. 添加224.0.1.140的路由规则

在我们目前的嵌入式路由设备上,通过udp包发往组播地址的数据包是发送不出去的,但是如果添加一条这个组播地址的主机路由就可以发送得出去。

所以,我们需要在WTP运行所在的嵌入式设备中添加这么一条主机路由:

  1. route add -host 224.0.1.140 dev eth1
NOTE:
* eth1是WAN连接设备(不考虑PPPoE等连接方式)
* 这个还需要完善,因为eth1设备一down掉,这个路由规则就没了,而我们要求这个规则一直存在,要不然需要发发现包时就发送不出去。

4. 添加iptables规则

因为WTP发送发现包是发往224.0.1.140的,AC在收到这个发现包时,是以单播的方式回复WTP的,而这个回复包在WTP所在的设备中并没有对应的连接跟踪条目,因此就会给这个回复包建立一个NEW状态的连接跟踪。

而filter表的INPUT链中,会把来自WAN侧、并且连接跟踪状态是NEW的数据包DROP掉,从而导致WTP与AC无法连接。

考虑到AC给WTP的回复包的协议类型是UDP,源端口是1234,所以我们需要在WTP所在的设备上加入这么一条iptables规则:

  1. iptables -A INPUT -p udp --sport 1234 -j ACCEPT
这样,AC给WTP的回复包就不会被丢掉,从而使得WTP与AC的连接过程得以继续。







阅读(2833) | 评论(1) | 转发(0) |
0

上一篇:文件上传与下载

下一篇:差距

给主人留下些什么吧!~~

donwu20082014-06-23 19:59:12

前两天搞这个,在255.255.255.255上发Discovery包老发不出去,最后才发现少了路由,早看到就不用郁闷了