networkのプライベート検証環境

プライベート用の検証環境を作った話

最近はメーカがクラウドベースの検証サービスをいろいろ出しているみたいだけど、まぁ勉強ということで

ざっくりできたこと

  • DigitalOcean に droplet 立てる
  • ansible で 基本設定と kvmvagrant 入れる
  • vagrant-libvirtd で kvm 上に vyos を複数台立てて相互接続

上記の採用理由

  • プライベート用なので費用はできるだけ抑えたい
  • ある程度スケールして欲しい
  • DigitalOcean 安くて kvm 動く。スケールもする(お金かかるけど)
    • 今はawsでもベアメタルサーバが使えてkvm動くっぽいけど
  • droplet のスナップショット使わずになぜ ansible?
    • ansible やってみたかった
    • いつでもDigitalOcean やめれるように
  • vyos は一番手軽に使えるソフトウェアルータなので。Vagrant の Box もあるし

f:id:akimaya53:20190311233728p:plain
構成図

Vagrantファイル
もっと良い書き方あると思うけどわからなかった...

 # Vagrantfile for Vagrant version 2.0.0
 VAGRANTFILE_API_VERSION = "2"


 Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "higebu/vyos"

  ## vyos01
  config.vm.define :vyos01 do |vyos|
    vyos.vm.host_name = "vyos01"
    vyos.vm.network "private_network",
      ip: "192.168.10.101",
      libvirt__netmask: "255.255.255.0",
      libvirt__network_name: "Vlan10",
      libvirt__forward_mode: "none"
    vyos.vm.network "private_network",
      ip: "192.168.20.101",
      libvirt__netmask: "255.255.255.0",
      libvirt__network_name: "Vlan20",
      libvirt__forward_mode: "none"
    end

  ## vyos02
  config.vm.define :vyos02 do |vyos|
    vyos.vm.host_name = "vyos02"
    vyos.vm.network "private_network",
      ip: "192.168.10.102",
      libvirt__netmask: "255.255.255.0",
      libvirt__network_name: "Vlan10",
      libvirt__forward_mode: "none"
    vyos.vm.network "private_network",
      ip: "192.168.40.102",
      libvirt__netmask: "255.255.255.0",
      libvirt__network_name: "Vlan40",
      libvirt__forward_mode: "none"
    end

  ## vyos03
  config.vm.define :vyos03 do |vyos|
    vyos.vm.host_name = "vyos03"
    vyos.vm.network "private_network",
      ip: "192.168.20.103",
      libvirt__netmask: "255.255.255.0",
      libvirt__network_name: "Vlan20",
      libvirt__forward_mode: "none"
    vyos.vm.network "private_network",
      ip: "192.168.30.103",
      libvirt__netmask: "255.255.255.0",
      libvirt__network_name: "Vlan30",
      libvirt__forward_mode: "none"
    end

  ## vyos04
  config.vm.define :vyos04 do |vyos|
    vyos.vm.host_name = "vyos04"
    vyos.vm.network "private_network",
      ip: "192.168.30.104",
      libvirt__netmask: "255.255.255.0",
      libvirt__network_name: "Vlan30",
      libvirt__forward_mode: "none"
    vyos.vm.network "private_network",
      ip: "192.168.40.104",
      libvirt__netmask: "255.255.255.0",
      libvirt__network_name: "Vlan40",
      libvirt__forward_mode: "none"
    vyos.vm.network "private_network",
      ip: "192.168.50.104",
      libvirt__netmask: "255.255.255.0",
      libvirt__network_name: "Vlan50",
      libvirt__forward_mode: "none"
    end

  config.vm.provider :libvirt do |v|
    v.memory = 128
    end

 end

やった内容はまた後ほど