公司需要一款可以检查网络的软件,之后任务分配到我们组
经过讨论最终方案是以wireshark为版本,进行二次开发,主要目的在于简化上层操作复杂性(软件使用人群为非专业性的)
软件分为三部分,其一底层网络,其二wireshark抓包(做一层封装,只要需要的结构数据),其三上层应用
因平时比较关注运维的一些东西,所以分配了底层网络,与上层应用中的数据统计部分
这里主要记录底层网络配置过程,以备后忘!
简述
底层网络在开始时只需要转发数据包就可以,所以我当时的策略是:配置软路由(因配置简单,且网上资料很多,这里就不说了)
后因为需求增加,软路由已无法满足,百般搜寻中,想起了以前配置openstack时网络组件中的一款软件--也就是接下来要说明的软件 Openvswitch
配置版本
系统版本:ubuntu 12.04.3 STL Desktop 64位
软件版本:openvswitch-1.9.3.tar.gz
注:最新版本更新到2.0.1
更新系统:
apt-get update && apt-get -y upgrade
安装前的软件准备:
apt-get -y install build-essential && apt-get -y install openssl && apt-get -y install ssh && apt-get -y install vim
注:build-essential 是ubuntu提供的开发工具包,其中包括gcc,g++,make等。openssl 下文安装软件需要,ssh与vim都是个人习惯,可以选择不安装
OpenVswitch下载地址: http://openvswitch.org/download/
解压: # tar -xzf openvswitch-1.9.3.tar.gz
安装:
此处需要注意:预编译需指明内核源码的目录
具体如下: ~# ./configure --with-linux=/lib/modules/`uname -r`/build
编译: ~# make
编译安装: ~# make install
OVS内核模块安装: ~# sudo insmod ./datapath/linux/openvswitch.ko
检查ovs模块是否已安装:
~# lsmod | grep openvswitch
openvswitch 47849 0
继续安装内核模块: ~# sudo make modules_install
至此软件安装完成,接下来就是配置了
配置:
新建OpenVSwitch配置文件和数据库:
~# mkdir -p /usr/local/etc/openvswitch
~# ovsdb-tool create /usr/local/etc/openvswitch/conf.db /usr/local/share/openvswitch/vswitch.ovsschema
启动:
~# ovsdb-server --remote=punix:/usr/local/var/run/openvswitch/db.sock --remote=db:Open_vSwitch,manager_options --private-key=db:SSL,private_key --certificate=db:SSL,certificate --bootstrap-ca-cert=db:SSL,ca_cert --pidfile --detach
注:如果你安装 Open vSwitch 时没有加SSL 支持(即安装openssl),需省略--private-key, --certificate, and --bootstrap-ca-cert
查看启动情况:
~# ps -ef | grep ovsdb-server
初始化数据库:
~# ovs-vsctl --no-wait init
注:仅需在第一次创建数据库时运行,但是每次都运行也没问题
启动Open vSwitch daemon,连接到同样的Unix domain socket上
~# ovs-vswitchd --pidfile --detach
注:成功后,会有三个进程,一个ovs_workeq进程,一个ovs-vswitchd进程,一个ovsdb-server进程
升级暂未用到,这里先不予说明了
服务器网络配置:
注:因在openvswitch未启动时,br0是不存在的,为防止开机启动网络消耗时间,所以需要在之后的开机启动脚本中加以控制
文件名称:interfaces.switch
auto lo
iface lo inet loopback
auto br0
iface br0 inet dhcp
auto eth0
iface eth0 inet manual
up ifconfig eth0 up
auto eth1
iface eth1 inet manual
up ifconfig eth1 up
文件名称:interfaces
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet manual
up ifconfig eth0 up
auto eth1
iface eth1 inet manual
up ifconfig eth1 up
Openvswitch设置:
添加名为br0的网桥:
~# sudo ovs-vsctl add-br br0
列出所有网桥:
~# sudo ovs-vsctl list-br
将网络端口eth0挂接到网桥br0上:
~# sudo ovs-vsctl add-port br0 eth0
列出挂接到网桥br0上的所有网络接口:
~# sudo ovs-vsctl list-ports br0
eth0
eth1
列出已挂接eth0网络接口的网桥:
~# sudo ovs-vsctl port-to-br eth0
br0
查看结果:
~# sudo ovs-vsctl show
7578df6c-7121-4a9a-8ecb-e7142d94c88e
Bridge "br0"
Port "eth0"
Interface "eth0"
Port "eth1"
Interface "eth1"
Port "br0"
Interface "br0"
type: internal
查看虚拟交换机信息:
~# sudo ovs-ofctl show br0
OFPT_FEATURES_REPLY (xid=0x1): dpid:000000e04c36005c
n_tables:255, n_buffers:256
capabilities: FLOW_STATS TABLE_STATS PORT_STATS QUEUE_STATS ARP_MATCH_IP
actions: OUTPUT SET_VLAN_VID SET_VLAN_PCP STRIP_VLAN SET_DL_SRC SET_DL_DST SET_NW_SRC SET_NW_DST SET_NW_TOS SET_TP_SRC SET_TP_DST ENQUEUE
1(eth1): addr:00:e0:4c:36:00:5c
config: 0
state: LINK_DOWN
speed: 100 Mbps now, 100 Mbps max
2(eth0): addr:00:e0:4c:5a:ea:60
config: 0
state: 0
current: 1GB-FD AUTO_NEG
advertised: 10MB-HD 10MB-FD 100MB-HD 100MB-FD 1GB-HD 1GB-FD COPPER AUTO_NEG AUTO_PAUSE AUTO_PAUSE_ASYM
supported: 10MB-HD 10MB-FD 100MB-HD 100MB-FD 1GB-HD 1GB-FD COPPER AUTO_NEG
speed: 1000 Mbps now, 1000 Mbps max
LOCAL(br0): addr:00:e0:4c:36:00:5c
config: 0
state: 0
speed: 100 Mbps now, 100 Mbps max
OFPT_GET_CONFIG_REPLY (xid=0x3): frags=normal miss_send_len=0
开机启动脚本:
注:开机启动需注意,权限问题
#!/bin/bash
sudo echo "------------- [start `date`] --------">>/home/haier/log.txt
sudo ovsdb-server --remote=punix:/usr/local/var/run/openvswitch/db.sock --remote=db:Open_vSwitch,manager_options --private
-key=db:SSL,private_key --certificate=db:SSL,certificate --bootstrap-ca-cert=db:SSL,ca_cert --pidfile --detach
sudo echo " ------------- [1 `date`] --------">>/home/haier/log.txt
sudo ovs-vsctl --no-wait init
sudo echo " ------------- [2 `date`] --------">>/home/haier/log.txt
sudo ovs-vswitchd --pidfile --detach
sudo echo " ------------- [3 `date`] --------">>/home/haier/log.txt
sudo mv /etc/network/interfaces /etc/network/interfaces.default
sudo mv /etc/network/interfaces.switch /etc/network/interfaces
sudo /etc/init.d/networking restart
sudo mv /etc/network/interfaces /etc/network/interfaces.switch
sudo mv /etc/network/interfaces.default /etc/network/interfaces
sudo echo " ------------- [4 `date`] --------">>/home/haier/log.txt
#sudo /usr/bin/xbmc
sudo echo "------------- [end `date`] --------">>/home/haier/log.txt
参考资料:
http://pan.baidu.com/s/1jGftQp4