Getting static addresses in a Linux client under NAT and VMware Fusion

I had a client working fine enough with DHCP, but I really want to be able to
consistently ssh into it.

I looked at:

/Library/Preferences/VMware Fusion/vmnet8/dhcpd.conf

and determined that I did not have to modify it to get a static address:

allow unknown-clients;
default-lease-time 1800;                # default is 30 minutes
max-lease-time 7200;                    # default is 2 hours

subnet 172.16.249.0 netmask 255.255.255.0 {
        range 172.16.249.128 172.16.249.254;
        option broadcast-address 172.16.249.255;
        option domain-name-servers 172.16.249.2;
        option domain-name localdomain;
        default-lease-time 1800;                # default is 30 minutes
        max-lease-time 7200;                    # default is 2 hours
        option netbios-name-servers 172.16.249.2;
        option routers 172.16.249.2;
}
host vmnet8 {
        hardware ethernet 00:50:56:C0:00:08;
        fixed-address 172.16.249.1;
        option domain-name-servers 0.0.0.0;
        option domain-name "";
        option routers 0.0.0.0;
}

I.e., I could use addresses 172.16.249.2 -> 172.16.249.127 for static assignment. (There is a bug in that statement, which is why I am writing this down.)

I always skip the first 20 addresses, so I assigned:

KinSlayer:flexfiles loghyr$ more /private/etc/hosts
##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting.  Do not change this entry.
##
127.0.0.1       localhost
255.255.255.255 broadcasthost
::1             localhost 
fe80::1%lo0     localhost
172.16.249.1    kinslayer
172.16.249.21   skull
172.16.249.22   kitty

skull to be 172.16.249.21.

I modified skull’s /etc/sysconfig/network:

[root@skull linux]# more /etc/sysconfig/network
# Created by anaconda
HOSTNAME=skull

and /etc/sysconfig/network-scripts/ifcfg-eno16777736

[root@skull linux]# more /etc/sysconfig/network-scripts/ifcfg-eno16777736
TYPE="Ethernet"
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_PEERDNS="yes"
IPV6_PEERROUTES="yes"
IPV6_FAILURE_FATAL="no"
NAME="eno16777736"
UUID="3e93f225-d48a-4de0-919a-5ef5d1f428e7"
ONBOOT="yes"
HWADDR="00:0C:29:98:83:E7"
PEERDNS="yes"
PEERROUTES="yes"
DEVICE=eno16777736
NM_CONTROLLED=no
IPADDR=172.16.249.21
NETMASK=255.255.255.0
GATEWAY=172.16.249.1
DNS1=172.16.249.1

Disabled Network Mangler and turned on network:

service NetworkManager stop
chkconfig NetworkManager off
yum erase NetworkManager
service network start
chkconfig network on

I tested that I could ssh into and out of skull to my laptop. Fine, job done.

Only DNS wasn’t working the next day:

[root@skull linux]# more /etc/resolv.conf
# Generated by NetworkManager
domain localdomain
search localdomain
nameserver 172.16.249.1

I checked online, and found I should be using 172.16.249.2. Fine, job done.

Well then I couldn’t get to github.com port 22 to get a project update.

Push comes to shove, I should have not assumed that 172.16.249.1 is special
with this NAT. It is not the laptop as far as a DNS server and gateway is concerned.

So I changed this line in /etc/sysconfig/network-scripts/ifcfg-eno16777736:

GATEWAY=172.16.249.2

And restarted the network – now my DNS change was gone (why does service network restart add in the line about “# Generated by NetworkManager” to /etc/resolv.conf ??).

Fine, fixed this line as well:

DNS1=172.16.249.2

And restarted.

Now it all works, I think. :-)

Leave a Reply