疫情之下,远程办公之利用公司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之类是平行的):

Copy
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 @   三国梦回  阅读(1407)  评论(5编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端
点击右上角即可分享
微信分享提示
CONTENTS