2013-09-03 18:08:28 +00:00
---
2013-09-06 16:50:43 +00:00
page_title: "Public Networks - Networking"
2013-09-03 18:08:28 +00:00
sidebar_current: "networking-public"
---
# Public Networks
2013-09-06 16:50:43 +00:00
**Network identifier: `public_network` **
2013-09-03 18:08:28 +00:00
Public networks are less private than private networks, and the exact
meaning actually varies from [provider to provider ](/v2/providers/index.html ),
hence the ambiguous definition. The idea is that while
[private networks ](/v2/networking/private_network.html ) should never allow the
general public access to your machine, public networks can.
< div class = "alert alert-info" >
< p >
< strong > Confused?< / strong > We kind of are, too. It is likely that
public networks will be replaced by < code > :bridged< / code > in a
future release, since that is in general what should be done with
public networks, and providers that don't support bridging generally
don't have any other features that map to public networks either.
< / p >
< / div >
2014-10-08 06:05:46 +00:00
< div class = "alert alert-warning" >
< p >
< strong > Warning!< / strong > Vagrant boxes are insecure by default
and by design, featuring public passwords, insecure keypairs
for SSH access, and potentially allow root access over SSH. With
these known credentials, your box is easily accessible by anyone on
your network. Before configuring Vagrant to use a public network,
consider < em > all< / em > potential security implications
and review the < a href = "/v2/boxes/base.html" > default box
configuration< / a > to identify potential security risks.
< / p >
< / div >
2013-09-03 18:08:28 +00:00
## DHCP
The easiest way to use a public network is to allow the IP to be assigned
via DHCP. In this case, defining a public network is trivially easy:
```ruby
Vagrant.configure("2") do |config|
2013-09-06 16:50:43 +00:00
config.vm.network "public_network"
2013-09-03 18:08:28 +00:00
end
```
When DHCP is used, the IP can be determined by using `vagrant ssh` to
SSH into the machine and using the appropriate command line tool to find
the IP, such as `ifconfig` .
2013-09-03 18:59:49 +00:00
2014-06-03 02:16:41 +00:00
## Static IP
Depending on your setup, you may wish to manually set the IP of your
bridged interface. To do so, add a `:ip` clause to the network definition.
```ruby
config.vm.network "public_network", ip: "192.168.0.17"
```
2015-02-14 03:27:22 +00:00
## Disable Auto-Configuration
If you want to manually configure the network interface yourself, you
can disable Vagrant's auto-configure feature by specifying `auto_config` :
```ruby
Vagrant.configure("2") do |config|
config.vm.network "public_network", auto_config: false
end
```
Then shell provisioner can be used to configure the ip of the interface:
```ruby
Vagrant.configure("2") do |config|
config.vm.network "public_network", auto_config: false
#manual ip
config.vm.provision :shell, run: "always", inline: "ifconfig eth1 192.168.0.17 netmask 255.255.255.0 up"
#manual ipv6
config.vm.provision :shell, run: "always", inline: "ifconfig eth1 inet6 add fc00::17/7"
end
```
## Default Router
Depending on your setup, you may wish to manually override the default router configuration. This is required if you need access from other networks to the Vagrant box over the public network. To do so, you can use a shell provisioner script.
```ruby
config.vm.network "public_network", ip: "192.168.0.17"
#default router
config.vm.provision :shell, run: "always", inline: "route add default gw 192.168.0.1"
#default router ipv6
config.vm.provision :shell, run: "always", inline: "route -A inet6 add default gw fc00::1 eth1"
#delete default gw on eth0
config.vm.provision :shell, run: "always", inline: "eval `route -n | awk '{ if ($8 ==\"eth0\" && $2 != \"0.0.0.0\") print \"route del default gw \" $2; }'` "
```
2013-09-03 18:59:49 +00:00
## Default Network Interface
2013-09-06 16:50:43 +00:00
If more than one network interface is available on the host machine, Vagrant will
2013-09-03 18:59:49 +00:00
ask you to choose which interface the virtual machine should bridge to. A default
interface can be specified by adding a `:bridge` clause to the network definition.
```ruby
2014-05-22 16:35:12 +00:00
config.vm.network "public_network", bridge: 'en1: Wi-Fi (AirPort)'
2013-09-03 18:59:49 +00:00
```
The string identifying the desired interface must exactly match the name of an
2013-09-06 16:50:43 +00:00
available interface. If it can't be found, Vagrant will ask you to pick
2013-09-03 18:59:49 +00:00
from a list of available network interfaces.