日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

内网穿透配置(FRP)

發布時間:2024/3/13 编程问答 56 豆豆
生活随笔 收集整理的這篇文章主要介紹了 内网穿透配置(FRP) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

0、內網穿透的一般場景

1、內網穿透配置

a、frp軟件下載

b、frp 的配置

3、通過 frp 實現遠程連接

4、設置 frpc / frps 開機啟動的方法

5、設置frp安全連接的方法


0、內網穿透的一般場景

放假回家怎么遠程連接學校實驗室的服務器?

先分析一波:首先家里的電腦與學校服務器主機分屬不同的局域網內網)中,也就是說家里網絡設備上層的公網IP不同于學校服務器上層的公網IP,因此這種情況下就不能僅僅使用 SSH 來遠程連接學校的服務器了,還需要借助一種叫做內網穿透的技術實現連接。如下面這幅圖。

公網的IP是獨一無二的,而局域網IP在從屬不同公網的前提下可以是一樣的,

內網穿透需要第三臺電腦作為中轉站,這個中轉站需要有一個公網IP,一般來說可以用云服務器(一般都有公網IP)來作為中轉站,可以租用阿里云騰訊云華為云這些平臺中的云服務器。

1、內網穿透配置

使用的系統:云服務器(中轉站)和實驗室服務器(需要向公網暴露IP的本地主機)都是Ubuntu,個人電腦是Windows10.

a、frp軟件下載

這里使用的內網穿透的工具是 FRP,GitHub地址:https://github.com/fatedier/frp。下載壓縮包解壓之后會看到下面的內容。這里以Windows版的為例,frp?含有 frps 和 frpc?兩種配置文件,frps 是內網穿透服務端service(也就是中轉站)的配置文件,作為內網穿透的橋梁。frpc 是內網穿透中需要向公網暴露IP的本地主機(也就是示例場景中的實驗室服務器)。

b、frp 的配置

云服務器(后面稱做A)作為內網穿透的橋梁,是內網穿透的服務端,需要使用?frps。實驗室服務器(后面稱做B)屬于內網穿透中的服務端client,需要使用?frpc。可以通過分別修改?frps.ini?和?frpc.ini?來配置服務端和客戶端。

A?中需要配置 frps.ini,這個文件原始內容如下:

[common] bind_port = 7000

保持默認參數即可。如果想配置其他內容,可以查看 frps_full.ini 文件的內容,里面有全部的配置語句。bind_port 表示將 B 與 A 的 7000 端口綁定,具體的端口號可以自定義修改。如果想配置其他內容,可以查看frps_full.ini文件的內容,里面有全部的配置語句。例如可以加一行 token=xxxx,類似于密鑰,需兩邊都一樣才能訪問:

[common] bind_port = 7000 # 可以加一行 token=xxxx,類似于密碼,需兩邊都對上才能訪問,此時客戶端也需要有同樣的設置 token=12345

主機 B?需要配置 frpc.ini,這個文件原始內容如下:

[common] # server_addr需要改成公網IP地址 server_addr = x.x.x.x server_port = 7000 # 如前所述,可以加一行 token=xxxx,類似于密匙-密鑰對,需兩邊都一樣才能訪問 token=12345 [ssh] type = tcp local_ip = 127.0.0.1 local_port = 22 # 這個端口可以自由設置,設置完后在云服務器中開啟相應的端口即可 remote_port = 6000

server_addr 參數修改為公網IP,server_port?用于frps與frpc之間交換數據的端口,local_port?是ssh服務端口,remote_port?是在frp服務器上公開的供外部設備連接的端口,6000 與 7000 端口的作用可以參照博客開頭的那張圖。接下來需要在云服務器的端口管理中添加相應的端口 6000 和 7000 并開放即可。比如我用的阿里云服務器,是在“服務器安全設置”選項中添加端口的:

3、通過 frp 實現遠程連接

在上述配置都修改完成后,,在云服務器 A 上執行以下指令運行frps端:

./frps -c ./frps.ini

在本地服務器 B 上執行以下指令運行 frpc 端:

./frpc -c ./frpc.ini

然后本地主機就可以使用內網穿透來遠程訪問本地服務器了,在本地主機上執行以下指令:

ssh [username]@[ip] -p [port_num]
  • 其中:
  • username 是 B 中的用戶名,后面需要輸入的密碼也是該賬戶的密碼。
  • ip 是 A 的公網 ip 地址。這里注意!是 A 的公網 ip 地址,不是 B 的!
  • port_num 是 frpc.ini 中設置的?remote_port 。

例如,要連接 實驗室服務器(B)中的名為 abc 的用戶,中轉賬云服務器的公網ip為123.0.0.3,remote_port 設置為 6000,則指令如下:

ssh abc@123.0.0.3 -p 6000

同樣也可以借助?VSCode 中的?Remote-SSH 插件,方便遠程連接后的文件管理,方法可以看這篇博客 :SSH遠程連接實例_地球被支點撬走啦的博客-CSDN博客_ssh連接實例

4、設置 frpc / frps 開機啟動的方法

如果想讓遠程服務器 B 與本地服務器 A 開機自動啟動 frps 和 frpc 這兩個服務,就需要用到 systemd 文件夾中的文件了。內容如下:

Linux 系統下的開機啟動需要使用 frps.service frpc.service 這兩個文件,將這兩個文件分別拷貝到對應機器的 /lib/systemd/system 文件夾下。需要修改其中的 User?字段,改為當前主機用戶的用戶名,還需要修改 ExecStart?字段,把其中的 frps/frps?的路徑改成你實際 frpc/frpc?所在的絕對路徑。

在云服務器主機?A 中修改如下:

這里運行 frps 的云服務器的用戶名為 admin,frps 的路徑為 /home/admin/frp/frps,因此將原始的

frps.service 中的: [Unit] Description=Frp Server Service After=network.target[Service] Type=simple User=nobody Restart=on-failure RestartSec=5s ExecStart=/usr/bin/frps -c /etc/frp/frps.ini LimitNOFILE=1048576[Install] WantedBy=multi-user.target ExecStart=/usr/bin/frps -c /etc/frp/frps.ini

改為:

[Unit] Description=Frp Server Service After=network.target[Service] Type=simple User=admin Restart=on-failure RestartSec=5s ExecStart=/home/admin/frp/frps -c /home/admin/frp/frps.ini LimitNOFILE=1048576[Install] WantedBy=multi-user.target ExecStart=/usr/bin/frps -c /etc/frp/frps.ini

?然后運行 frpc 的本地服務器 B 中也是類似的設置:

[Unit] Description=Frp Client Service After=network.target[Service] Type=simple User=nobody Restart=on-failure RestartSec=5s ExecStart=/usr/bin/frpc -c /etc/frp/frpc.ini ExecReload=/usr/bin/frpc reload -c /etc/frp/frpc.ini LimitNOFILE=1048576[Install] WantedBy=multi-user.target# 改為:====================================================[Unit] Description=Frp Client Service After=network.target[Service] Type=simple User=ocean Restart=on-failure RestartSec=5s ExecStart=/home/pathto/frp/frpc -c /home/pathto/frp/frpc.ini ExecReload=/home/pathto/frp/frpc reload -c /home/pathto/frp/frpc.ini LimitNOFILE=1048576[Install] WantedBy=multi-user.target

然后在 B 中依次執行以下四條指令啟動 service 服務,實現開機啟動:

systemctl daemon-reload # 重新加載 systemctl enable frpc.service # 使能開機啟動 systemctl start frpc.service # 開啟服務 systemctl status frpc.service # 查看服務狀態

如果開啟成功,則會顯示如下界面 Activate 會顯示綠色的 running。

云服務器 A 中的開機啟動方式也是類似的,就不再贅述了。

5、設置frp安全連接的方法

如果直接將服務器暴露到公網上可能會有安全隱患,如果別人知道了公網中轉站的 ip 和轉接端口,就相當于知道了內網服務器的 ssh 端口,如果知道密碼的話就可以隨意登陸了。因此,登陸密碼可以復雜一些以保證安全。另外一點,可以使用安全ssh登錄,這個是官網的方法GitHub - fatedier/frp: A fast reverse proxy to help you expose a local server behind a NAT or firewall to the internet.A fast reverse proxy to help you expose a local server behind a NAT or firewall to the internet. - GitHub - fatedier/frp: A fast reverse proxy to help you expose a local server behind a NAT or firewall to the internet.https://github.com/fatedier/frp#expose-your-service-privately

frp 服務端主機 A 的 frps.ini 不需要修改,這要修改 frp 客戶端主機 B 的 frpc.ini 的配置,這里移除了?remote_port 的設置。

[common] server_addr = x.x.x.x server_port = 7000 token = 12345 [secret_ssh] # secret tcp type = stcp # security key,只有 sk 一致的用戶才能訪問到此服務 sk = abcdefg # 向外部暴露的本地SSH服務端口 local_ip = 127.0.0.1 local_port = 22

另外,需要遠程連接內網服務器的個人PC也需要運行 frpc,此時 frpc.ini 的配置為:

[common] server_addr = x.x.x.x server_port = 7000 token = 12345 [secret_ssh_visitor] type = stcp role = visitor server_name = secret_ssh # secret key,必須與目標主機的 frpc.ini 中的 sk 一樣 sk = abcdefg # 綁定本地端口用于訪問 SSH 服務 bind_addr = 127.0.0.1 bind_port = 6000

使用安全連接的情況下,在遠程連接時,需要先在個人電腦上(這里是Windows)運行以下命令:

frpc.exe -c frpc.ini

然后再執行ssh命令實現遠程連接

ssh [username]@127.0.0.1 -p [port_num]

總結

以上是生活随笔為你收集整理的内网穿透配置(FRP)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。