diff --git a/dhclient-script b/dhclient-script
index 4bea304..83cc781 100644
--- a/dhclient-script
+++ b/dhclient-script
@@ -270,15 +270,15 @@ class_bits() {
 is_router_reachable() {
     # handle DHCP servers that give us a router not on our subnet
     router="${1}"
     routersubnet="$(get_network_address ${router} ${new_subnet_mask})"
     mysubnet="$(get_network_address ${new_ip_address} ${new_subnet_mask})"
 
     if [ ! "${routersubnet}" = "${mysubnet}" ]; then
-        ip -4 route add ${router}/32 dev ${interface}
+        ip -4 route add ${router}/32 dev ${interface} protocol dhcp
         if [ "$?" -ne 0 ]; then
             logmessage "failed to create host route for ${router}"
             return 1
         fi
     fi
 
     return 0
@@ -429,15 +429,15 @@ dhconfig() {
                         fi
                     done
 
                     if [ -n "${metric}" ]; then
                         metric="metric ${metric}"
                     fi
 
-                    ip -4 route replace ${target}/${prefix} proto static via ${gateway} dev ${interface} ${metric} ${scope}
+                    ip -4 route replace ${target}/${prefix} proto static via ${gateway} dev ${interface} ${metric} ${scope} protocol dhcp
 
                     if [ $? -ne 0 ]; then
                         logmessage "failed to create static route: ${target}/${prefix} via ${gateway} dev ${interface} ${metric}"
                     else
                         route_targets=(${route_targets[@]} ${target})
                     fi
                 fi
@@ -491,15 +491,15 @@ dhconfig() {
     fi
 
     if [ ! "${new_ip_address}" = "${alias_ip_address}" ] &&
        [ -n "${alias_ip_address}" ]; then
         # Reset the alias address (fix: this should really only do this on changes)
         ip -4 addr flush dev ${interface} label ${interface}:0 >/dev/null 2>&1
         ip -4 addr add ${alias_ip_address}/${alias_prefix} broadcast ${alias_broadcast_address} dev ${interface} label ${interface}:0
-        ip -4 route replace ${alias_ip_address}/32 dev ${interface}
+        ip -4 route replace ${alias_ip_address}/32 dev ${interface} protocol dhcp
     fi
     
     # After dhclient brings an interface UP with a new IP address, subnet mask, 
     # and routes, in the REBOOT/BOUND states -> search for "dhclient-up-hooks".
     if [ "${reason}" = "BOUND" ] || [ "${reason}" = "REBOOT" ] ||
        [ ! "${old_ip_address}" = "${new_ip_address}" ] ||
        [ ! "${old_subnet_mask}" = "${new_subnet_mask}" ] ||
@@ -766,15 +766,15 @@ case "${reason}" in
         # upstream script sets interface down here,
         # we only remove old ip address
         #flush_dev ${interface}
         remove_old_addr
 
         if [ -n "${alias_ip_address}" ]; then
             ip -4 addr add ${alias_ip_address}/${alias_prefix} broadcast ${alias_broadcast_address} dev ${interface} label ${interface}:0
-            ip -4 route replace ${alias_ip_address}/32 dev ${interface}
+            ip -4 route replace ${alias_ip_address}/32 dev ${interface} protocol dhcp
         fi
 
         exit_with_hooks 0
         ;;
 
     TIMEOUT)
         if [ -n "${new_routers}" ]; then
