1. 程式人生 > >疫情之下,遠端辦公之利用公司vpn+nginx tcp轉發,使用windows遠端桌面連線公司pc

疫情之下,遠端辦公之利用公司vpn+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):

展示下效果吧:

大家看,我已經連線進去了,速度嘛,比向日葵快,大家有興趣,可以試試。

通訊過程中,抓包如下:

總結

利用技術解決生活中的問題,是不是還比較有意思呢,哈哈。大家有疑問請和我聯絡