一、為什么進行內網穿透?
1、什么叫內網穿透?
首先我們對內網和外網這兩個名詞做個解釋:
內網:是內部建立的局域網絡或辦公網絡,例如家庭內部網絡,公司內部網絡;
外網:簡單來說就是隨時隨地可以訪問的網絡,例如互聯網。
內網穿透簡單來說就是將內網外網通過隧道打通,讓內網的數據外網可以獲取。比如常用的辦公室軟件等,一般在辦公室應用,通過撥號上網,沒有公網IP,這樣辦公軟件只有在辦公室本地的局域網之內才能訪問,用了內網穿透方案后,這些基于內網訪問的辦公室軟件就可以在外網家里訪問了。
2、哪些情況需要內網穿透?
當我們想把內網的一些資源暴露在公網上時,可以使用內網穿透功能。比如公司的內網服務器,部署了平時需要開發的項目,但是回到家中無法訪問,就可以使用內網穿透,將公司內網的接口映射到一臺公網的服務器上,用這臺公網服務器做轉發即可實現在家中也能外網訪問。
(1)企業遠程辦公,遠程訪問OA系統,以及其他辦公軟件。
(2)開發人員遠程調試,遠程訪問內網服務器,數據庫等。
(3)文件遠程共享
二、如何進行內網穿透?
1、Frp工具介紹
frp 是一個可用于內網穿透的高性能的反向代理應用,支持 tcp, udp, http, https 協議.
2、如何安裝配置Frp?
(1)準備工作:想要實現內網穿透功能首先我們需要準備:
·一臺公網服務器(用作frp的服務端),這里我是用的是阿里云免費試用版本Linux服務器。
·一臺需要做轉發的內網服務器(用作frp的客戶端)也就是我們經常要訪問的那臺內網服務器。
·自己的一個個人電腦,且個人電腦中已經安裝了一些支持Linux系統遠程(ssh)連接的工具例如(Xshell)。
frp的服務端
8.138.*.*(這是我的阿里云服務器公網IP)
具備公網IP
frp的客戶端
192.162.130.111
公司內網IP
個人電腦
192.168.1.2
家庭WiFi網絡
(2)frp的服務端安裝配置
下載frp安裝包:
我們選擇對應操作系統的安裝包,我這里云服務器系統為CentOS7,可以輸入命令查看服務器架構版本,所以我選擇下載對應的Linux版本安裝包。
x86_64 直接下載 frp_0.51..tar.gz 后綴為 amd64 這個版本即可??梢允謩酉螺d到本地,然后通過Xshell傳到服務器,也可以直接在外網服務器上下載。
在服務器上/user/local目錄下創建frp目錄
cd /usr/local/frp
進入到創建的frp目錄直接執行一下在線下載命令
wget https://github.com/fatedier/frp/releases/download/v0.51.3/frp_0.51.3_linux_amd64.tar.gz
等待下載完成。
下載完成后再解壓到當前目錄就行,輸入命令:
tar -zxvf frp_0.51.3_linux_amd64.tar.gz
#解壓完成后cd進入目錄:
cd frp_0.42.0_linux_amd64
查看當前目錄下的文件,其中作為服務端,我們只需要關注 frps 和 frps.ini 文件。我這里已經把frpc 和 frpc.ini 文件刪了。
進行服務端frp的配置:
vim frps.ini
默認只有一個端口設置。一般沒有特殊需求無需修改。也可以增加一些簡單配置
[common]
bind_port = 7000
dashboard_port = 7501
dashboard_user = root
dashboard_pwd = root@123
token = frp@123
客戶端和服務端連接的端口,在配置客戶端的時候要用到。
服務端可視化界面的端口,若使用7501端口,在配置完成服務啟動后可以通過瀏覽器訪問 x.x.x.x:7501。
打開服務端可視化界面的用戶名,可自行設置。
打開服務端可視化界面的密碼,可自行設置。
token
用于客戶端和服務端連接的口令,可以自行設置,不用和我保持一樣,但需要記住,配置客戶端的時候會用到。
配置完成后進行frps啟動:
前臺啟動,在當前目錄執行:
./frps -c frps.ini,#退出后程序也隨即退出。
#后臺啟動,在當前目錄執行:
nohup ./frps -c ./frps.ini &
#啟動后通過以下命令查看是否啟動成功:
ps aux | grep frp
但是大多數情況下我們希望服務端程序能夠開機自啟動不需要每次手動啟動。所以需要將程序啟動加入到系統服務中。具體如何設置這里不再贅述直接將啟動腳本貼上;
[Unit]
Description=FRP
After=frps.service
[Service]
Type=simple
ExecStart=/usr/local/frp/frp_0.51.3_linux_amd64/frps -c /usr/local/frp/frp_0.51.3_linux_amd64/frps.ini
KillSignal=SIGQUIT
TimeoutStopSec=5
KillMode=process
PrivateTmp=true
StandardOutput=syslog
StandardError=inherit
[Install]
WantedBy=multi-user.target
(3)frp的客戶端安裝配置
前期的安裝包下載解壓與服務器端相同,首先刪掉frps、frps.ini兩個文件,然后再進行配置,
vi ./frpc.ini
[common]
server_addr = 8.138.*.* #公網服務器ip
server_port = 7000 #與服務端bind_port一致
#公網通過ssh訪問內部服務器
[ssh]
type = tcp #連接協議
local_ip = 192.162.130.111 #內網服務器ip
local_port = 22 #ssh默認端口號
remote_port = 6000 #自定義的訪問內部ssh端口號
配置完成后進行frpc啟動:
前臺啟動,在當前目錄執行:
./frpc -c frpc.ini #退出后程序也隨即退出。
后臺啟動,在當前目錄執行:
nohup ./frpc -c ./frpc.ini &
啟動后通過以下命令查看是否啟動成功:
ps aux | grep frp
也需要增加系統服務實現開機自啟動,具體操作配置參考frp服務器端。
注意?。。。河捎谖覀兪褂玫氖前⒗镌频姆掌?,服務器默認開啟的端口可能不包含我們使用的7000,6000,6001端口,因此我們需要在阿里云服務器上進行手動開放對應端口。
進入到阿里云服務控制臺,選擇網絡安全里的安全組,點擊管理規則進入到以下界面。
服務器只對流量進來的端口有限制,所以我們只需要在入的方向增加我們對應想要開啟的端口即可。
以上都結束以后便可以在私人筆記本上通過Xshell連接到公網服務器上,然后通過公網服務器便可以跳轉到內網服務器上了。
這里也需要注意;ssh 跳轉時要使用外網服務器的IP,同時指定使用 = 6000 端口。
輸入內網服務器的密碼,便可以遠程訪問了。
三、怎么實現本地工具通過穿透直連內網?
到這一步,我們只是實現了遠程ssh 訪問。更多情況下我們希望可以直接將私人筆記本中訪問流量轉發請求到內網服務器上。
這時候我們就需要使用另外一個工具了。
是一款功能非常強大的socks5客戶端,可以讓不支持通過代理服務器工作的網絡程序能通過HTTPS或SOCKS代理或代理鏈。支持Xp,Vista,Win7,支持socks4,socks5,http,https代理協議,支持TCP,UDP協議,可以指定端口,指定IP,指定程序等運行模式,兼容性非常好。
的下載安裝我這里就不再贅述,自行網上百度。
1、在使用前需要在內網服務器上開啟socks5端口6001。這個端口我們在前面阿里云服務器上也已經提前開啟了。下面只需要在客戶端frp服務器上增加對應的配置即可.
[plugin_socks5]
type = tcp
local_ip = 192.168.*.*
local_port = 6001
remote_port = 6001
plugin = socks5
plugin_user = abc
plugin_passwd?=?abc
增加好對應的協議配置以及端口后,需要重啟客戶端程序重新加載。
2、在上配置代理服務
增加代理服務器IP為阿里云公網IP,端口為在內網服務器frp客戶端上配置的6001,用戶名密碼在配置中已經配置了,直接填上就行。
配置好代理服務以后需要配置代理規則,在Action選項里選擇我們配置好的代理服務器。根據自己需要配置代理轉發規則,不清楚的自己百度。
以上都完成以后,我們便可以直接在自己連接在家庭WiFi上的筆記本上直連內網目標機器了。例如訪問內網服務器上的數據庫,我們可以在筆記本上數據庫連接軟件上直接輸入目標機器的內網IP端口就可以了。也可以在Xshell軟件上直接輸入目標IP,便可直接連接,方便快捷,不需要再先連接到阿里云服務器之后再通過ssh root@192.168.130.111連接了。
*請認真填寫需求信息,我們會在24小時內與您取得聯系。