diff --git a/diskimage_builder/elements/dhcp-all-interfaces/README.rst b/diskimage_builder/elements/dhcp-all-interfaces/README.rst
index 7ecd387c7..eb56a378d 100644
--- a/diskimage_builder/elements/dhcp-all-interfaces/README.rst
+++ b/diskimage_builder/elements/dhcp-all-interfaces/README.rst
@@ -25,5 +25,5 @@ DIB_DHCP_TIMEOUT
   :Required: No
   :Default: 30
   :Description: Amount of time in seconds that the systemd service will
-   wait to get an address.
+   wait to get an address. Should be increased in networks such as Infiniband.
   :Example: DIB_DHCP_TIMEOUT=300
diff --git a/diskimage_builder/elements/dhcp-all-interfaces/install.d/50-dhcp-all-interfaces b/diskimage_builder/elements/dhcp-all-interfaces/install.d/50-dhcp-all-interfaces
index 121f8d28c..25018929f 100755
--- a/diskimage_builder/elements/dhcp-all-interfaces/install.d/50-dhcp-all-interfaces
+++ b/diskimage_builder/elements/dhcp-all-interfaces/install.d/50-dhcp-all-interfaces
@@ -11,6 +11,7 @@ SCRIPTDIR=$(dirname $0)
 # this script is not needed on Gentoo.
 if [ "$DISTRO_NAME" != "gentoo" ]; then
     install -D -g root -o root -m 0755 ${SCRIPTDIR}/dhcp-all-interfaces.sh /usr/local/sbin/dhcp-all-interfaces.sh
+    sed -i "s/DIB_DHCP_TIMEOUT/${DIB_DHCP_TIMEOUT:-30}/" /usr/local/sbin/dhcp-all-interfaces.sh
 fi
 
 if [ "$DIB_INIT_SYSTEM" == "upstart" ]; then
diff --git a/diskimage_builder/elements/dhcp-all-interfaces/install.d/dhcp-all-interfaces.sh b/diskimage_builder/elements/dhcp-all-interfaces/install.d/dhcp-all-interfaces.sh
index 7e29e0e71..25113b710 100755
--- a/diskimage_builder/elements/dhcp-all-interfaces/install.d/dhcp-all-interfaces.sh
+++ b/diskimage_builder/elements/dhcp-all-interfaces/install.d/dhcp-all-interfaces.sh
@@ -97,8 +97,8 @@ function inspect_interface() {
         echo "Device has generated MAC, skipping."
     else
         local has_link
-        local tries
-        for ((tries = 0; tries < 20; tries++)); do
+        local tries=DIB_DHCP_TIMEOUT
+        for ((; tries > 0; tries--)); do
             # Need to set the link up on each iteration
             ip link set dev $interface up &>/dev/null
             has_link=$(get_if_link $interface)