diff --git a/src/conf.c b/src/conf.c
index 6f949f56..90ad58fc 100644
--- a/src/conf.c
+++ b/src/conf.c
@@ -59,6 +59,7 @@ static internal_config_t hazahaza[] = {
   { "PingTimeout",  pingtimeout,    TYPE_INT },
   { "TapDevice",    tapdevice,      TYPE_NAME },
   { "KeyExpire",    keyexpire,      TYPE_INT },
+  { "ProxyMode",    proxymode,      TYPE_BOOL },
   { NULL, 0, 0 }
 };
 
diff --git a/src/conf.h b/src/conf.h
index 2d83092d..673573b3 100644
--- a/src/conf.h
+++ b/src/conf.h
@@ -41,6 +41,7 @@ typedef enum which_t {
   allowconnect,
   pingtimeout,
   keyexpire,
+  proxymode
 } which_t;
 
 typedef struct config_t {
diff --git a/src/net.c b/src/net.c
index 7b9133e0..58f3e02f 100644
--- a/src/net.c
+++ b/src/net.c
@@ -258,8 +258,14 @@ cp
 */
 int send_packet(ip_t to, vpn_packet_t *packet)
 {
+  config_t const *cfg;
   conn_list_t *cl;
 cp
+  if(!(cfg = get_config_val(proxymode)))		/* In case we are in proxy mode, just send everything to our uplink. */
+    cl = conn_list;
+  else
+    cl = lookup_conn(to);
+
   if((cl = lookup_conn(to)) == NULL)
     {
       if(debug_lvl > 2)