疫情之下,远程办公之利用公司virtual--private--n+nginx tcp转发,使用windows远程桌面连接公司pc

前言

说下背景吧,现在疫情很严重,所以呢,公司让我们远程办公。公司给我们开了vpn,利用vpn,我们可以连接到公司的内网服务器上,但是,不能连接到自己的工作pc上,不知道其他公司有没有这个问题,反正我们有这个问题。

现在一般来说,连接到公司里的个人pc上,有下面几种方式:

  1. teamviewer
  2. 向日葵

上面两种都是内网直接穿透的。但我这边感觉还是有点卡。

在我的琢磨下,有了下面的第三种方式:

因为开了vpn时,家里pc --》 公司服务器 是通的;公司服务器上--》工作pc,也是通的。

假设我想通过家里pc,通过windows远程桌面的方式去连接工作pc,要怎么做?

正常远程桌面时,是通过下面的方式:

图里的ip,就是我工作pc的ip,但是很遗憾,我家里pc和工作pc网络不通。

在使用远程桌面进行连接时,

此时会进行如下的网络通信(向要远程的主机的3389端口发起通信):

但是我们也看到了,ip不通,3389端口根本上不去,怎么办呢?

解决方案

从前面我们知道,站在家里pc的角度,工作pc的ip是不通的,但是公司里的内网服务器却是通的。

而且,公司内网服务器,到工作pc的网络也是通的。

那么,我们的办法就是,在内网服务器上,安装一个代理软件,对3389端口进行监听,同时,将该端口的流量,转发到 工作pc的3389端口上。不就解决了吗?

最后呢,我用来完成这个功能的软件是nginx,nginx可以进行tcp流量转发。

可参考:

https://blog.csdn.net/yjyd54430/article/details/84888914

操作步骤

  1. nginx的该项功能,需要启用stream模块,操作步骤可以参考:

编译nginx平滑添加stream模块

  1. 配置nginx.conf

    参考 : https://blog.csdn.net/yjyd54430/article/details/84888914

我这边给一下我的配置文件的大概样子(注意,stream和http之类是平行的):

    http {
	...
	}
	stream {

		upstream 482{
             hash $remote_addr consistent;
             server 10.15.4.82:3389 max_fails=3 fail_timeout=30s;
        }

        server {
            listen 9981 so_keepalive=on;
            proxy_pass 482;
        }

        upstream 472{
             hash $remote_addr consistent;
             server 10.15.4.72:3389 max_fails=3 fail_timeout=30s;
        }

        server {
            listen 9982 so_keepalive=on;
            proxy_pass 472;
        }
	}

值得注意的是,大家看到我的配置文件里配了两个端口,9981,9982,分别转发流量到不同的工作pc。

因为我这是给组里的小伙伴配置的,实际不止这两个,配了大概十多个端口吧,每个小伙伴一个。

远程桌面连接的时候,直接就使用(打开远程桌面:win + R输入mstsc):

展示下效果吧:

大家看,我已经连接进去了,速度嘛,比向日葵快,大家有兴趣,可以试试。

通信过程中,抓包如下:

总结

利用技术解决生活中的问题,是不是还比较有意思呢,哈哈。大家有疑问请和我联系。

posted @ 2020-02-04 14:45  三国梦回  阅读(1348)  评论(5编辑  收藏  举报