Top Banner
KVM&Open vswitchVPS作ってみる Twitter @mamesan
15

OpenvswitchでVPS

Jan 29, 2018

Download

Technology

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: OpenvswitchでVPS

KVM&Open vswitchでVPSを作ってみる

Twitter @mamesan

Page 2: OpenvswitchでVPS

某NIに勤務していました

主にC社のRouterやSwitchなどを使ってお客様ネットワークの設計構築してました。

Twitter @ mamesan

自己紹介

Page 3: OpenvswitchでVPS

rootがもらえるレンタルサーバーです。

       さんなどがサービスしています

OSも結構選べてすぐ使える!

VPSってなに?

Page 4: OpenvswitchでVPS

某社さんは言っていたハイパーバイザーはKVM

仮想スイッチはOpen vSwtich

OSS!家で再現できるかも?作ってみよう!

Page 5: OpenvswitchでVPS

インストールOpen vSwtichをもってくるhttp://openvswitch.org/

RPMないけどSPECあります。rpmbuildすれば管理も楽!まだ作成途中ですがWikiもありますhttp://www57.atwiki.jp/openvswitch/

Open vSwitch

NIC

TAP

VMTAP

VMTAP

VMTAP

VM

Page 6: OpenvswitchでVPS

仮想サーバへの仮想のNICアサインqemu-kvmで普通にVMを作ります。作成するときにVlanをアサインしてください

/usr/libexec/qemu-kvm -daemonize -M rhel6.0.0 -cpu qemu64 -enable-kvm -m 2048 -smp 1,sockets=1,cores=1,threads=1 -name Centos01 -rtc base=utc -cdrom CentOS-6.2-x86_64-bin-DVD1.iso -hda vm0001.img -boot order=cd -net nic,vlan=101,macaddr=52:54:00:00:01:01,model=virtio,name=nc1 -net tap,vlan=101,ifname=port_Centos01_1,script=/etc/ovs-ifup-br0,downscript=/etc/ovs-ifdown-br0 -monitor telnet::10001,server,nowait -vnc :1 -k ja -vga cirrus -serial pty -parallel none -monitor pty

この状態でovsにTAPが作成され、VMに仮想NICがアサインされます。ただし、ovsにはVLANがアサインされていません。

Page 7: OpenvswitchでVPS

仮想NICへのVLANアサインovs-vsctlコマンドでTAPにVLANをアサインします

/usr/bin/ovs-vsctl set port port_Centos01_1 tag=101

確認コマンドovs-vsctl show69589346-879f-4ff5-b69d-d9b3453c8531 Bridge "br0" Port "port_Centos01_1" tag: 101 Interface "port_Centos01_1" Port "eth0" Interface "eth0" Port "br0" Interface "br0" type: internal

注意: TAP名は自由に決められますが「-」や「*」など使用不可の文字があります。

Page 8: OpenvswitchでVPS

仮想OSでできること仮想OSはrootが使える。ってことは?

IPアドレスやMACアドレスの変更は自由

vrrpdなどのプログラムも実行したい放題

これはまずい!

Page 9: OpenvswitchでVPS

仮想スイッチの要件IPアドレスやMACアドレスなりすまし対策

ユーザーに払い出したアドレス以外は通信させない

通信プログラム対策

vrrpdやospfdなどはトラブルのもとになるので通信させない

Page 10: OpenvswitchでVPS

フィルタの作成OVS内蔵のOpenFlowコントローラを利用

ovs-ofctlコマンドでフローを作成ovs-ofctl add-flow br0 in_port=2,priority=0,actions=drop

ovs-ofctl add-flow br0 in_port=2,priority=0,nw_src=224.0.0.0/4,actions=drop

ovs-ofctl add-flow br0 in_port=2,dl_src=52:54:00:00:01:01,priority=100,ip,nw_src=192.0.2.1,actions=normal

ovs-ofctl add-flow br0 in_port=2,dl_src=52:54:00:00:01:01,priority=100,arp,nw_src=192.0.2.1,actions=normal

注意: in_port=の数字は可変です。仮想ポート(TAP)ごとに1から順に採番されますovs-ofctl show で

   確認できます。

: Priorityを入れないとFlowは登録されますが、効きませんでした

Page 11: OpenvswitchでVPS

確認コマンドFlowテーブルの確認

ovs-ofctl dump-flows br0 ovs-ofctl dump-flows br0

NXST_FLOW reply (xid=0x4):

cookie=0x0, duration=65.37s, table=0, n_packets=17, n_bytes=1266, priority=0,in_port=2 actions=drop

cookie=0x0, duration=65.363s, table=0, n_packets=4, n_bytes=240, priority=100,arp,in_port=2,dl_src=52:54:00:00:01:01,nw_src=10.0.1.1 actions=NORMAL

cookie=0x0, duration=65.365s, table=0, n_packets=11, n_bytes=1098, priority=100,ip,in_port=2,dl_src=52:54:00:00:01:01,nw_src=10.0.1.1 actions=NORMAL

cookie=0x0, duration=65.367s, table=0, n_packets=0, n_bytes=0, priority=0,ip,in_port=2,nw_dst=224.0.0.0/4 actions=drop

cookie=0x0, duration=93343.255s, table=0, n_packets=186, n_bytes=16490, priority=0 actions=NORMAL

Page 12: OpenvswitchでVPS

家VPS構成ルーター

KVM

NIC

NIC

Open vSwitch

管理用スイッチ

10.0.1.0/24~10.0.10.0/24

192.168.1.0/24

Page 13: OpenvswitchでVPS

デモOSを立ち上げてとりあえず通信

IPアドレスを変更してみる

MACアドレスを変更してみる

Page 14: OpenvswitchでVPS

はまったこと

物理NICに出ていくときにエラーググッても出てこない変なエラー!NICドライバの相性?でした。Intelにしたら解決!HP NIC・・・

qemuのvlanとOVSのvlanは両方設定qemuでVM作ったあとに、OVSにもちゃんとVLANの割り当てが必要。

Page 15: OpenvswitchでVPS

今後の予定WEB画面からVMを作成/削除できるようにする

PHPとDBで作成中

複数のOVS間でトンネルを作成し、L3経由のL2通信をさせるOVSのFlow管理がめんどうになりそうなので、コントローラを利用する