I'm using VirtualBox for emulating linux (Centos or Ubuntu).
When creating new VM,  in order to have an external IP:
Click on VM/Settings (when the machine is off ... otherwise, the Setting option is not available)
Network and select 
Bridged Adapter / 
etho / Allow All
Then, run the on the VM
ifconfig -a 
in order to see which network card is used . For ex , here we use 
eth0:
eth0      Link encap:Ethernet  HWaddr 08:2e:5f:32:c6:2b
           inet addr:192.168.23.148  Bcast:192.168.23.255  Mask:255.255.252.0          inet6 addr: fe80::a2e:5fff:fe32:c62b/64 Scope:Link          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1          RX packets:1148454 errors:0 dropped:304 overruns:0 frame:0          TX packets:57473 errors:0 dropped:0 overruns:0 carrier:0          collisions:0 txqueuelen:1000          RX bytes:169648034 (169.6 MB)  TX bytes:9345047 (9.3 MB)          Interrupt:19
lo        Link encap:Local Loopback
           inet addr:127.0.0.1  Mask:255.0.0.0          inet6 addr: ::1/128 Scope:Host          UP LOOPBACK RUNNING  MTU:16436  Metric:1          RX packets:107277 errors:0 dropped:0 overruns:0 frame:0          TX packets:107277 errors:0 dropped:0 overruns:0 carrier:0          collisions:0 txqueuelen:0          RX bytes:70365858 (70.3 MB)  TX bytes:70365858 (70.3 MB)
Then, run the  dhcpClient in order to make the VM get a new IP address.
dhclient eth0 
In order to get this 
dhcpClient run after each reboot, go to the file
/etc/sysconfig/network-scripts/ifcfg-eth0
and edit it with the following:
DEVICE="eth0"
NM_CONTROLLED="no"
BOOTPROTO="dhcp"
ONBOOT="yes"
Then, ensure you don't have firewall blocking the connection to this new IP
# service iptables save
# service iptables stop
# chkconfig iptables off
In order to give the new VM a permanent hostname  :
go to file 
/etc/sysconfig/network
and modify the line:
HOSTNAME=your-vm-desired-name
thanks to 
http://servercomputing.blogspot.co.il/2011/12/change-redhat-centos-hostname.html 
Once done, I suggest to add this 
hostname to the 
/etc/hosts:
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.14.183  your-vm-desired-name
Somehow, my VM centos image didn't include some basic linux centos package.
So here they are:
-  yum install redhat-lsb
 
-  yum install openssh-clients
 
ReAssign MAC Address
If you decide to assign a new MAC address to your VM (if you clone it, for example), then do not forget to assign it a new external IP by doing the following:
remove content of
/etc/udev/rules.d/70-persisten-net.rules
Then , just reboot your VM machine
This file associates the network card (like eth0, eth1 etc) to the MAC address.