Ubuntu – Computer gets IP from DHCP server but has no internet connection

dhcpdhcp-serverisc-dhcpUbuntuubuntu-12.10

I've installed an isc-dhcp-server on Ubuntu 12.10 and I'm trying to setup a DHCP server on a head node for six worker computers in the local network. The head node itself is a DHCP client receiving the IP-address 192.168.20.1 (on eth0) from an other computer in the network.

IPv4 IP forwarding is enabled on the head node. In /etc/sysctl.conf the following line was added:

net.ipv4.ip_forward = 1

The following rules are set in /etc/rc.local:

/sbin/iptables -P FORWARD ACCEPT
/sbin/iptables --table nat -A POSTROUTING -o eth0 -j MASQUERADE

Furthermore, INTERFACES="eth0" is set in /etc/default/isc-dhcp-server.

The dhcpd.conf file contains (for the moment only one worker computer is in the file):

ddns-update-style none;

default-lease-time 3600;
max-lease-time 7200;

authoritative;

subnet 192.168.20.0 netmask 255.255.255.0 {
  range 192.168.20.2 192.168.20.200
  host hostName {
    hardware ethernet macOfHost;
    fixed-address 192.168.20.20;
  }
  option subnet-mask 255.255.255.0;
  option broadcast-address 192.168.20.255;
  option routers 192.168.20.1;
}

The worker node effectively gets the IP address 192.168.20.20, but it has no internet connection. A ping to 192.168.20.1 is successful, as well as a ping to the computer that serves as a DHCP server for the head node (a ping to 192.168.1.1). The problem doesn't seem to have something to do with DNS as a ping to an IP-address (such as 8.8.4.4) fails.

Update

The network topology is as follows. There is switch connecting a computer (with internet access and running a DHCP server, IP address 192.168.1.1) and 7 other computers. One of these 7 computers gets an IP from the 192.168.1.1 computer. The IP it gets is 192.168.20.1 and the internet on that computer works fine. Now we have a DHCP server running on 192.168.20.1 in order to provide internet access to the other 6 computers, but that fails. They get IP addresses but have no internet access. We are not allowed to modify anything on the 192.168.1.1 node so it should be feasible to make internet work with this setup.

Does someone know what the problem could be?

Output of /sbin/route -n on the client:

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.20.1    0.0.0.0         UG    0      0        0 eth1
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 eth1
192.168.20.0    0.0.0.0         255.255.255.0   U     1      0        0 eth1

Output of sudo iptables -L -v -n:
Chain INPUT (policy ACCEPT 2146 packets, 1551K bytes)
pkts bytes target prot opt in out source destination

Chain FORWARD (policy ACCEPT 59 packets, 3762 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 1908 packets, 213K bytes)
 pkts bytes target     prot opt in     out     source               destination

Output of ip ro sh
default via 192.168.1.1 dev eth0 proto static
169.254.0.0/16 dev eth0 scope link metric 1000
192.168.0.0/16 dev eth0 proto kernel scope link src 192.168.20.1 metric 1

Best Answer

you have to enable forwarding:

sysctl -w net.ipv4.ip_forward=1

the above line will work immediately. but will be gone the next time you reboot your system.

for a persisten setting, put the following into /etc/sysctl.conf (but it will only take effect after rebooting):

net.ipv4.ip_forward=1