疫情之下,远程办公之利用公司virtual--private--n+nginx tcp转发,使用windows远程桌面连接公司pc
前言
说下背景吧,现在疫情很严重,所以呢,公司让我们远程办公。公司给我们开了vpn,利用vpn,我们可以连接到公司的内网服务器上,但是,不能连接到自己的工作pc上,不知道其他公司有没有这个问题,反正我们有这个问题。
现在一般来说,连接到公司里的个人pc上,有下面几种方式:
- teamviewer
- 向日葵
上面两种都是内网直接穿透的。但我这边感觉还是有点卡。
在我的琢磨下,有了下面的第三种方式:
因为开了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
操作步骤
- nginx的该项功能,需要启用stream模块,操作步骤可以参考:
-
配置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):
展示下效果吧:
大家看,我已经连接进去了,速度嘛,比向日葵快,大家有兴趣,可以试试。
通信过程中,抓包如下:
总结
利用技术解决生活中的问题,是不是还比较有意思呢,哈哈。大家有疑问请和我联系。