frp內(nèi)網(wǎng)穿透

文章發(fā)布地址:https://blog.qiuluo.xin/2019/06/07/frp%E5%86%85%E7%BD%91%E7%A9%BF%E9%80%8F/

1 背景

1.1 正常情況一個(gè)內(nèi)網(wǎng)主機(jī)與外網(wǎng)服務(wù)器的交互

以訪問(wèn)google為例符糊。

假設(shè)我們的主機(jī)IP是192.168.0.0倍阐,路由器LAN IP為192.168.0.1机久,WAN IP為211.22.145.234(這是一個(gè)公網(wǎng)IP),google 服務(wù)器 IP 為74.125.204.101黎比。

  1. 主機(jī)構(gòu)建HTTP請(qǐng)求數(shù)據(jù)包,目標(biāo)IP為74.125.204.101,目標(biāo)端口是80/443,源IP為192.168.0.0,源端口隨機(jī)生成比搭,假定為5000
  2. 主機(jī)檢查目標(biāo)IP地址,發(fā)現(xiàn)不在一個(gè)網(wǎng)段南誊,數(shù)據(jù)包丟給默認(rèn)網(wǎng)關(guān)192.168.0.1
  3. 路由器LAN口收到數(shù)據(jù)包身诺,構(gòu)建NAT映射,隨機(jī)生成端口弟疆,假定為5500,這樣映射就是:5500->192.168.0.0:5000.WIN口收到的數(shù)據(jù)包戚长,如果目標(biāo)端口是5500,則會(huì)轉(zhuǎn)發(fā)給192.168.0.0的5000端口。
  4. 路由器修改數(shù)據(jù)包的源端口為5500,源IP地址為211.22.145.234怠苔,使用WAN口將數(shù)據(jù)包發(fā)出去
  5. google服務(wù)器收到請(qǐng)求同廉,構(gòu)建響應(yīng)HTTP數(shù)據(jù)包,目標(biāo)IP地址為211.22.145.234,目標(biāo)端口是5500
  6. 路由器WAN口收到數(shù)據(jù)包柑司,目標(biāo)端口是5500,查詢NAT表迫肖,發(fā)現(xiàn)對(duì)應(yīng)的機(jī)器是192.168.0.0:5000,所以修改目標(biāo)IP為192.168.0.0攒驰,目標(biāo)端口為5000蟆湖,并通過(guò)LAN口發(fā)送給主機(jī)
  7. 主機(jī)收到數(shù)據(jù)包,完成一次通信

1.2 內(nèi)網(wǎng)穿透實(shí)現(xiàn)

測(cè)試服務(wù)器沒(méi)有公網(wǎng)IP玻粪,想要讓外網(wǎng)直接調(diào)用內(nèi)網(wǎng)的服務(wù)隅津,就需要用到內(nèi)網(wǎng)穿透。

和使用路由器與外網(wǎng)交互類似劲室,需要有一個(gè)第三方擁有公網(wǎng)IP的服務(wù)器進(jìn)行路由的中轉(zhuǎn)伦仍,代替路由器的角色。

由內(nèi)網(wǎng)服務(wù)器主動(dòng)請(qǐng)求公網(wǎng)服務(wù)器很洋,建立一個(gè)長(zhǎng)連接充蓝,這時(shí)公網(wǎng)服務(wù)器就可以隨時(shí)隨地的向內(nèi)網(wǎng)服務(wù)器發(fā)送消息了。

當(dāng)使用瀏覽器想要訪問(wèn)內(nèi)網(wǎng)服務(wù)時(shí)喉磁,先將請(qǐng)求發(fā)送到公網(wǎng)服務(wù)器上谓苟,公網(wǎng)服務(wù)器再通過(guò)之前建立的長(zhǎng)連接將請(qǐng)求發(fā)送到內(nèi)網(wǎng)服務(wù)器中。從而實(shí)現(xiàn)在外網(wǎng)請(qǐng)求內(nèi)網(wǎng)服務(wù)的需求协怒。

2 服務(wù)搭建

2.1 公網(wǎng)服務(wù)搭建

2.1.1 下載工具

通過(guò)下面的鏈接下載frp上傳到服務(wù)器涝焙。

https://github.com/fatedier/frp/releases/download/v0.14.1/frp_0.14.1_linux_amd64.tar.gz

或直接使用wget下載

wget https://github.com/fatedier/frp/releases/download/v0.14.1/frp_0.14.1_linux_amd64.tar.gz

解壓

sudo tar zxf frp_0.14.1_linux_amd64.tar.gz

2.1.2 修改配置

cd frp_0.14.1_linux_amd64/
sudo vim frps.ini

內(nèi)容如下:

[common]
bind_port = 8989        # frp服務(wù)的端口
vhost_http_port = 8889  # frp的http服務(wù)的端口

2.1.3 啟動(dòng)服務(wù)

兩種啟動(dòng)方式使用一種即可

./frps -c frps.ini      # 前臺(tái)直接啟動(dòng),測(cè)試看日志方便
nohup ./frps -c ./frps.ini > /dev/null 2>&1 &   # 后臺(tái)運(yùn)行

2.2 內(nèi)網(wǎng)服務(wù)搭建

2.2.1 下載工具

與公網(wǎng)服務(wù)器下載同樣的文件斤讥,通過(guò)下面的鏈接下載frp上傳到服務(wù)器纱皆。

https://github.com/fatedier/frp/releases/download/v0.14.1/frp_0.14.1_linux_amd64.tar.gz

或直接使用wget下載

wget https://github.com/fatedier/frp/releases/download/v0.14.1/frp_0.14.1_linux_amd64.tar.gz

解壓

sudo tar zxf frp_0.14.1_linux_amd64.tar.gz

2.2.2 修改配置

cd frp_0.14.1_linux_amd64/
sudo vim frpc.ini

內(nèi)容如下:

[common]
server_addr = 47.95.199.112     # 公網(wǎng)服務(wù)器IP
server_port = 8989              # 公網(wǎng)服務(wù)器的bind_port

[ssh]
type = tcp                      # 協(xié)議格式
local_ip = 127.0.0.1
local_port = 22                 # 本地ssh服務(wù)端口
remote_port = 7878              # 遠(yuǎn)程連接時(shí)使用的端口

[web]
type = http                     # 協(xié)議格式
local_ip = 127.0.0.1
local_port = 7006               # 本地服務(wù)端口
custom_domains = frp.qiuluo.xin # 域名

2.1.3 啟動(dòng)服務(wù)

兩種啟動(dòng)方式使用一種即可

./frpc -c ./frpc.ini    # 前臺(tái)直接啟動(dòng)湾趾,測(cè)試看日志方便
nohup ./frpc -c ./frpc.ini > /dev/null 2>&1 & # 后臺(tái)運(yùn)行

3 測(cè)試

3.1 ssh

配置了ssh芭商,所以可以在遠(yuǎn)程連接本地服務(wù)器

使用下面的命令遠(yuǎn)程進(jìn)行連接派草,成功的話輸入密碼即可進(jìn)入系統(tǒng)。

ssh 用戶名@IP或域名 -p 之前配置的remote_port端口號(hào)
例:ssh wenjijie@47.95.199.112 -p 7878

3.2 http

在內(nèi)網(wǎng)服務(wù)器啟動(dòng)一個(gè)http服務(wù)铛楣,這里使用一個(gè)7006端口的后端服務(wù)近迁。

在瀏覽器使用之前配置的域名和端口進(jìn)行訪問(wèn)

http://frp.qiuluo.xin:8889/

頁(yè)面成功顯示內(nèi)網(wǎng)服務(wù)返回的內(nèi)容。

4 nginx映射

現(xiàn)在已經(jīng)實(shí)現(xiàn)了內(nèi)網(wǎng)映射簸州,但是需要在域名后增加端口號(hào)鉴竭,不符合日常需求。

4.1 公網(wǎng)服務(wù)器上岸浑,使用nginx進(jìn)行映射搏存。

sudo vim /etc/nginx/nginx.conf

增加如下server

server {
    listen 80;
    server_name frp.qiuluo.xin;

    location / {
            proxy_pass http://127.0.0.1:8889/;
    }
}

4.2 修改內(nèi)網(wǎng)服務(wù)器配置

但是轉(zhuǎn)發(fā)后frp收到的域名不再是frp.qiuluo.xin,所以需要在內(nèi)網(wǎng)frp配置文件custom_domains后增加127.0.0.1

修改后的配置文件

[common]
server_addr = 47.95.199.112
server_port = 8989

[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 7878

[web]
type = http
local_ip = 127.0.0.1
local_port = 7006
custom_domains = frp.qiuluo.xin,127.0.0.1

5 完成

重啟frp客戶端服務(wù)矢洲。

重新使用瀏覽器去掉端口后訪問(wèn)璧眠,發(fā)現(xiàn)可以拿到內(nèi)網(wǎng)服務(wù)的內(nèi)容,frp內(nèi)網(wǎng)穿透搭建完成读虏。

以后在內(nèi)網(wǎng)每新增一個(gè)服務(wù)(使用一個(gè)新的端口)责静,都需要修改frp配置進(jìn)行公網(wǎng)服務(wù)器和內(nèi)網(wǎng)服務(wù)器的端口映射。

6 參考

https://blog.csdn.net/lishanleilixin/article/details/78384848

http://www.reibang.com/p/b60795a3c9fc

https://www.imooc.com/article/72503

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末盖桥,一起剝皮案震驚了整個(gè)濱河市灾螃,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌揩徊,老刑警劉巖腰鬼,帶你破解...
    沈念sama閱讀 222,252評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異塑荒,居然都是意外死亡熄赡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門袜炕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)本谜,“玉大人,你說(shuō)我怎么就攤上這事偎窘∥谥” “怎么了?”我有些...
    開封第一講書人閱讀 168,814評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵陌知,是天一觀的道長(zhǎng)他托。 經(jīng)常有香客問(wèn)我,道長(zhǎng)仆葡,這世上最難降的妖魔是什么赏参? 我笑而不...
    開封第一講書人閱讀 59,869評(píng)論 1 299
  • 正文 為了忘掉前任志笼,我火速辦了婚禮,結(jié)果婚禮上把篓,老公的妹妹穿的比我還像新娘纫溃。我一直安慰自己,他們只是感情好韧掩,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,888評(píng)論 6 398
  • 文/花漫 我一把揭開白布紊浩。 她就那樣靜靜地躺著,像睡著了一般疗锐。 火紅的嫁衣襯著肌膚如雪坊谁。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,475評(píng)論 1 312
  • 那天滑臊,我揣著相機(jī)與錄音口芍,去河邊找鬼。 笑死雇卷,一個(gè)胖子當(dāng)著我的面吹牛鬓椭,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播聋庵,決...
    沈念sama閱讀 41,010評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼膘融,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了祭玉?” 一聲冷哼從身側(cè)響起氧映,我...
    開封第一講書人閱讀 39,924評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎脱货,沒(méi)想到半個(gè)月后岛都,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,469評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡振峻,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,552評(píng)論 3 342
  • 正文 我和宋清朗相戀三年臼疫,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片扣孟。...
    茶點(diǎn)故事閱讀 40,680評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡烫堤,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出凤价,到底是詐尸還是另有隱情鸽斟,我是刑警寧澤,帶...
    沈念sama閱讀 36,362評(píng)論 5 351
  • 正文 年R本政府宣布利诺,位于F島的核電站富蓄,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏慢逾。R本人自食惡果不足惜立倍,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,037評(píng)論 3 335
  • 文/蒙蒙 一灭红、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧口注,春花似錦变擒、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,519評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)葛躏。三九已至澈段,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間舰攒,已是汗流浹背败富。 一陣腳步聲響...
    開封第一講書人閱讀 33,621評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留摩窃,地道東北人兽叮。 一個(gè)月前我還...
    沈念sama閱讀 49,099評(píng)論 3 378
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像猾愿,于是被迫代替她去往敵國(guó)和親鹦聪。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,691評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容