Configure Static IP Address on Linux VM in VMware Player

If you run VMware Player, you would have 3 networking options for virtual machines running there: Bridged, NAT, Host-Only. In the latest 5.0.1, I also found a new one: LAN Segment. This blog has a nice explanation on these three settings if you want to get more details.

In most of cases, I use NAT for networking because the virtual machine can have Internet access which allows me to install additional software as needed. By default, VMware Player uses DHCP to dynamically assign IP address while using NAT. So you cannot guarantee to get same IP address after each rebooting.

You can set static IP address for a VM running on VMware Player with a little trick. On a Debian Linux machine like Ubuntu, you can edit a configuration file:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
$ sudo vim /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5)
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet static
  address 192.168.47.200
  netmask 255.255.255.0
  broadcast 192.168.47.255
  gateway 192.168.47.2
dns-nameservers 192.168.47.2

After saving the file, you would like to restart the network so that the change take effect:

1
$ sudo service networking restart

In my case, the VMnet8 which is the network adapter for the NAT network has an IP address of 192.168.47.1. When I first modified the interfaces file, I used it as the gateway IP address and failed to ping outside the network.

To figure it out why, I reversed back to the DHCP configuration (change the ifacce line to “iface eth0 dhcp” and delete the lines afterwards). In the DHCP mode, typing command “route –n” will show working gateway IP address: 192.168.47.2.

By default, the gateway IP is configured to use X.X.X.2. This can be changed with Virtual Network Editor which is not included in VMware Player. I will show you how to hack it in next post.

Update: for Fodera Linux like RedHat, CentOS, you can configure static IPs as follows:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
## define eth0 interface
# vi /etc/sysconfig/network-scripts/ifcfg-eth0
 
DEVICE=eth0
NM_CONTROLLED=no
ONBOOT=yes
HWADDR=00:50:56:37:F1:04
TYPE=Ethernet
BOOTPROTO=static
IPADDR=192.168.1.8
NETMASK=255.255.255.0
 
## set Default Gateway
# vi /etc/sysconfig/network
 
NETWORKING=yes
HOSTNAME=web.example.com
GATEWAY=192.168.1.1
 
# Restart Network Interface
# service network restart
# chkconfig network on
# service NetworkManager stop
# chkconfig NetworkManager off
 
## Configure DNS Server
#
# vi /etc/resolv.conf
nameserver 192.168.1.1
nameserver 8.8.8.8    # Google's DNS server

If you run into issue with cloned virtual machine changes eth0 to eth1, you can

1
2
# rm -f /etc/udev/rules.d/70-persistent-net.rules
# reboot

Update: for SUSE Linux which is used by vCenter virtual appliance, the static IP address can be changed as follows:

1
2
3
4
5
6
7
8
9
vCSA:~ # vim /etc/sysconfig/network/ifcfg-eth0
DEVICE=eth0
BOOTPROTO='static'
STARTMODE='auto'
TYPE=Ethernet
USERCONTROL='no'
IPADDR='192.168.1.8'
NETMASK='255.255.255.0'
BROADCAST='192.168.0.255'
This entry was posted in Virtualization and tagged , , , . Bookmark the permalink. Post a comment or leave a trackback: Trackback URL.

12 Comments

  1. Posted March 12, 2013 at 12:35 am | Permalink

    Configure Static IP Address on Linux VM in VMware Player (DoubleCloud) http://t.co/r1IcxPEyyX

  2. Posted March 12, 2013 at 12:50 am | Permalink

    Configure Static IP Address on Linux VM in VMware Player (DoubleCloud) http://t.co/QuU2rFQMxN

  3. Posted March 12, 2013 at 2:35 am | Permalink

    VMware – big fan “@sjin2008: [DoubleCloud] Configure Static IP Address on Linux VM in VMware Player http://t.co/BBlX6Shpp9” #VMware

  4. tako
    Posted October 7, 2014 at 9:14 am | Permalink

    this helped me a lot, thx

  5. Saha
    Posted November 18, 2014 at 9:21 am | Permalink

    Hello,
    I create an webservice (JAVA) and application side (PHP) to manage our pool of VM’s and automate some actions. Particullary, I create a form to deploy a virtual machine and its network configuration (with XML autogeneration – CustomizationSpec).
    Since Ubuntu 14.04, I noticed that the attributes dns-nameservers and dns-search are not fill depsite they are correctly added to the XML.

    I am aware about Ubuntu 14 changes its politic about networking but I wonder why these attributes are no longer deployed, some one get en axplication ? Ty in advance.

  6. Posted November 18, 2014 at 11:01 pm | Permalink

    Hi Saha,
    Thanks for the update. Sorry to know it doesn’t work any more. Have you checked if VMware has a newer version of its VMware Tools?
    Steve

  7. Posted December 11, 2014 at 12:12 pm | Permalink

    This worked great for me Steve! Saved my butt when working on my VM daily. Thanks!

  8. Posted December 11, 2014 at 1:52 pm | Permalink

    Great to know Rob, glad it helped.

    Steve

  9. xiaofeng
    Posted July 10, 2015 at 7:54 am | Permalink

    Dear Steve
    I come across your article while trying to setup my VM NAT using static IP. I am using VMPlayer 7.1.0. and downloaded vmnetcfg.exe from https://ninety9names.wordpress.com/2013/12/18/download-vmnetcfg-exe-vmnetcfglib-dll-for-vmware-player-6-x-7-x/.

    My VM OS is Scientific Linux 6. From vmnetcfg.exe I set
    VM IP 192.168.230.100
    Subnet Mask 255.255.2555.0
    Default gateway 192.168.230.2

    For NAT setting, I have Map incoming port
    Host port 600;
    TCP
    VM IP 192.168.230.100; port 600

    On my Linux side, I modified
    /etc/sysconfig/network-scripts/ifcfg-eth0
    {
    DEVICE=eth0
    NM_CONTROLLED=no
    ONBOOT=yes
    TYPE=Ethernet
    BOOTPROTO=static
    IPADDR=192.168.230.100
    NETMASK=255.255.255.0
    }

    /etc/sysconfig/network
    {
    {
    NETWORKING=yes
    HOSTNAME=whisky
    GATEWAY=192.168.230.2
    }

    And “Service network restart “ passed OK. But “service NetworkManager stop” failed.
    So, I run “rm -f /etc/udev/rules.d/70-persistent-net.rules” and “reboot”

    However, after reboot, I am still not able to get into internet
    “nslookup http://www.google.co.uk” or firefox web search failed.

    Have I missed anything from your article and do you have any suggestion?

    Thanks for your time.

    Best regards

    Xiaofeng

  10. Posted July 10, 2015 at 10:36 am | Permalink

    Hi Xiaofeng,

    Not familiar with both vmnetcfg.exe and Scientific Linux. I would try to check first the linkage from your vm to your host.

    Steve

  11. Sathya Jammi
    Posted July 24, 2015 at 1:18 pm | Permalink

    I have a couple VMs running Ubuntu, the IP addresses in my interfaces keep getting deleted every couple minutes or so.

    I have statically defined the IP addresses of these interfaces in the /etc/network/interfaces.

    If I do a “ifup eth1″, the IP addresses show up fine, but dissappear again after a couple of minutes, I am really looking for a solution for this.. any advice would help.

    root@reventon:~# route -n
    Kernel IP routing table
    Destination Gateway Genmask Flags Metric Ref Use Iface
    0.0.0.0 10.3.80.1 0.0.0.0 UG 0 0 0 eth0
    10.3.80.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
    169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 eth0
    root@reventon:~# route -n
    Kernel IP routing table
    Destination Gateway Genmask Flags Metric Ref Use Iface
    0.0.0.0 10.3.80.1 0.0.0.0 UG 0 0 0 eth0
    10.3.80.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
    169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 eth0
    root@reventon:~# ifconfig eth1
    eth1 Link encap:Ethernet HWaddr 00:0c:29:4f:c7:81
    inet6 addr: fe80::20c:29ff:fe4f:c781/64 Scope:Link
    UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
    RX packets:990 errors:0 dropped:80 overruns:0 frame:0
    TX packets:1429 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:1000
    RX bytes:220333 (220.3 KB) TX bytes:241382 (241.3 KB)

    root@reventon:~# cat /etc/network/interfaces
    # interfaces(5) file used by ifup(8) and ifdown(8)
    auto lo
    iface lo inet loopback
    auto eth0
    iface eth0 inet static
    address 10.3.80.13
    netmask 255.255.255.0
    gateway 10.3.80.1
    broadcast 10.3.80.255
    dns-nameservers 10.43.2.10

    auto eth1
    iface eth1 inet static
    address 4.3.10.1
    netmask 255.255.0.0
    gateway 4.3.0.254
    broadcast 4.3.255.255

    auto eth2
    iface eth2 inet static
    address 5.3.10.1
    netmask 255.255.0.0
    gateway 5.3.0.254
    broadcast 5.3.255.255


    root@reventon:~# ifup eth1
    RTNETLINK answers: File exists
    Failed to bring up eth1.
    root@reventon:~# ifconfig eth1
    eth1 Link encap:Ethernet HWaddr 00:0c:29:4f:c7:81
    inet addr:4.3.10.1 Bcast:4.3.255.255 Mask:255.255.0.0
    inet6 addr: fe80::20c:29ff:fe4f:c781/64 Scope:Link
    UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
    RX packets:1002 errors:0 dropped:80 overruns:0 frame:0
    TX packets:1443 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:1000
    RX bytes:222595 (222.5 KB) TX bytes:244157 (244.1 KB)


    After 2 minutes this would dissapear…
    root@reventon:~# ifconfig eth1
    eth1 Link encap:Ethernet HWaddr 00:0c:29:4f:c7:81
    inet6 addr: fe80::20c:29ff:fe4f:c781/64 Scope:Link
    UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
    RX packets:990 errors:0 dropped:80 overruns:0 frame:0
    TX packets:1429 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:1000
    RX bytes:220333 (220.3 KB) TX bytes:241382 (241.3 KB)

  12. Posted July 24, 2015 at 7:16 pm | Permalink

    Sathya,

    I think you can have only one default gateway. In your case, you have 3. You may want to fix that.

    Good luck!

    Steve

2 Trackbacks

Post a Comment

Your email is never published nor shared. Required fields are marked *

*
*

You may use these HTML tags and attributes <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

  • NEED HELP?


    My company develops products like vijavaNG APIs, EAM APIs, ICE tool. We also help clients with virtualization and cloud computing on customized development, training. Should you, or someone you know, need these products and services, please feel free to contact me: steve __AT__ doublecloud.org.

    Me: Steve Jin, VMware vExpert who authored the VMware VI and vSphere SDK by Prentice Hall, and created the de factor open source vSphere Java API while working at VMware engineering. Companies like Cisco, EMC, NetApp, HP, Dell, VMware, are among the users of the API and other tools I developed for their products, internal IT orchestration, and test automation.