121 lines
4.1 KiB
Plaintext
121 lines
4.1 KiB
Plaintext
---
|
|
layout: docs
|
|
page_title: Private Networks - Networking
|
|
description: |-
|
|
Vagrant private networks allow you to access your guest machine by some
|
|
address that is not publicly accessible from the global internet. In general,
|
|
this means your machine gets an address in the private address space.
|
|
---
|
|
|
|
# Private Networks
|
|
|
|
**Network identifier: `private_network`**
|
|
|
|
Vagrant private networks allow you to access your guest machine by some address
|
|
that is not publicly accessible from the global internet. In general, this
|
|
means your machine gets an address in the [private address space](https://en.wikipedia.org/wiki/Private_network#Private_IPv4_address_spaces).
|
|
|
|
Multiple machines within the same private network (also usually with the
|
|
restriction that they're backed by the same [provider](/vagrant/docs/providers/))
|
|
can communicate with each other on private networks.
|
|
|
|
-> **Guest operating system support.** Private networks generally
|
|
require configuring the network adapters on the guest machine. This process
|
|
varies from OS to OS. Vagrant ships with knowledge of how to configure
|
|
networks on a variety of guest operating systems, but it is possible if you
|
|
are using a particularly old or new operating system that private networks
|
|
will not properly configure.
|
|
|
|
## DHCP
|
|
|
|
The easiest way to use a private network is to allow the IP to be assigned
|
|
via DHCP.
|
|
|
|
```ruby
|
|
Vagrant.configure("2") do |config|
|
|
config.vm.network "private_network", type: "dhcp"
|
|
end
|
|
```
|
|
|
|
This will automatically assign an IP address from the reserved address space.
|
|
The IP address 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` or `ip addr show`.
|
|
|
|
## Static IP
|
|
|
|
You can also specify a static IP address for the machine. This lets you
|
|
access the Vagrant managed machine using a static, known IP. The
|
|
Vagrantfile for a static IP looks like this:
|
|
|
|
```ruby
|
|
Vagrant.configure("2") do |config|
|
|
config.vm.network "private_network", ip: "192.168.50.4"
|
|
end
|
|
```
|
|
|
|
It is up to the users to make sure that the static IP does not collide
|
|
with any other machines on the same network.
|
|
|
|
While you can choose any IP you would like, you _should_ use an IP from
|
|
the [reserved private address space](https://en.wikipedia.org/wiki/Private_network#Private_IPv4_address_spaces). These IPs are guaranteed to never be publicly routable,
|
|
and most routers actually block traffic from going to them from the
|
|
outside world.
|
|
|
|
For some operating systems, additional configuration options for the static
|
|
IP address are available such as setting the default gateway or MTU.
|
|
|
|
~> **Warning!** Do not choose an IP that overlaps with any
|
|
other IP space on your system. This can cause the network to not be
|
|
reachable.
|
|
|
|
## IPv6
|
|
|
|
You can specify a static IP via IPv6. DHCP for IPv6 is not supported.
|
|
To use IPv6, just specify an IPv6 address as the IP:
|
|
|
|
```ruby
|
|
Vagrant.configure("2") do |config|
|
|
config.vm.network "private_network", ip: "fde4:8dba:82e1::c4"
|
|
end
|
|
```
|
|
|
|
This will assign that IP to the machine. The entire `/64` subnet will
|
|
be reserved. Please make sure to use the reserved local addresses approved
|
|
for IPv6.
|
|
|
|
You can also modify the prefix length by changing the `netmask` option
|
|
(defaults to 64):
|
|
|
|
```ruby
|
|
Vagrant.configure("2") do |config|
|
|
config.vm.network "private_network",
|
|
ip: "fde4:8dba:82e1::c4",
|
|
netmask: "96"
|
|
end
|
|
```
|
|
|
|
IPv6 supports for private networks was added in Vagrant 1.7.5 and may
|
|
not work with every provider.
|
|
|
|
## 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 "private_network", ip: "192.168.50.4",
|
|
auto_config: false
|
|
end
|
|
```
|
|
|
|
If you already started the Vagrant environment before setting `auto_config`,
|
|
the files it initially placed there will stay there. You will have to remove
|
|
those files manually or destroy and recreate the machine.
|
|
|
|
The files created by Vagrant depend on the OS. For example, for many
|
|
Linux distros, this is `/etc/network/interfaces`. In general you should
|
|
look in the normal location that network interfaces are configured for your
|
|
distro.
|