NAT setup: do not fail if local route is present
authorMichael Prokop <mika@grml.org>
Tue, 11 Sep 2012 17:11:37 +0000 (19:11 +0200)
committerMichael Prokop <mika@grml.org>
Tue, 11 Sep 2012 17:11:39 +0000 (19:11 +0200)
If the system running grml-terminalserver uses the gateway
IP address and it's a local route then the loopback device
is the matching device. This doesn't make any sense for the
NAT setup, therefore skip it.

Without this change the iptables code gets executed with
invalid arguments and is failing.

grml-terminalserver-config

index 25836e5..9b01239 100755 (executable)
@@ -194,8 +194,8 @@ for addresses from 192.168.0.101 to (and including) 192.168.0.200.
 
   NAMESERVERS_=`netGetNameservers warn`
   GW_=`netGetDefaultGateway warn`
 
   NAMESERVERS_=`netGetNameservers warn`
   GW_=`netGetDefaultGateway warn`
-  GW_DEV_=`/sbin/ip route get "$GW_" | awk '{ print $3; exit; }'`
-  if [ "$GW_DEV_" != "$INTERFACE_" ] && [ "$GW_DEV_" != "" ]; then
+  GW_DEV_=`/sbin/ip route get "$GW_" | sed 's/^local //' | awk '{ print $3; exit; }'`
+  if [ "$GW_DEV_" != "$INTERFACE_" ] && [ "$GW_DEV_" != "" ] && [ "$GW_DEV_" != "lo" ]; then
     # GW_DEV_ of server is not the same device as the one serviced by dhcpd
     # so it doesn't make sense to provide the GW_ address to the clients
     local do_nat_="YES"
     # GW_DEV_ of server is not the same device as the one serviced by dhcpd
     # so it doesn't make sense to provide the GW_ address to the clients
     local do_nat_="YES"