Build bastion on multiple network sources

Requirements

  1. Virtualbox

  2. Vagrant

Use bridge mode

boxes = [
  { :name => "lab-wifi", :bridge => "en0: Wi-Fi (AirPort)",     :cmd => "route add default gw 192.168.11.1"},
  { :name => "oa",       :bridge => "en8: USB 10/100/1000 LAN", :cmd => "route add default gw 10.244.58.254"},
  { :name => "lab",      :bridge => "en11: USB Ethernet 2",     :cmd => "route add default gw 192.168.1.1"}
]

Vagrant.configure("2") do |config|
  config.vm.box = "ubuntu/xenial64"
  config.vm.box_check_update = false
  config.vm.synced_folder '.', '/vagrant', disabled: true
  # config.vm.network "public_network"
  config.vm.provider "virtualbox" do |v|
    v.memory = 128
    v.cpus = 1
  end

  boxes.each do |opts|
    config.vm.define opts[:name] do |node|
      node.vm.hostname = opts[:name]
      node.vm.network "public_network", bridge: opts[:bridge]
      node.vm.provision "shell", run: "always", inline: opts[:cmd]
      node.vm.provision "shell", run: "always",
        inline: "echo 'nameserver 1.1.1.1' > /etc/resolv.conf"
    end
  end
end
  • Check your interface name and gateway

  • This file will create VMs by different interfaces

Set your ssh config

  1. Add Include ~/.ssh/config.d/* to your ~/.ssh/config

  2. vagrant ssh-config > ~/.ssh/config.d/config

  3. Use ssh lab-wifi or ssh oa to connect your VM

comments powered by Disqus