今回行うこと
- NATに対しポートフォワーディングの設定によりWindowsからSSHで接続できるようする。
- ホストオンリーネットワークを各マシンに追加する。
- ホストオンリーネットワーク間でルーティングがされるようにする。
- OpenVNetを動かすために必要な設定を行う。
背景
OpenVNetとは仮想ネットワークを構築するソフトウェアです。このOpenVNetではマシン間の通信に同一ネットワーク上のマシン間で使うMAC2MACとL3スイッチをまたいでつながる二つのネットワーク間で使うGREトンネルの2種類の方法を使います。そのために、CentOS3台のマシンとMAC2MAC、GREトンネルの二つの通信を試すことのできるネットワークを無料で用意できる環境を探し、その結果VirtualBoxを使用することにしました。
概要
VirtualBoxでCentOS6.7の仮想マシン4台を用意し、下図のようにOpenVNetを動作させるために必要となるネットワークをホストオンリーネットワークで3つ(黒線)、CentOSがインターネットに接続する&ホストマシンのWindowsからSSHで接続するためにつかうNAT接続を1つ(緑線)の計4つのネットワークを設定していきます。
準備
Windows(64bit) 32bit環境ではOpenVNetは2015/9/29現在は動きません
VirtualBoxをダウンロード・インストール
CentOS-6.7-x86_64-bin-DVD1.iso & CentOS-6.7-x86_64-bin-DVD2.iso または CentOS-6.7-x86_64-minimal.isoをダウンロード
VirtualBox
ネットワークの生成
VirtualBoxを立ち上げると出てくるOracle VM VirtualBoxマネージャーで
- ファイル→環境設定をクリック
- ネットワーク→ホストオンリーネットワーク→プラスマークのついているアイコンをクリック
- VirtualBox Host-Only Ethernet Adapter #2が作られたことを確認
- 同じようにプラスマークをクリックしVirtualBox Host-Only Ethernet Adapter #3が作成されたことを確認
- それぞれのネットワークを選択してドライバーアイコンをクリックしIPアドレスを確認
私の設定ではそれぞれのIPアドレスが
VirtualBox Host-Only Ethernet Adapter :192.168.56.1
VirtualBox Host-Only Ethernet Adapter #2:192.168.125.1
VirtualBox Host-Only Ethernet Adapter #3:192.168.198.1
になっています。
仮想マシンの作成
Oracle VM VirtualBoxマネージャーで仮想マシン4台を作ります。
- 新規をクリック
- 名前をVM0~3で作成(任意のものでよい)
- タイプをLinux、バージョンをRed Hat(64bit)を選択
- 残りの項目はすべて次へをクリックして問題ありません。
仮想マシンへのネットワークの設定
各仮想マシンのネットワークの設定を上図のようになるよう構築していきます。
以下の作業を各マシンで行います。
- 仮想マシンを右クリックし設定をクリックします。
- ネットワークを選択し、アダプタ1~3を選択で以下の作業を行います。
- ネットワークアダプタを有効化にチェックを入れて、割り当て名前を以下のように設定していきます。
マシン | アダプター | 割り当て | 名前 |
---|---|---|---|
VM0 | アダプター1 | NAT | |
VM0 | アダプター2 | ホストオンリーアダプター | VirtualBox Host-Only Ethernet Adapter |
VM0 | アダプター3 | ホストオンリーアダプター | VirtualBox Host-Only Ethernet Adapter #2 |
VM1 | アダプター1 | NAT | |
VM1 | アダプター2 | ホストオンリーアダプター | VirtualBox Host-Only Ethernet Adapter |
VM1 | アダプター3 | ホストオンリーアダプター | VirtualBox Host-Only Ethernet Adapter #3 |
VM2 | アダプター1 | NAT | |
VM2 | アダプター2 | ホストオンリーアダプター | VirtualBox Host-Only Ethernet Adapter |
VM2 | アダプター3 | ホストオンリーアダプター | VirtualBox Host-Only Ethernet Adapter #3 |
VM3 | アダプター1 | NAT | |
VM3 | アダプター2 | ホストオンリーアダプター | VirtualBox Host-Only Ethernet Adapter #2 |
VM3 | アダプター3 | ホストオンリーアダプター | VirtualBox Host-Only Ethernet Adapter #3 |
- アダプター1の高度→ポートフォワーディングをクリック
- SSH接続のため、各マシンでホストポートの値が被らないよう以下のように設定をしていきます
マシン0
名前 | プロトコル | ホストIP | ホストポート | ゲストIP | ゲストポート |
---|---|---|---|---|---|
Rule 1 | TCP | 2220 | 22 | ||
VM1 |
名前 | プロトコル | ホストIP | ホストポート | ゲストIP | ゲストポート |
---|---|---|---|---|---|
Rule 1 | TCP | 2221 | 22 | ||
VM2 |
名前 | プロトコル | ホストIP | ホストポート | ゲストIP | ゲストポート |
---|---|---|---|---|---|
Rule 1 | TCP | 2222 | 22 |
VM3
名前 | プロトコル | ホストIP | ホストポート | ゲストIP | ゲストポート |
---|---|---|---|---|---|
Rule 1 | TCP | 2223 | 22 |
これでWindowsからSSHもできるようになったと思います。
ssh -p <2220~2223> root@localhost
各マシンに入ったらSELINUXを切ります。
vi /etc/selinux/config
SELINUX=disabled
OpenVNet
ルーター
VM0を192.168.56.0と192.168.125.0間のルーターとして動作するよう設定します。
eth1の設定
vi /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
HWADDR=<既に設定されている値>
TYPE=Ethernet
# UUID=<既に設定されている値>
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=192.168.56.254
NETMASK=255.255.255.0
eth2の設定
vi /etc/sysconfig/network-scripts/ifcfg-eth2
DEVICE=eth2
HWADDR=<既に設定されている値>
TYPE=Ethernet
# UUID=<既に設定されている値>
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=192.168.125.254
NETMASK=255.255.255.0
ルータの機能を有効にします
echo 1 >/proc/sys/net/ipv4/ip_forward
vi /etc/sysctl.conf
net.ipv4.ip_forward = 1
仮想マシン
VM1~VM3の設定を行っていきます。
各マシンのeth0の設定を行います。
vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
HWADDR=<既に設定されている値>
TYPE=Ethernet
UUID=<既に設定されている値>
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=dhcp
各マシンのeth1の設定を行います。
vi /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
HWADDR=<既に設定されている値>
DEVICETYPE=ovs
TYPE=OVSPort
# UUID=<既に設定されている値>
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=none
OVS_BRIDGE=br0
各マシンのeth2の設定を行います。
vi /etc/sysconfig/network-scripts/ifcfg-eth2
DEVICE=eth2
HWADDR=<既に設定されている値>
TYPE=Ethernet
# UUID=<既に設定されている値>
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=<各マシンのIPアドレス>
NETMASK=255.255.255.0
各マシンのIPアドレスは
マシン名 | eth2 |
---|---|
VM1 | 192.168.198.10 |
VM2 | 192.168.198.11 |
VM3 | 192.168.198.12 |
各マシンでbr0を作成します
vi /etc/sysconfig/network-scripts/ifcfg-br0
DEVICE=br0
DEVICETYPE=ovs
TYPE=OVSBridge
ONBOOT=yes
BOOTPROTO=static
IPADDR=<各マシンのIPアドレス>
NETMASK=255.255.255.0
HOTPLUG=no
OVS_EXTRA="
set bridge ${DEVICE} protocols=OpenFlow10,OpenFlow12,OpenFlow13 --
set bridge ${DEVICE} other_config:disable-in-band=true --
set bridge ${DEVICE} other-config:datapath-id=<各マシンのdatapath-id> --
set bridge ${DEVICE} other-config:hwaddr=<各マシンのMACアドレス> --
set-fail-mode ${DEVICE} standalone --
set-controller ${DEVICE} tcp:127.0.0.1:6633
"
各マシンのIPアドレスは
マシン名 | IPアドレス | datapath-id | MACアドレス | IPアドレス |
---|---|---|---|---|
VM1 | 192.168.198.10 | 0000020100000001 | 02:01:00:00:00:01 | 192.168.56.10 |
VM2 | 192.168.198.11 | 0000020100000002 | 02:01:00:00:00:02 | 192.168.56.11 |
VM3 | 192.168.198.12 | 0000020100000003 | 02:01:00:00:00:03 | 192.168.125.10 |
を設定します。
datapath-idとMACアドレスはマシン間で被らなければ任意の値で問題ありません。
OpenVNetインストール
インストールマニュアルを参考に必要なもののインストールを行っていきます。
http://openvnet.org/installation/
curl -o /etc/yum.repos.d/openvnet.repo -R https://raw.githubusercontent.com/axsh/openvnet/master/deployment/yum_repositories/stable/openvnet.repo
curl -o /etc/yum.repos.d/openvnet-third-party.repo -R https://raw.githubusercontent.com/axsh/openvnet/master/deployment/yum_repositories/stable/openvnet-third-party.repo
yum install -y epel-release
さらに
yum install -y openvnet
で
Error: Package: kmod-openvswitch-2.3.1-1.el6.x86_64 (openvnet-third-party)
Requires: kernel(openvswitch_handle_frame_hook) = 0xbe03eb4d
とでて失敗します。
ここはCentOS6.6ではマニュアルのままで成功する環境もありました。
そこで、こちら
https://github.com/mao172/ovs-installer
のovs-installerをお借りしてみます。
curl -L https://raw.githubusercontent.com/mao172/ovs-installer/master/install.sh | bash -s -- -v 2.3.1
そこでもう一回
yum install -y openvnet
をすると成功します。
続いて、
yum install -y mysql-server redis
これでインストールは終了です。
ルーティング
ネットワークの再起動を行います。
service network restart
VM1~VM3のルーティングテーブルに設定を追加します。
# VM1、VM2
route add -net 192.168.125.0/24 gw 192.168.56.254 br0
# VM3
route add -net 192.168.56.0/24 gw 192.168.125.254 br0
iptables
本当は適切なポートを開けるべきなのでしょうがとりあえずVM0~VM3のiptables を停止させておきます。
iptables -F
動作確認
VM1-VM3間及びVM2-VM3間でpingを打って届くか確認しましょう。
VM1からpingを打つ場合
ping 192.168.125.10
そしてルーター上を通過しているか確認しましょう
ルーターマシン上で
tcpdump -i eth1
これでpingが飛んで行ってることを確認できれば成功です。
DBへの作るネットワークの設定の登録とLXCの設定を行えばOpenVNetが動作するようになります。
GREトンネルとMAC2MACを使ったOpenVNetの設定はこっちに書きました