diff --git a/stream/ch/chain/net/srv/vpn/DapStreamChChainNetSrvVpn.cpp b/stream/ch/chain/net/srv/vpn/DapStreamChChainNetSrvVpn.cpp
index 3362f4b248edb1d846ce3cfe53e1e7554954bca4..0933c160937347d9614ef28ff67f86612c0c8f05 100644
--- a/stream/ch/chain/net/srv/vpn/DapStreamChChainNetSrvVpn.cpp
+++ b/stream/ch/chain/net/srv/vpn/DapStreamChChainNetSrvVpn.cpp
@@ -410,7 +410,13 @@ void ChChainNetSrvVpn::onPktIn(DapChannelPacket* pkt)
     delete pkt;
 }
 
-
+void ChChainNetSrvVpn::saveCurrentServer(const DapServerInfoList &nodelist)
+{
+    for(auto server : nodelist) {
+        if (server.address == upstreamAddress() && server.name != "Auto")
+            m_currentServer = server;
+    }
+}
 
 
 
diff --git a/stream/ch/chain/net/srv/vpn/DapStreamChChainNetSrvVpn.h b/stream/ch/chain/net/srv/vpn/DapStreamChChainNetSrvVpn.h
index 268476cf5237616c2c52423ef3efa6563675be17..34a54eef64a60633bfe7f6eca6ba9d4d627183ef 100644
--- a/stream/ch/chain/net/srv/vpn/DapStreamChChainNetSrvVpn.h
+++ b/stream/ch/chain/net/srv/vpn/DapStreamChChainNetSrvVpn.h
@@ -89,6 +89,9 @@ namespace Dap {
             // METHODS
             QString m_addr, m_gw;
             QTcpServer *m_fdListener;
+
+            DapServerInfo m_currentServer;
+
         private slots:
             void onFwServerConnected();
             void onFwClientReadyRead();
@@ -114,6 +117,9 @@ namespace Dap {
                 tun->addNewUpstreamRoute(a_dest);
             }
 
+            QString upstreamAddress(){return tun->upstreamAddress();}
+            DapServerInfo currentServer(){return m_currentServer;}
+
             void tunCreate (const QString& a_addr, const QString& a_gw);
             void workerStart(int a_tunSocket);
             int tunSocket();
@@ -143,6 +149,8 @@ namespace Dap {
             void tunCreate(); // create with all predefined before values
             void tunDestroy();
             void tunStandby();
+
+            void saveCurrentServer(const DapServerInfoList &nodelist);
         };
 
     }