之前出過(guò)動(dòng)態(tài)域名解析做穿透,但是這個(gè)需要有動(dòng)態(tài)公網(wǎng)ip,有好多家里的寬帶都是"大內(nèi)網(wǎng)"。雖然我們還出了一期不需要公網(wǎng)ip的內(nèi)網(wǎng)穿透,可是沒(méi)有公網(wǎng)ip的免費(fèi)內(nèi)網(wǎng)穿透一般都不穩(wěn)定,所以今天跟大家分享一個(gè)新的內(nèi)網(wǎng)穿透工具做備用,親測(cè)免費(fèi)好用(不建議商業(yè)用途)。
釘釘提供的這個(gè)內(nèi)網(wǎng)穿透原本是為了開(kāi)發(fā)者在臨時(shí)使用時(shí)提供了一個(gè)公網(wǎng)代理服務(wù)的公網(wǎng)IP,目的是方便開(kāi)發(fā)測(cè)試。
一、啟動(dòng)內(nèi)網(wǎng)穿透
首先需要下載釘釘內(nèi)網(wǎng)穿透的程序,可以使用https://github.com/mzlogin/ding-tunnel.git來(lái)下載,(考慮到github下載速度感人,我已經(jīng)下載了壓縮包放在了QQ群里了,需要自取)里面包含了linuxlinux_armmac_64windows_64的程序,很顯然我們的玩客云是ARM核心,所以我們需要這個(gè)文件包。拿到文件包后,我把釘釘?shù)哪_本程序和配置文件放在了一個(gè)名叫l(wèi)inux_arm的文件夾下,并且把這個(gè)文件夾放在了/root目錄。
# 先進(jìn)入到linux_arm目錄 cd /root/linux_arm
# 在授權(quán)ding程序777權(quán)限 chmod 777 ding
# 執(zhí)行命令 ./ding -config=./ding.cfg -subdomain=域名前綴 端口
./ding -config=./ding.cfg -subdomain=tv 80
#如下圖就可以使用域名http://tv.vaiwan.cn來(lái)訪問(wèn)網(wǎng)站了,當(dāng)然在這之前你要把這個(gè)域名綁定在你的網(wǎng)站上。
注意:?jiǎn)?dòng)命令的子域參數(shù)有可能被別人占用,盡量不要用字符,可以用自己公司名的拼音。如果遇到被占用換一個(gè)即可
但是官方給的命令只適合測(cè)試使用,具體來(lái)說(shuō)就是你不能關(guān)閉shell窗口不然穿透就會(huì)停止。
參數(shù) |
說(shuō)明 |
config |
內(nèi)網(wǎng)穿透的配置文件,按命令照示例固定為釘釘提供的./ding.cfg,無(wú)需修改。 |
subdomain |
您需要使用的域名前綴,該前綴將會(huì)匹配到“vaiwan.com”前面,例如你的 subdomain 是 tv,啟動(dòng)工具后會(huì)將tv.vaiwan.com 映射到本地。 |
端口 |
您需要代理的本地服務(wù) http-server 端口,例如你本地端口為 80 等。 |
啟動(dòng)完客戶端后,你可以通過(guò)域名 http://tv.vaiwan.com 訪問(wèn)都會(huì)映射到 http://127.0.0.1:80上。
在釘釘目錄下使用命令./ding --help可以查看命令幫助文檔,當(dāng)然這并沒(méi)有什么卵用,因?yàn)槎际怯⑽奈铱床欢。。∷韵旅婢屯婵驮骗h(huán)境談下實(shí)用得命令吧!
#命令如下:
/root/linux_arm/ding -config=/root/linux_arm/ding.cfg -log=stdout -log-level=INFO -proto=http -subdomain=tv 80
#解釋下:
#/root/linux_arm/ding 這一串是程序ding的路徑。
#-config=/root/linux_arm/ding.cfg這個(gè)是參數(shù)congfig的配置,表示congfig的位置。
#-log=stdout這里指明了日志格式為stdout
#-log-level=INFO指明日志級(jí)別為INFO
#-proto=http僅用http
#-subdomain=tv 80 二級(jí)域名為tv 本地端口為80
不難發(fā)現(xiàn)現(xiàn)在這個(gè)界面就跟之前執(zhí)行的命令界面不同,是的這個(gè)界面我們可以使用nohup、&這兩個(gè)命令來(lái)實(shí)現(xiàn)后臺(tái)運(yùn)行,關(guān)掉終端不會(huì)停止運(yùn)行。
# nohup命令可以在關(guān)閉終端后不停止命令,就是不間斷執(zhí)行nohup后的命令
# & 實(shí)現(xiàn)后臺(tái)運(yùn)行
因此我們可以對(duì)命令/root/linux_arm/ding -config=/root/linux_arm/ding.cfg -log=stdout -log-level=INFO -proto=http -subdomain=tv 80做一些改變,讓我們?cè)陉P(guān)閉shell窗口后內(nèi)網(wǎng)穿透依然有效。
nohup /root/linux_arm/ding -config=/root/linux_arm/ding.cfg -log=stdout -log-level=INFO -proto=http -subdomain=tv 80 >/root/linux_arm/1.txt 2>1 &
# >/root/linux_arm/1.txt 2>1 把nohup.out日志寫(xiě)入/root/linux_arm/1.txt里
# 如下圖該穿透就已經(jīng)生效了,其中界面上顯示的[7]11807就是當(dāng)前命令生成的進(jìn)程ID
當(dāng)然,如果你要穿透不是搭建在玩客云上的應(yīng)用,那么我們就需要再修改下命令,如下:
nohup /root/linux_arm/ding -config=/root/linux_arm/ding.cfg -log=stdout -log-level=INFO -proto=http -subdomain=tv 192.168.0.100:80 >/root/linux_arm/1.txt 2>1 &
# 修改的地方只是把以前的端口改成了具體的局域網(wǎng)內(nèi)你要穿透的ip地址加端口號(hào),這里的192.168.0.100就是你要穿透的應(yīng)用ip地址,:80是你要穿透應(yīng)用的本地端口號(hào)。
二、停止穿透
在不關(guān)機(jī)玩客云的情況下停止穿透的可能性很小,但是保不齊用得到。所以這里就簡(jiǎn)單的說(shuō)下怎么樣停止后臺(tái)運(yùn)行的穿透進(jìn)程,這里需要認(rèn)識(shí)兩個(gè)命令:
# 查看當(dāng)前后臺(tái)運(yùn)行的命令
# 有兩個(gè)命令可以用,jobs和ps,區(qū)別是jobs用于查看當(dāng)前終端后臺(tái)運(yùn)行的任務(wù),換了終端就看不到了。而ps命令用于查看瞬間進(jìn)程的動(dòng)態(tài),可以看到別的終端運(yùn)行的后臺(tái)進(jìn)程。
# 1.jobs命令可以查看當(dāng)前終端中運(yùn)行的程序,如果你運(yùn)行程序后關(guān)閉終端在重新開(kāi)啟終端jobs就查看不到了。
# 這里我們把jobs命令搭配-l使用可顯示當(dāng)前終端所有任務(wù)的PID,例如終端輸入命令jobs -l 顯示如下:
[7]+ 11807 Running nohup /root/linux_arm/ding -config=/root/linux_arm/ding.cfg -log=stdout -log-level=INFO -proto=http -subdomain=tv 80 > /root/linux_arm/1.txt 2> 1 & (wd: /)
root@wky:~/linux_arm#
# 這里的11807是這個(gè)任務(wù)的PID,Running表示 進(jìn)程在運(yùn)行中,在后面跟的就是進(jìn)程的命令。可以很清楚的看到這個(gè)進(jìn)程就是穿透進(jìn)程。
# 我們可以使用kill -pid命令,例如:kill 11807 結(jié)束這個(gè)進(jìn)程,如下:
root@wky:~/linux_arm# kill 11807
root@wky:~/linux_arm# jobs -l
[7]+ 11807 Terminated nohup /root/linux_arm/ding -config=/root/linux_arm/ding.cfg -log=stdout -log-level=INFO -proto=http -subdomain=tv 80 > /root/linux_arm/1.txt 2> 1 (wd: /)
root@wky:~/linux_arm#
# 可以看到 11807后面的Running 變成了 Terminated(終止),表示這個(gè)進(jìn)程被終止了,也就是說(shuō)現(xiàn)在穿透實(shí)效了或者說(shuō)穿透關(guān)閉了。
# 2 .ps命令查看當(dāng)前的所有進(jìn)程,簡(jiǎn)單來(lái)說(shuō)當(dāng)jobs查看不到你想要找的進(jìn)程的時(shí)候可以使用這個(gè)命令。
# ps -ef來(lái)查看進(jìn)程,這里跟jobs很像就不演示了。