diff --git a/init.d/net-online.in b/init.d/net-online.in
index 6703b3e8..9414491f 100644
--- a/init.d/net-online.in
+++ b/init.d/net-online.in
@@ -45,11 +45,12 @@ start ()
 	ifcount=0
  	for dev in ${interfaces}; do
 		: $((ifcount += 1))
-		read carrier < /sys/class/net/$dev/carrier 2> /dev/null ||
+		read carrier 2> /dev/null < /sys/class/net/$dev/carrier ||
 			carrier=
 		[ "$carrier" = 1 ] && : $((carriers += 1))
-		read operstate < /sys/class/net/$dev/operstate 2> /dev/null ||
+		read operstate 2> /dev/null < /sys/class/net/$dev/operstate ||
 			operstate=
+		[ -e /sys/class/net/$dev/tun_flags ] && operstate=up
 		[ "$operstate" = up ] && : $((configured += 1))
 	done
 	[ $configured -eq $ifcount ] && [ $carriers -ge 1 ] && break
