目标:openflow交换机实现两个SSID,客户端通过wifi连接其中一个只能进行内部通信,不能连接外网;连接另一个能连接外网
1,进入OpenWrt界面,创建端口wlan0,内部使用:
见文章OpenWrt: Create and configure a new wireless controller :
http://blog.csdn.net/qq_15437629/article/details/51250979
2,创建端口wlan0-1:
同上,但不需要另外创建interface(不配置DHCP服务器,通过控制器启动相应的NAT、DHCP模块可用于连接外网)
3,ssh进入交换机检查网桥配置,添加wlan端口
ovs-vsctl add-port br0 wlan0 tag=8
ovs-vsctl add-port br0 wlan0-1 tag=7
初始配置文件在目录:/etc/init.d/ovs-set 下。
4,控制器端:
./pox.py misc.nat --outside_port=eth0.1 --dpid=7 openflow.discovery forwarding.l2_pairs samples.pretty_log
#指定连接外网的交换机dpid与端口号,用于实现nat转换与ip分配功能#
源码下载:https://github.com/pkpk8/NATDHCP
OpenWrt安装tcpdump抓包分析
tcpdump是一个运行在命令行下的嗅探工具,它允许用户拦截和显示发送或收到过网络连接到该计算机的TCP/IP和其他数据包。OpenWrt + tcpdump = 抓包神器。
tcpdump(命令) + wireshark(图形化)
操作过程:
1,交换机端通过进行tcpdump -w /tmp/tcp.cap 指定输出外部文件
2,scp /tmp/tcp.cap 拷贝文件到本地
3,wireshark & 启动wireshark,
4,通过 File -> Open 打开拷贝下来的文件,这样就可以利用进行数据包分析了
剩下来的事就非常方便了
详细步骤:
openwrt 官方已经有tcpdump软件的安装包,安装过程很简单:
opkg update
opkg install tcpdump
无联网时也可通过传入事先下载的tcpdump ipk进行安装。
12.09 ipk下载地址:https://downloads.openwrt.org/attitude_adjustment/12.09/ar71xx/generic/packages/
抓包,例如某个接入的客户端分配ip=192.168.1.100:
tcpdump src 192.168.1.100 or dst 192.168.1.100 -w test.cap
抓包得到的 log 文件 test.cap 可以用 wireshark 打开进行过滤分析
tcpdump命令行格式:
tcpdump [ -adeflnNOpqStvx ] [ -c 数量 ] [ -F 文件名 ][ -i 网络接口 ] [ -r 文件名] [ -s snaplen ][ -T 类型 ] [ -w 文件名 ] [表达式 ]
常用的参数:
-l 使标准输出变为缓冲行形式;
-n 不把网络地址转换成名字;
-c 在收到指定的包的数目后,tcpdump就会停止;
-i 指定监听的网络接口;(如果没有指定可能在默认网卡上监听,需要指定绑定了特定IP的网卡)
-w 直接将包写入文件中,并不分析和打印出来;
-s 指定记录package的大小,常见 -s 0 ,代表最大值65535,一半linux传输最小单元MTU为1500,足够了
-X 直接输出package data数据,默认不设置,只能通过-w指定文件进行输出
常用表达式:
关于类型的关键字,主要包括host,net,port
传输方向的关键字,主要包括src , dst ,dst or src, dst and src
协议的关键字,主要包括fddi,ip ,arp,rarp,tcp,udp等类型
逻辑运算,取非运算是 ‘not ’ ‘! ‘, 与运算是’and’,’&&’;或运算 是’or’ ,’||’
其他重要的关键字如下:gateway, broadcast,less,greater
控制器端传入文件,之后用Wireshark分析,妥妥的:
scp root@192.168.1.7:/tmp/test.cap /home/zlk/