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.
| Mode | VM accessible from | VM can access | Use case |
|---|---|---|---|
| NAT (default) | Host only via port forward | Internet via host | Single VM, internet access |
| Private Network | Host machine only | Host + other private VMs | DB clusters, replication labs |
| Public Network | Any machine on network | Full network | Testing from other machines |
| Internal Network | Other VMs only | Other VMs only | Isolated 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.
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
# 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.
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
# 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.
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
# 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.
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:
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