【網絡】公司內網(私網)通過公網作代理連接出去,實現遠程登錄


還要實現端口轉發:

 

這篇非常好

怎樣從外網訪問內網服務器

原文:http://www.cnblogs.com/devymex/p/4156378.html

★★★★FBI WARNING★★★★

以下操作相當於給內網的防火牆上開了個洞,會給整個內網帶來極其嚴重的安全隱患!

為避免產生法律問題,請在操作前務必向網絡管理員咨詢您的操作權限!

★★★★★★★★★★★★★★★


《基於VPS服務器的內網代理轉發方案》

前言

假設我們在內網有一個自己的電腦A(運行Win7),希望在外網家中用另一台電腦B(運行Win7)訪問內網資源,或偽裝為內網電腦訪問外網資源。


由於內網電腦沒有公網IP,所以外網電腦無法直接向內網電腦發起連接。為實現我們的目標,需要從內網電腦主動向一個公網服務器發起一個連接,外網電腦通過這個服務器使用這一連接,再通過內網電腦進行訪問。

現在已有許多商業內網代理服務器可以實現此功能,比如花生殼、步輕雲、TeamView、GoToMyCloud等等。但天下沒有免費的午餐,要使用第三方的公網服務器就必須為第三方付費,並且這些服務器都有各種各樣的限制。此外,由於數據包會流經第三方,因此對數據安全也是一大隱患

 

隨着個人VPS服務器的普及,越來越多的朋友想用自己的VPS服務器作為內網代理,這樣既安全又免費。本套方案實現了這一目標,並具有以下無可替代的優勢:

  • 在已有VPS服務器的基礎上,完全免費;
  • 用到的所有工具軟件皆為開源軟件;
  • 不經過任何第三方服務器,保證數據安全;
  • 外網電腦可以偽裝成內網電腦,具有最高訪問權限。

如果您的方案在滿足上面四個條件的基礎上,比我的方案更簡單,敬請指教!下文將對配置方案作詳細的介紹。



先決條件

1. A機上可訪問外網並且可以安裝虛擬機。

2. 擁有一個外網的VPS服務器S(運行Debian 7.x)。推薦購買BandWagon的廉價VPS服務器(),一年100多元。



一、建立從內網機到外網服務器的反向隧道

1.1. 在A機上用虛擬機運行Ubuntu Server。首先安裝VirtualBox虛擬機。

下載VirtualBox:

最新版的VirtualBox不用配置網絡即可從本地可用的網絡連接上網。

下載Ubuntu Server:

在VirtualBox中安裝Ubuntu Server,全部默認設置即可。

 

1.2. 由A機發起,建立從A到S的反向隧道連接,命令格式:

ssh -C -R <NPORT>:localhost:22 -p <RPORT> <SUSER>@<S_IP>
  • -C:允許數據壓縮;
  • NPORT :指定在S機上進行偵聽的端口。在S機上發往"localhost:NPORT"的數據包都將被直接轉發到A機的22端口(SSH默認服務端口);
  • RPORT:S機的SSH服務端口;
  • SUSER:登錄S機的用戶名,一般為root;
  • S_IP:S機的公網IP。

執行此命令后,可能需要輸入SUSER在S機的密碼。反向隧道連接建立成功以后,即遠程登錄到S,接下來的操作都是將在S上執行。命令舉例:

ssh -C -R 876:localhost:22 -p 26131 root@14.12.83.20

 

1.3. 建立從S到A的SSH動態轉發,可視為從S到A的SOCKS代理服務,命令格式:

ssh -C -f -N -D <SPORT> -p <NPORT> <LUSER>@localhost
  • -f -N:后台連接而不登錄到主機,也不執行任何腳本;
  • SPORT:指定S機上SOCKS代理服務進行偵聽的端口;
  • NPORT:S機上偵聽的反向隧道端口,在第1.2步指定;
  • LUSER:登錄A機的用戶名。

執行此命令后,可能需要輸入LUSER在A機的密碼。至此,我們已將A作為S的SOCKS代理服務器。命令舉例:

ssh -C -f -N -D 1080 -p 876 devymex@localhost

 

1.4. 用curl命令測試連接,命令格式:

curl --socks4 localhost:<SPORT> <URL>
  • SPORT:S機上SOCKS代理服務進行偵聽的端口,在1.3步指定;
  • URL:任意網址,可指定內網資源。

此命令若執行成功,URL所指向的內容會打印在屏幕上。一般以簡短的HTML頁面為佳,太大的資源會很慢。命令舉例:

curl --socks4 localhost:1080 www.baidu.com

如果未安裝curl,需先安裝:

apt-get install curl

若未找到curl包,需先更新apt-get:

apt-get update



二、在服務器端用DeleGate實現二級HTTP代理

接下來要將SOCKS代理轉換為HTTP代理,使用的軟件是DeleGate。這是一個開源軟件,但目前並不被apt-get、rpm和yum支持,因此必須先下載編譯。

2.1.如果沒有g++需要先安裝g++,命令:

apt-get install g++

 

2.2. 下載和解壓DeleGate(http://www.delegate.org/),命令:

cd ~ wget ftp://ftp.delegate.org/pub/DeleGate/delegate9.9.13.tar.gz tar -xzf delegate9.9.13.tar.gz 
  • wget:下載源碼包到/home目錄下,當然其它具有運行程序權限的目錄亦可;
  • tar -xzf:/home/delegate9.9.13子目錄並解壓縮到此目錄中。

注意,如果DeleGate發布了新版本,上面給出的下載鏈接和目錄名可能不同,請關注DeleGate官方網站。

2.3. 編譯DeleGate,命令:

cd ~/delegate9.9.13 make 

make命令必須在DeleGate解壓后的目錄中執行。如果未安裝make,需先安裝:

apt-get install make

make執行的過程較慢,其間會提示輸入電子郵箱,任意輸入,然后按Y即可。

 

2.4. 啟動DeleGate,命令格式:

src/delegated -P<HPORT> SERVER=http SOCKS=localhost:<SPORT> 
  • HPORT:指定S機上HTTP代理服務進行偵聽的端口;
  • SPORT:S機上SOCKS代理服務進行偵聽的端口,在1.3步指定。

命令舉例:

delegated -P8118 SERVER=http SOCKS=localhost:1080 

 

2.5. 用curl命令測試連接,命令格式:

curl -x localhost:<HPORT> <URL>
  • HPORT:S機上HTTP代理服務進行偵聽的端口,在2.4步指定。
  • URL:任意網址,可指定內網資源。

命令舉例:

curl -x localhost:8118 www.baidu.com



三、在服務器端建立端口轉發

現在S機上已經有本地的HTTP代理了,接下來要將

3.1 如有必要,先清除已有nat規則,命令:

iptables -t nat -F

iptables是一個非常強大的防火牆/路由程序,用法也比較復雜,具體可參考相關文檔,此處不做贅述。

3.2 建立http協議的端口轉發,命令格式:

iptables -t nat -A OUTPUT -p tcp --dport 80 -j REDIRECT --to-ports <HPORT>
  • HPORT:S機上HTTP代理服務進行偵聽的端口,在2.4步指定。

命令執行后,由S機發出的HTTP請求(80端口)都將被轉發到HPORT端口上。

命令舉例:

iptables -t nat -A OUTPUT -p tcp --dport 80 -j REDIRECT --to-ports 8118

 

3.3. 用curl命令測試連接,命令格式:

curl <URL>
  • URL:任意網址,可指定內網資源。

命令舉例:

curl www.baidu.com



四、在外網機通過SSH隧道連接到外網服務器

1. 在B機安裝Bitvise SSH客戶端軟件

 

2. 配置Bitvise SSH客戶端的Login頁

Host:S機的服務器IP;Port:SSH服務端口;Username:登錄用戶名;Initial method:password;Password:登錄密碼。

 

3. 配置Bitvise SSH客戶端的Services頁

SOCKS/HTTP Proxy Forwarding:Enabled;Listen interface:127.0.0.1;Listen port:1080。

 

4. 在B機安裝Privoxy。

下載地址:

 

5. 配置Privoxy目錄下的config.txt文件,並運行Privoxy:

listen-address  0.0.0.0:1984
forward-socks5   /  127.0.0.1:1080 .

 

6. B機上的任意程序,以localhost:1984為HTTP代理,即可通過A機訪問內網資源。



備注

1. kill掉delegate進程即可終止S機上的HTTP代理服務,刪除delegate的目錄即可完全卸載DeleGate。

 

2. 執行如下命令可取消80端口數據包的轉發:

iptables -t nat -F

 

3. 斷開從A機到S機的連接,即可終止S機上的SOCKS代理服務。

 

4. 查看偵聽指定端口的進程ID,命令格式:

fuser -un tcp <PORT>


5. B機上建議使用Firefox+AutoProxy進行訪問。
AutoProxy下載地址:

自己猜想的

公司內網 是私有網段,要在家remote是連接不上的。
只有找一台公網的機器,網段是外網的做代理才行。
正好我們有Azure服務器(雲服務器)是公網的。公司內網ssh(bitvise ssh client/server 或者putty) 連接Azure通過Azure ping到自己家里的電腦。雖然公司電腦的端口都被限制了,遠程連接端口是3389,所以其他電腦是連不上我們的遠程服務功能的。但是我們的電腦主動連接其他開了此端口的電腦比如Azure,這樣雙方就建立了通信
最后就是 公司電腦 --> Azure:3389(或者自己定義好一個遠程連接的端口) --> 家里電腦:3389(或者自己定義好一個遠程連接的端口,因為默認是不開的,怕被黑客侵入)

 

代理服務

http://www.cnblogs.com/ambon/articles/5632000.html 

 

0.有3種方法

  1. 直接修改本地IP為可以上網的IP。

  2. 使用代理上網

  3. 網絡管理員

 1.使用代理上網 適合內網(私網)情況下

首先在局域網中必須有一台能夠訪問公網的計算機。

然后把那台做成代理服務器,通過那台訪問公網,不然死也上不去。如果有這樣的機器 用 ccproxy這個軟件可以把那台機器做成代理服務器。

2.

這個要把你公司電腦的ip地址映射到你公司外網ip地址上才行,要在公司那邊改的,跟家里沒多大關系(因為你連的是公司的電腦), 這個就需要你公司的網絡管理員配合在路由器里做端口映射了!!!


3.局域網內有兩台電腦 都開放了3389端口,那么問題來了 =.= 如果在外網 用遠程桌面鏈接 會發生什么 0.0 求解

連不上任何電腦!只有把內網的某一個端口指定到公網IP的某一端口才可以(端口映射),兩台機器的話公網可以使用不同的端口就可以了,如一台使用8888,另一台使用9999,都轉換到內網這2台 不同主機的3389端口就可以分別連接兩台主機了。(但是問題是現在兩台電腦的端口都關閉的,能連嗎)

4.
實現兩台計算機互相通信,要使用到 socket 編程,只要在創建套接字的時候綁定本機IP和端口,然后再通過對方計算機的ip就可以實現通信。
這里通信 設計到 使用UDP 還是 TCP 。
UDP是面向通信的,效率較高,但不安全。常用在局域網通信。
TCP是面向連接的,效率不高,安全,比較常用在廣域網通信。



和我的狀況很類似:
http://www.open-open.com/lib/view/open1434007270286.html

ssh 反向代理 外網訪問內網

ssh   2015-06-12 11:49:40 發布
您的評價:
     
0.0  
收藏      0收藏
先明確一下概念
  外網是有固定ip的機器,ssh可以之間連接上;
  內網是類似公司局域網之類,有獨立ip但是不能ssh,需要管理員做端口轉發等等權限性操作才可以。
 
文中用內網表示需要被訪問的局域網內電腦,用外網表示局域網外電腦。
 
# 一、首先,查看外網現有的ssh端口開放情況。
[zhipeng@zhangzhipeng2023.cn ~]$sudo netstat -anopl | grep ssh
[sudo] password for zhipeng:
tcp     0    0 0.0.0.0:22        0.0.0.0:*        LISTEN    22645/sshd      off (0.00/0/0)
 
-------------------------------------------------------------------
 
內網ssh連接外網:
ssh -C -R ( vpsPort ):( vpsHostname ): ( mySSHPort )-p( vpsSSHPort )( vpsUser )@( vpsIP 
參數說明: 
-C 數據壓縮;
-R vpsPort 要綁定的外網端口;
vpsHostname 給外網設置主機名;
mySSHPort 內網ssh服務的端口。
-p vpsSSHPort 外網ssh服務端口
vpsUser 外網用戶名
vpsIP 外網用戶名
 
neiwang@ZHIPENG-PC ~ $ ssh -C -R 3345:localhost:22 -p 22 zhipeng@ VPSIP
 
Last login: Tue Jun  9 13:12:51 2015 from  NeiWangIP
Welcome to WaiWang Compute Service!
# OK,成功登陸到外網服務器上
 
# 二、現在再查看一下外網的SSH端口狀態
可以看到,外網已經在監聽3344端口,並且和內網電腦建立了ssh連接
[zhipeng@zhangzhipeng2023.cn ~]$sudo netstat -anopl | grep ssh
[sudo] password for zhipeng:
tcp     0    0 127.0.0.1:3345      0.0.0.0:*        LISTEN    22799/sshd: zhipeng  off (0.00/0/0)
tcp     0    0 0.0.0.0:22        0.0.0.0:*        LISTEN    22645/sshd      off (0.00/0/0)
tcp     0   36  VPSIP:22     NeiWangIP:11694    ESTABLISHED 22796/sshd: zhipeng  on (0.38/0/0)
 
 
# 三、 接着,試一下從外網ssh內網
$ssh -C  -N -D( vpsPort ) -p( mySSHPort ) ( myHostname )@( vpsHostname 
參數我就不解釋了,看名字和第一步對比就知道了 myName是內網用戶名
我這里加-f -N 是會報錯的,如下:
[zhipeng@zhangzhipeng2023.cn ~]$ssh -C  -f -N -D 3345 -p 3345 neiwang@localhost
The authenticity of host '[localhost]:3345 ([127.0.0.1]:3345)' can't be established.
ECDSA key fingerprint is 93:e8:a5:fa:1a:3e:0e:19:6e:c3:28:af:f7:9d:15:3c.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '[localhost]:3345' (ECDSA) to the list of known hosts.
neiwang@localhost's password:
bind: Cannot assign requested address
channel_setup_fwd_listener: cannot listen to port: 3345
Could not request local forwarding.
 
[zhipeng@zhangzhipeng2023.cn ~]$sudo ssh -C -D 3345 -p 3345 neiwang@localhost
neiwang@localhost's password: #輸入內網密碼
bind: Cannot assign requested address
channel_setup_fwd_listener: cannot listen to port: 3345
Could not request local forwarding.
Last login: Tue Jun  9 13:18:53 2015 from 127.0.0.1
 
[2015-06-09 13:21.51]  ~
[neiwang.neiwang-PC] 0bB logout
Connection to localhost closed.
 
ssh反向代理大功告成。
 
題外話,也不能全算題外話,很重要的
0、安全問題,慎用。
1、別忘了打開內網的sshd服務
2、外網iptables記得打開端口(防火牆)
3、如果內網電腦是windows,記得關閉防火牆,或者設置好端口訪問,不然ssh 22端口會訪問異常無法連接。
來自: http://blog.sina.com.cn/s/blog_83dc494d0102vph3.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM