常見內網穿透工具使用總結
鏈接:http://v0w.top/2020/08/11/IntranetProxy/
0x00 前言
nps是一款輕量級、高性能、功能強大的內網穿透代理服務器。目前支持tcp、udp流量轉發(fā),可支持任何tcp、udp上層協議(訪問內網網站、本地支付接口調試、ssh訪問、遠程桌面,內網dns解析等等……),此外還支持內網http代理、內網socks5代理、p2p等,并帶有功能強大的web管理端。
一臺有公網IP的服務器(VPS)運行服務端(NPS)
一個或多個運行在內網的服務器或者PC運行客戶端(NPC)

Go語言編寫
支持跨平臺
支持多種協議的代理
web管理端
https://github.com/ehang-io/nps/releases
cd ~wget https://github.com/cnlh/nps/releases/download/v0.23.2/linux_amd64_server.tar.gztar xzvf linux_amd64_server.tar.gzcd ~/nps
conf/nps.conf即可:vim conf/nps.conf
#web下面的幾個參數,web_host= 服務器IP或者域名web_username= admin(登錄用戶名)web_password= 你的密碼web_port=8080(web管理端口)
#bridge?可以更改 NPC的連接端口。比如我們拿到一臺權限受限的服務器,有防火墻,可能只有部分端口(80,443)可以出網,就需要修改成出網端口。##bridgebridge_type=tcpbridge_port=443 # 修改連接端口bridge_ip=0.0.0.0
啟動
#Mac/Linux./nps test|start|stop|restart|status 測試配置文件|啟動|停止|重啟|狀態(tài)#Windowsnps.exe test|start|stop|restart|status 測試配置文件|啟動|停止|重啟|狀態(tài)
NPC
./npc -server=你的IP:8024 -vkey=唯一驗證密碼 -type=tcp

+中看到,詳細的客戶端連接命令:
新增的方式添加客戶端連接,每一個連接的vkey都是唯一區(qū)分的。
frp 是一個專注于內網穿透的高性能的反向代理應用,支持 TCP、UDP、HTTP、HTTPS 等多種協議??梢詫染W服務以安全、便捷的方式通過具有公網 IP 節(jié)點的中轉暴露到公網。

客戶端服務端通信支持 TCP、KCP 以及 Websocket 等多種協議。
端口復用,多個服務通過同一個服務端端口暴露。
跨平臺,但是支持的比nps少一點
多種插件,提供很多功能
下載:https://github.com/fatedier/frp/releases
以下內容摘自:https://segmentfault.com/a/1190000021876836
1. 通過 rdp 訪問家里的機器
token?參數一致則身份驗證通過:# frps.ini[common]bind_port = 7000# 用于身份驗證,請自行修改,要保證服務端與客戶端一致token = abcdefgh
./frps -c ./frps.ini# frpc.ini[common]server_addr = x.x.x.xserver_port = 7000# 用于身份驗證,請自行修改,要保證服務端與客戶端一致token = abcdefgh[rdp]type = tcplocal_ip = 127.0.0.1local_port = 3389remote_port = 6000
./frpc -c ./frpc.inix.x.x.x:6000'start_frpc.vbs'請根據實際情況修改路徑CreateObject("WScript.Shell").Run """D:\Program Files\frp_windows_amd64\frpc.exe""" & "-c" & """D:\Program Files\frp_windows_amd64\frpc.ini""",0
C:\Users\\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup # frpc.ini[common]server_addr = x.x.x.xserver_port = 7000# 用于身份驗證,請自行修改,要保證服務端與客戶端一致token = abcdefgh[ssh]type = tcplocal_ip = 127.0.0.1local_port = 22remote_port = 6000
ssh -oPort=6000 [email protected]# frps.ini[common]bind_port = 7000vhost_http_port = 8080# 用于身份驗證,請自行修改,要保證服務端與客戶端一致token = abcdefgh
./frps -c ./frps.iniwww.yourdomain.com:# frpc.ini[common]server_addr = x.x.x.xserver_port = 7000# 用于身份驗證,請自行修改,要保證服務端與客戶端一致token = abcdefgh[web]type = httplocal_port = 80custom_domains = www.yourdomain.com
./frpc -c ./frpc.iniwww.yourdomain.com?的域名 A 記錄解析到 IP?x.x.x.x,如果服務器已經有對應的域名,也可以將 CNAME 記錄解析到服務器原先的域名。http://www.yourdomain.com:8080?即可訪問到處于內網機器上的 Web 服務。static_file?插件可以對外提供一個簡單的基于 HTTP 的文件訪問服務。static_file?插件,配置如下:# frpc.ini[common]server_addr = x.x.x.xserver_port = 7000# 用于身份驗證,請自行修改,要保證服務端與客戶端一致token = abcdefgh[test_static_file]type = tcpremote_port = 6000plugin = static_file# 要對外暴露的文件目錄plugin_local_path = /tmp/file# 訪問 url 中會被去除的前綴,保留的內容即為要訪問的文件路徑plugin_strip_prefix = staticplugin_http_user = abcplugin_http_passwd = abc
http://x.x.x.x:6000/static/?來查看位于?/tmp/file?目錄下的文件,會要求輸入已設置好的用戶名和密碼。[common]dashboard_port = 7500# dashboard 用戶名密碼,默認都為 admindashboard_user = admindashboard_pwd = admin
http://[server_addr]:7500?訪問 dashboard 界面,用戶名密碼默認為?admin。# frpc.ini[ssh]type = tcplocal_port = 22remote_port = 6000use_encryption = trueuse_compression = true
use_encryption = true,將 frpc 與 frps 之間的通信內容加密傳輸,將會有效防止流量被攔截。use_compression = true?對傳輸內容進行壓縮,可以有效減小 frpc 與 frps 之間的網絡流量,加快流量轉發(fā)速度,但是會額外消耗一些 CPU 資源。frpc.ini?的?common?中配置?tls_enable = true?來啟用此功能,安全性更高。# frpc.ini[ssh]type = tcplocal_port = 22remote_port = 6000bandwidth_limit = 1MB
bandwidth_limit?字段啟用此功能,目前僅支持?MB?和?KB?單位。range:?段落標記來實現,客戶端會解析這個標記中的配置,將其拆分成多個 proxy,每一個 proxy 以數字為后綴命名。# frpc.ini[range:test_tcp]type = tcplocal_ip = 127.0.0.1local_port = 6000-6006,6007remote_port = 6000-6006,6007
test_tcp_0, test_tcp_1 ... test_tcp_7。EW 是一套便攜式的網絡穿透工具,具有 SOCKS v5服務架設和端口轉發(fā)兩大核心功能,可在復雜網絡環(huán)境下完成網絡穿透。但是,現在工具已經不更新了。。。

輕量級,C語言編寫
可以設置多級代理
跨平臺
但是只支持Socks5代理
以下使用方法均摘自:http://rootkiter.com/EarthWorm/
1. 正向 SOCKS v5 服務器
$ ./ew -s ssocksd -l 1080
2. 反彈 SOCKS v5 服務器
a) 先在一臺具有公網 ip 的主機A上運行以下命令:
$ ./ew -s rcsocks -l 1080 -e 8888
$ ./ew -s rssocks -d 1.1.1.1 -e 8888
3. 多級級聯
$ ./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
lcx_tran?的用法$ ./ew -s ssocksd -l 9999$ ./ew -s lcx_tran -l 1080 -f 127.0.0.1 -g 9999
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
$ ./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
SOCKS v5 -> 1080 -> 8888 -> 9999 -> 7777 -> rssocksngrok 是一個反向代理,通過在公共端點和本地運行的 Web 服務器之間建立一個安全的通道,實現內網主機的服務可以暴露給外網。ngrok 可捕獲和分析所有通道上的流量,便于后期分析和重放,所以ngrok可以很方便地協助服務端程序測試。
4.2 特點
官方維護,一般較為穩(wěn)定
跨平臺,閉源
有流量記錄和重發(fā)功能
進入ngrok官網(https://ngrok.com/),注冊ngrok賬號并下載ngrok; 根據官網給定的授權碼,運行如下授權命令;
./ngrok authtoken 1hAotxhmORtzCYvUc3BsxDBPh1H_******************./ngrok http 80即可將機器的80端口http服務暴露到公網,并且會提供一個公網域名。


ngrok http -auth="user:password" file:///Users/alan/share
ngrok http "file:///C:\Users\alan\Public Folder"
ngrok tcp 3389
更多使用方法參考:https://ngrok.com/docs
-https://xz.aliyun.com/t/7701
-https://segmentfault.com/a/1190000021876836
http://rootkiter.com/EarthWorm/
