31

I have two virtual machines both running on a Linux host (Fedora 16). I set both adapters as attached to NAT. When I boot them up they both have their default gateway set to 10.0.2.2. They also both have the same IP address (10.0.2.15). They are both on the same adapter (adapter 1). I don't know why they are getting assigned the same IP address, and shouldn't the default gateway be 10.0.2.1 since the subnet address is 10.0.2.0 and the netmask is 255.255.255.0. Is there something I am missing, has this happened to anyone before? How do I get the VirtualBox DHCP working properly?

  • 2
    That is not necessary true, it is possible to create a "true" virtual NAT network in which the multiple VM have to be assigned different IP address based on it's virtualized MAC address, and the VM can see each other behind the NAT network, basically virtually an entire subnet behind the NAT interface. Depends on your choice in the network adapter configuration, if "NAT" is chosen, the NAT is a one on one host/vm relationship, if "NAT network" is chosen, then it's a host/subnet relationship in which each VM on the virtualized network will have to have different IP addresses. – user98773 Jan 10 '15 at 16:30
  • I answered a similar question here – Mian Asbat Ahmad Sep 17 '19 at 20:53
23

VirtualBox DHCP is working properly.

There is nothing wrong with having all of your machines getting the same address in NAT configuration. All VMs are isolated from each other so there is no risk of conflict. They are also not on the same adapter. Each VM has its own virtualized hardware including NICs.

The default gateway also need not to be 10.0.2.1. Although it is a common practice to have it at the lower IP address, it can be any IP in the subnet range.

Also, there is no "real" dhcp service, everything is hardcoded in the VirtualBox code, although if you are not happy with the default IP addresses you can fine tune the NAT engine.

  • Hi @jlliagre, is this really expected behavior? As I understand, if all VMs were assigned the same IP address, they will not able to use this network interface to communicate, right? If so, you are stating that for a bunch of VMs, if each of them only have a single NAT adapter, by default they are not able to communicate. – Just a learner Feb 26 '19 at 21:54
  • 1
    @OgrishMan Yes, this is the expected behavior. That's one of the main rationale of NAT. It allows many machines to use the same local IP address. They cannot directly communicate, just like my laptop having 192.168.1.4 as IP address cannot communicate with your device, which might use the very same IP address. The main reason why they cannot communicate is that they are on different LANs anyway. Machines only using NAT interfaces can communicate together only through an external third party gateway, or using reverse port mapping at the host level. – jlliagre Feb 26 '19 at 22:08
  • Thank you for the explanation! I think I'm clear now. – Just a learner Feb 26 '19 at 22:10
7

In VirtualBox control panel go to File -> Preferences -> Network

Select NAT Networks tab, create a new "NatNetwork" by clicking + button at side and press OK.

Now select each VM go to Settings -> Network

In Attached to: option choose NAT Network and select "NatNetwork" and press OK.

Restart all the VMs.

Now VMs have different network address.

  • 1
    I'm finding I still get the same IP addresses using this approach! – jersey bean May 16 '19 at 0:46
6

Your virtual machines will get the same IP address from any DHCP service as long as they have the same Ethernet MAC address (a hardware address, unique like a fingerprint, set by the hardware manufacturer of your network device).

Since you are running virtual machines, they have virtual hardware and therefore they "fake" the MAC address. You have to make sure no two machines have the same Ethernet hardware address.

You can set the Ethernet MAC address of your virtual machine in VirtualBox in the hardware network section (it looks like this: 3c:08:51:05:24:8a)

You can check it in your running VM:

sudo ifconfig

en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
    options=2b<RXCSUM,TXCSUM,VLAN_HWTAGGING,TSO4>
    ether 3c:08:51:05:24:8a 
    media: autoselect (none)
    status: inactive
  • 2
    The NAT dhcp server embedded with VirtualBox isn't a real one. In particular it doesn't care about MAC addresses. In any case, multiple VM might have the same MAC address, that doesn't matter as the virtual networks are fully isolated. – jlliagre Jan 27 '12 at 23:00
2

They will get their default gateway from the dhcp server - so it will be whatever is set up in there. You will need to look at the dhcp server to see what it is delivering (generally just set it in the server config to be whatever you want it to be)

With regard to the two adapters having the same address, this is most likely down to the configuration you have set in Virtualbox. If they are clones then you may need to explicitly give one a new MAC address.

Check the network configurations for each and see if they think they are the same.

If different, you could temporarily set a fixed IP for each one at the dhcp server (assigned by MAC address)

Have a look at this section from the VirtualBox manual for more information.

  • 1
    The link you posted doesn't apply to NAT. – jlliagre Jan 27 '12 at 23:01
1

I had the same issue. Assigned Adapter2 to the 2nd guest OS. Unique Mac and Ip address assigned for the guests.

enter image description here

0

Two settings need to be changed.

1) In VM box side - Console VMware client software change the network settings (ie) add a new nat on network settings. 2) In VM machine side - Refresh the Mac address for each VM.

-1

open network setting for each vm, click on advanced > click the refresh button beside the mac addr. Get a different one on both and you are all set

  • underrated answer – elsadek Nov 3 '17 at 18:05

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.