Vagrant OEL 8 DevOps · VirtualBox · Networking

VagrantNetworking for OEL 8 VMs

Master Vagrant networking — NAT port forwarding, private host-only networks, public bridged networks and multi-network database lab designs for OEL 8.

Vagrant provides four networking modes for OEL 8 VMs. Each serves a different purpose — from isolated private networks for database clusters to bridged networks for public accessibility. Understanding each is essential for database lab setups.

ModeVM accessible fromVM can accessUse case
NAT (default)Host only via port forwardInternet via hostSingle VM, internet access
Private NetworkHost machine onlyHost + other private VMsDB clusters, replication labs
Public NetworkAny machine on networkFull networkTesting from other machines
Internal NetworkOther VMs onlyOther VMs onlyIsolated VM-to-VM only

NAT is the default adapter. Port forwarding maps a host port to a VM port — the VM is not directly accessible but specific ports are reachable.

Ruby — Port Forwarding
Vagrant.configure("2") do |config|
  config.vm.box = "generic/oracle8"

  # MySQL port
  config.vm.network "forwarded_port", guest: 3306, host: 13306

  # Oracle port
  config.vm.network "forwarded_port", guest: 1521, host: 11521

  # ProxySQL ports
  config.vm.network "forwarded_port", guest: 6033, host: 16033
  config.vm.network "forwarded_port", guest: 6032, host: 16032

  # Web / phpMyAdmin
  config.vm.network "forwarded_port", guest: 80, host: 8080

  # Custom SSH port (avoid conflict with default 2222)
  config.vm.network "forwarded_port", guest: 22, host: 2200,
    id: "ssh", auto_correct: true

end
BASH — Use Port Forwarding
# Connect to MySQL via port forward from host
mysql -u root -h 127.0.0.1 -P 13306

# Connect to Oracle via port forward
sqlplus sys/password@//127.0.0.1:11521/ORCLCDB as sysdba

# View all forwarded ports
vagrant port

Private network creates a network only between your host machine and the VM. No other machines on your network can reach the VM. Perfect for database replication labs.

Ruby — Private Network
Vagrant.configure("2") do |config|
  config.vm.box = "generic/oracle8"

  # Static IP (recommended for databases)
  config.vm.network "private_network", ip: "192.168.56.10"

  # DHCP (IP assigned automatically — changes between restarts)
  # config.vm.network "private_network", type: "dhcp"

end
BASH — Use Private Network
# Test private network from host
ping 192.168.56.10

# Connect to MySQL via private IP
mysql -u root -h 192.168.56.10 -P 3306

# Connect via SSH directly (bypasses vagrant ssh)
ssh vagrant@192.168.56.10

Public network bridges the VM to your physical network adapter — the VM gets an IP on your local network and is accessible from other machines.

Ruby — Public Network
Vagrant.configure("2") do |config|
  config.vm.box = "generic/oracle8"

  # Auto-select bridge adapter
  config.vm.network "public_network"

  # Specify bridge adapter (use exact name from your machine)
  config.vm.network "public_network", bridge: "en0: Wi-Fi"

  # Static IP on public network
  config.vm.network "public_network",
    bridge: "en0: Wi-Fi",
    ip: "192.168.1.100"

end
BASH — Find Bridge Adapters
# Find bridge adapter names on macOS
VBoxManage list bridgedifs | grep "^Name:"

# Find bridge adapter names on Linux
ip link show

VMs can have multiple network adapters — common in database setups where you need both a management network and a replication network.

Ruby — Multiple Networks
Vagrant.configure("2") do |config|
  config.vm.box = "generic/oracle8"

  # Management network (connect from host)
  config.vm.network "private_network", ip: "192.168.56.10"

  # Replication network (VM-to-VM only)
  config.vm.network "private_network", ip: "10.0.0.10"

  # MySQL port forward via NAT
  config.vm.network "forwarded_port", guest: 3306, host: 13306

end

For a typical MySQL Master + Replica + ProxySQL lab:

Ruby — Database Lab Network
Vagrant.configure("2") do |config|

  # ProxySQL
  config.vm.define "proxysql" do |p|
    p.vm.box     = "generic/oracle8"
    p.vm.hostname = "proxysql"
    p.vm.network "private_network", ip: "192.168.56.10"
    p.vm.network "forwarded_port", guest: 6033, host: 16033
    p.vm.network "forwarded_port", guest: 6032, host: 16032
  end

  # MySQL Master
  config.vm.define "master" do |m|
    m.vm.box     = "generic/oracle8"
    m.vm.hostname = "mysql-master"
    m.vm.network "private_network", ip: "192.168.56.11"
    m.vm.network "forwarded_port", guest: 3306, host: 13306
  end

  # MySQL Replica
  config.vm.define "replica" do |r|
    r.vm.box     = "generic/oracle8"
    r.vm.hostname = "mysql-replica"
    r.vm.network "private_network", ip: "192.168.56.12"
    r.vm.network "forwarded_port", guest: 3306, host: 13307
  end

end