01
nps-npc
內(nèi)網(wǎng)穿透代理服務(wù)器
01 nps簡介
nps是一款輕量級、高性能、功能強大的內(nèi)網(wǎng)穿透代理服務(wù)器。
目前支持tcp、udp流量轉(zhuǎn)發(fā),可支持任何tcp、udp上層協(xié)議(訪問內(nèi)網(wǎng)網(wǎng)站、本地支付接口調(diào)試、ssh訪問、遠程桌面,內(nèi)網(wǎng)dns解析等等……)。
此外還支持內(nèi)網(wǎng)http代理、內(nèi)網(wǎng)socks5代理、p2p等,并帶有功能強大的web管理端。
一臺有公網(wǎng)IP的服務(wù)器(VPS)運行服務(wù)端(NPS)
一個或多個運行在內(nèi)網(wǎng)的服務(wù)器或者PC運行客戶端(NPC)
02 nps特點
Go語言編寫
支持跨平臺
支持多種協(xié)議的代理
web管理端
03 NPS
安裝配置
找到自己服務(wù)器相應(yīng)版本的server:
cd ~
wget https://github.com/cnlh/nps/releases/download/v0.23.2/linux_amd64_server.tar.gz tar xzvf linux_amd64_server.tar.gz cd ~/nps
在nps目錄下面會有一個nps可執(zhí)行文件、conf配置目錄和web網(wǎng)頁目錄,我們只需要修改conf/nps.conf即可:
vim conf/nps.conf
需要改一下#web下面的幾個參數(shù):
web_host= 服務(wù)器IP或者域名
web_username= admin(登錄用戶名) web_password= 你的密碼 web_port=8080(web管理端口)
修改#bridge 可以更改 NPC的連接端口。
比如我們拿到一臺權(quán)限受限的服務(wù)器,有防火墻,可能只有部分端口(80,443)可以出網(wǎng),就需要修改成出網(wǎng)端口。
##bridge
bridge_type=tcp bridge_port=443 # 修改連接端口 bridge_ip=0.0.0.0
啟動。
#Mac/Linux 。/nps test|start|stop|restart|status 測試配置文件|啟動|停止|重啟|狀態(tài) #Windows nps.exe test|start|stop|restart|status 測試配置文件|啟動|停止|重啟|狀態(tài)
04 NPC
。/npc -server=你的IP:8024 -vkey=唯一驗證密碼 -type=tcp
新建好客戶端后,也可以在+中看到,詳細的客戶端連接命令:
05 web管理端
在客戶端界面可以通過新增的方式添加客戶端連接,每一個連接的vkey都是唯一區(qū)分的。
每一個客戶端,在建立連接后,都可以建立多個不同協(xié)議的隧道,這一個個隧道就是不同的代理了。
通過不同的協(xié)議和端口就可以連接代理的內(nèi)網(wǎng)機器。
02
frp內(nèi)網(wǎng)穿透
反向代理應(yīng)用
01 frp簡介
frp 是一個專注于內(nèi)網(wǎng)穿透的高性能的反向代理應(yīng)用,支持 TCP、UDP、HTTP、HTTPS 等多種協(xié)議。
可以將內(nèi)網(wǎng)服務(wù)以安全、便捷的方式通過具有公網(wǎng) IP 節(jié)點的中轉(zhuǎn)暴露到公網(wǎng)。
02 frp特點
客戶端服務(wù)端通信支持 TCP、KCP 以及 Websocket 等多種協(xié)議。
端口復用,多個服務(wù)通過同一個服務(wù)端端口暴露。
跨平臺,但是支持的比nps少一點
多種插件,提供很多功能
03 frp使用場景
做具體的配置前,根據(jù)對應(yīng)的操作系統(tǒng)及架構(gòu),從 Release 頁面下載最新版本的程序。
將 frps 及 frps.ini 放到具有公網(wǎng) IP 的機器上。請注意配置防火墻或安全組放過配置文件中使用的端口。
將 frpc 及 frpc.ini 放到處于內(nèi)網(wǎng)環(huán)境的機器上。
1、通過 rdp 訪問家里的機器
?。?)修改 frps.ini 文件,為了安全起見,這里最好配置一下身份驗證。
服務(wù)端和客戶端的 common 配置中的 token 參數(shù)一致則身份驗證通過:
# frps.ini
?。踓ommon] bind_port = 7000 # 用于身份驗證,請自行修改,要保證服務(wù)端與客戶端一致 token = abcdefgh
(2)啟動 frps:
。/frps -c 。/frps.ini
(3)修改 frpc.ini 文件,假設(shè) frps 所在服務(wù)器的公網(wǎng) IP 為 x.x.x.x:
# frpc.ini
?。踓ommon] server_addr = x.x.x.x server_port = 7000 # 用于身份驗證,請自行修改,要保證服務(wù)端與客戶端一致 token = abcdefgh [rdp] type = tcp local_ip = 127.0.0.1 local_port = 3389 remote_port = 6000
?。?)啟動 frpc:
。/frpc -c 。/frpc.ini
?。?)通過 rdp 訪問遠程的機器,地址為:x.x.x.x:6000
*開機自啟
針對 Windows 系統(tǒng),為了便于使用,可以配置一下開機的時候靜默啟動。
(1)在 frpc.exe 的同級目錄創(chuàng)建一個 start_frpc.vbs:
‘start_frpc.vbs
’請根據(jù)實際情況修改路徑
CreateObject(“WScript.Shell”).Run “”“D:Program Filesfrp_windows_amd64frpc.exe”“” & “-c” &“”“D:Program Filesfrp_windows_amd64frpc.ini”“”,0
(2)復制 start_frpc.vbs 文件,打開以下目錄,注意將
改為你的用戶名:
C:UsersAppDataRoamingMicrosoftWindowsStart MenuProgramsStartup
?。?)鼠標右擊,粘貼為快捷方式即可。
2、通過 SSH 訪問公司內(nèi)網(wǎng)機器
frps 的部署步驟同上。
?。?)啟動 frpc,配置如下:
# frpc.ini [common] server_addr = x.x.x.x server_port = 7000 # 用于身份驗證,請自行修改,要保證服務(wù)端與客戶端一致 token = abcdefgh [ssh] type = tcp local_ip = 127.0.0.1 local_port = 22 remote_port = 6000
(2)通過 SSH 訪問內(nèi)網(wǎng)機器,假設(shè)用戶名為 test:
ssh -oPort=6000 [email protected]
3、通過自定義域名訪問部署于內(nèi)網(wǎng)的 Web 服務(wù)
有時想要讓其他人通過域名訪問或者測試我們在本地搭建的 Web 服務(wù);
但是由于本地機器沒有公網(wǎng) IP,無法將域名解析到本地的機器,通過 frp 就可以實現(xiàn)這一功能。
以下示例為 http 服務(wù),https 服務(wù)配置方法相同, vhost_http_port 替換為 vhost_https_port, type 設(shè)置為 https 即可。
?。?)修改 frps.ini 文件,設(shè)置 http 訪問端口為 8080:
# frps.ini
?。踓ommon] bind_port = 7000 vhost_http_port = 8080 # 用于身份驗證,請自行修改,要保證服務(wù)端與客戶端一致 token = abcdefgh
?。?)啟動 frps:
。/frps -c 。/frps.ini
(3)修改 frpc.ini 文件,假設(shè) frps 所在的服務(wù)器的 IP 為 x.x.x.x,local_port 為本地機器上 Web 服務(wù)對應(yīng)的端口, 綁定自定義域名 www.yourdomain.com:
# frpc.ini
?。踓ommon] server_addr = x.x.x.x server_port = 7000 # 用于身份驗證,請自行修改,要保證服務(wù)端與客戶端一致 token = abcdefgh [web] type = http local_port = 80 custom_domains = www.yourdomain.com
(4)啟動 frpc:
。/frpc -c 。/frpc.ini
(5)將 www.yourdomain.com 的域名 A 記錄解析到 IP x.x.x.x,如果服務(wù)器已經(jīng)有對應(yīng)的域名,也可以將 CNAME 記錄解析到服務(wù)器原先的域名。
(6)通過瀏覽器訪問
http://www.yourdomain.com:8080 即可訪問到處于內(nèi)網(wǎng)機器上的 Web 服務(wù)。
4、對外提供簡單的文件訪問服務(wù)
通過 static_file 插件可以對外提供一個簡單的基于 HTTP 的文件訪問服務(wù)。
frps 的部署步驟同上。
?。?)啟動 frpc,啟用 static_file 插件,配置如下:
# frpc.ini
?。踓ommon] server_addr = x.x.x.x server_port = 7000 # 用于身份驗證,請自行修改,要保證服務(wù)端與客戶端一致 token = abcdefgh [test_static_file] type = tcp remote_port = 6000 plugin = static_file # 要對外暴露的文件目錄 plugin_local_path = /tmp/file # 訪問 url 中會被去除的前綴,保留的內(nèi)容即為要訪問的文件路徑 plugin_strip_prefix = static plugin_http_user = abc plugin_http_passwd = abc
?。?)通過瀏覽器訪問
http://x.x.x.x:6000/static/ 來查看位于 /tmp/file 目錄下的文件,會要求輸入已設(shè)置好的用戶名和密碼。
04 常用功能
1、統(tǒng)計面板
通過瀏覽器查看 frp 的狀態(tài)以及代理統(tǒng)計信息展示。
注:Dashboard 尚未針對大量的 proxy 數(shù)據(jù)展示做優(yōu)化,如果出現(xiàn) Dashboard 訪問較慢的情況,請不要啟用此功能。
需要在 frps.ini 中指定 dashboard 服務(wù)使用的端口,即可開啟此功能:
?。踓ommon]
dashboard_port = 7500 # dashboard 用戶名密碼,默認都為 admin dashboard_user = admin dashboard_pwd = admin
打開瀏覽器通過 http://[server_addr]:7500 訪問 dashboard 界面,用戶名密碼默認為 admin。
2、加密與壓縮
這兩個功能默認是不開啟的,需要在 frpc.ini 中通過配置來為指定的代理啟用加密與壓縮的功能,壓縮算法使用 snappy:
# frpc.ini
?。踫sh] type = tcp local_port = 22 remote_port = 6000 use_encryption = true use_compression = true
如果公司內(nèi)網(wǎng)防火墻對外網(wǎng)訪問進行了流量識別與屏蔽,例如禁止了 SSH 協(xié)議等。
通過設(shè)置 use_encryption = true,將 frpc 與 frps 之間的通信內(nèi)容加密傳輸,將會有效防止流量被攔截。
如果傳輸?shù)膱笪拈L度較長,通過設(shè)置 use_compression = true 對傳輸內(nèi)容進行壓縮,可以有效減小 frpc 與 frps 之間的網(wǎng)絡(luò)流量,加快流量轉(zhuǎn)發(fā)速度。
但是會額外消耗一些 CPU 資源。
3、TLS
從 v0.25.0 版本開始 frpc 和 frps 之間支持通過 TLS 協(xié)議加密傳輸。
通過在 frpc.ini 的 common 中配置 tls_enable = true 來啟用此功能,安全性更高。
為了端口復用,frp 建立 TLS 連接的第一個字節(jié)為 0x17。
注意:啟用此功能后除 xtcp 外,不需要再設(shè)置 use_encryption。
4、代理限速
目前支持在客戶端的代理配置中設(shè)置代理級別的限速,限制單個 proxy 可以占用的帶寬。
# frpc.ini [ssh] type = tcp local_port = 22 remote_port = 6000 bandwidth_limit = 1MB
在代理配置中增加 bandwidth_limit 字段啟用此功能,目前僅支持 MB 和 KB 單位。
5、范圍端口映射
在 frpc 的配置文件中可以指定映射多個端口,目前只支持 tcp 和 udp 的類型。
這一功能通過 range : 段落標記來實現(xiàn),客戶端會解析這個標記中的配置,將其拆分成多個 proxy,每一個 proxy 以數(shù)字為后綴命名。
例如要映射本地 6000-6005, 6007 這 6 個端口,主要配置如下:
# frpc.ini
?。踨ange:test_tcp] type = tcp local_ip = 127.0.0.1 local_port = 6000-6006,6007 remote_port = 6000-6006,6007
實際連接成功后會創(chuàng)建 8 個 proxy,命名為 test_tcp_0, test_tcp_1 。.. test_tcp_7。
03
EW便攜式網(wǎng)絡(luò)穿透工具
01 EW簡介
EW 是一套便攜式的網(wǎng)絡(luò)穿透工具,具有 SOCKS v5服務(wù)架設(shè)和端口轉(zhuǎn)發(fā)兩大核心功能,可在復雜網(wǎng)絡(luò)環(huán)境下完成網(wǎng)絡(luò)穿透。但是,現(xiàn)在工具已經(jīng)不更新了。
02 EW特點
輕量級,C語言編寫
可以設(shè)置多級代理
跨平臺
但是只支持Socks5代理
03 EW使用方法
以下所有樣例,如無特殊說明代理端口均為1080,服務(wù)均為SOCKSv5代理服務(wù)。
該工具共有 6 種命令格式(ssocksd、rcsocks、rssocks、lcx_slave、lcx_listen、lcx_tran)。
1、正向 SOCKS v5 服務(wù)器
$ 。/ew -s ssocksd -l 1080
2、反彈 SOCKS v5 服務(wù)器
這個操作具體分兩步:
(1)先在一臺具有公網(wǎng) ip 的主機A上運行以下命令:
$ 。/ew -s rcsocks -l 1080 -e 8888
?。?)在目標主機B上啟動 SOCKS v5 服務(wù) 并反彈到公網(wǎng)主機的 8888端口:
$ 。/ew -s rssocks -d 1.1.1.1 -e 8888
成功。
3、多級級聯(lián)
工具中自帶的三條端口轉(zhuǎn)發(fā)指令, 它們的參數(shù)格式分別為:
$ 。/ew -s lcx_listen -l 1080 -e 8888 $ 。/ew -s lcx_tran -l 1080 -f 2.2.2.3 -g 9999 $ 。/ew -s lcx_slave -d 1.1.1.1 -e 8888 -f 2.2.2.3 -g 9999
通過這些端口轉(zhuǎn)發(fā)指令可以將處于網(wǎng)絡(luò)深層的基于TCP的服務(wù)轉(zhuǎn)發(fā)至根前,比如 SOCKS v5。
首先提供兩個“二級級聯(lián)”本地SOCKS測試樣例:
(1)lcx_tran 的用法
$ 。/ew -s ssocksd -l 9999
$ 。/ew -s lcx_tran -l 1080 -f 127.0.0.1 -g 9999
(2)lcx_listen、lcx_slave 的用法
$ 。/ew -s lcx_listen -l 1080 -e 8888 $ 。/ew -s ssocksd -l 9999 $ 。/ew -s lcx_slave -d 127.0.0.1 -e 8888 -f 127.0.0.1 -g 9999
?。?)再提供一個“三級級聯(lián)”的本地SOCKS測試用例以供參考
$ 。/ew -s rcsocks -l 1080 -e 8888
$ 。/ew -s lcx_slave -d 127.0.0.1 -e 8888 -f 127.0.0.1 -g 9999 $ 。/ew -s lcx_listen -l 9999 -e 7777 $ 。/ew -s rssocks -d 127.0.0.1 -e 7777
數(shù)據(jù)流向: SOCKS v5 -》 1080 -》 8888 -》 9999 -》 7777 -》 rssocks
04
ngrok反向代理
01 ngrok簡介
ngrok 是一個反向代理,通過在公共端點和本地運行的 Web 服務(wù)器之間建立一個安全的通道,實現(xiàn)內(nèi)網(wǎng)主機的服務(wù)可以暴露給外網(wǎng)。
ngrok 可捕獲和分析所有通道上的流量,便于后期分析和重放,所以ngrok可以很方便地協(xié)助服務(wù)端程序測試。
02 ngrok特點
官方維護,一般較為穩(wěn)定
跨平臺,閉源
有流量記錄和重發(fā)功能
03 ngrok使用方法
1、進入ngrok官網(wǎng)(https://ngrok.com/),注冊ngrok賬號并下載ngrok。
2、根據(jù)官網(wǎng)給定的授權(quán)碼,運行如下授權(quán)命令。
3、。/ngrok authtoken 1hAotxhmORtzCYvUc3BsxDBPh1H_****
4、。/ngrok http 80即可將機器的80端口http服務(wù)暴露到公網(wǎng),并且會提供一個公網(wǎng)域名。
可以通過官網(wǎng)的UI界面查看數(shù)據(jù)包和流量等等(但是要付費)。
還可以通過一些命令將內(nèi)網(wǎng)的文件和其他TCP服務(wù) 暴露到公網(wǎng)中。
有授權(quán)的設(shè)置文件共享
ngrok http -auth=“user:password” file:///Users/alan/share
無授權(quán)的設(shè)置文件共享
ngrok http “file:///C:UsersalanPublic Folder”
將主機的3389的TCP端口暴露到公網(wǎng)
ngrok tcp 3389
編輯:黃飛
評論