基于腾讯云的云服务器和frp实现内网穿透

基于腾讯云的云服务器和frp实现内网穿透

放假在家,无法使用实验室的GPU服务器进行炼丹,因为GPU服务器处于校园网的内网环境下,而在校园网外网络环境下,无法直接ssh登录校园网内的机器,因此需要内网穿透。
本文大量参考了以下几篇博客和帖子(尤其是第一篇,写的特别好,本文的基本流程也与该篇帖子的行文顺序基本一致,侵删),记录主要的配置流程,并记录踩过的坑。

1.参考文献

以下为frp的基本配置参数说明:

2.所需设备

(1)具有公网ip的云服务器,本人选的是腾讯云的轻量应用服务器,比较便宜(但最近涨价很猛)。
(2)frp软件,官网地址:https://github.com/fatedier/frp

3.具体流程

下面将按照文献[1]的结构,记录主要流程。

3.1 准备一台公网ip云服务器

(1)打开云服务器安全组相关端口
登陆自己的腾讯云账号,进入安全组相关端口页面,路径:服务器->防火墙->添加规则
云服务器安全组相关端口设置

如图所示,添加2个端口,7000和6000,后续会用到。

(2)打开防火墙
打开云服务器的防火墙对应的端口。注意,需要打开22端口,否则无法ssh登录到云服务器。

# 启用
sudo ufw enable

# 开放端口
sudo ufw allow 7000
sudo ufw allow 6000
sudo ufw allow 22
sudo ufw allow 80
sudo ufw allow 443
sudo ufw allow 3389

# 查看状态
sudo ufw status

3.2 配置公网云服务器

(1)将frp软件下载、解压到到公网服务器,可以放在任何目录下。
(2)配置fprs:frp服务端
配置frps.ini文件,其默认设置如下(这里不进行更改):

[common]
bind_port = 7000 # frp服务端接受客户端连接的端口,可以自己设置,但安全组端口和防火墙要进行相应的设置

3.3 配置内网GPU服务器

(1)将frp软件下载、解压到到内网GPU服务器,可以放在任何目录下。
(2)配置frpc:frp客户端
需要配置frpc.ini文件,如下:

[common]
server_addr = x.x.x.x   # 云服务器的公网ip
server_port = 7000      # 和云服务器连接的端口

[ssh1] # 这里是client的一个别名,命名为ssh1以和其他client区分
type = tcp  # TCP 类型的代理,实现内网穿透

local_ip = 127.0.0.1
local_port = 22     # local_ip 和 local_port 配置为本地需要暴露到公网的服务地址和端口。ssh服务通常监听在 22 端口
remote_port = 6000 # 公网服务器的端口,表示frp服务端监听的端口,访问此端口的流量将会被转发到本地服务对应的端口。可以任意设置,但安全组端口和防火墙也要进行相应的设置

注意,可以用一台云服务器,穿透多台内网机器,第二台机器的frpc.ini文件设置如下:

[common]
server_addr = x.x.x.x   # 云服务器的公网ip
server_port = 7000      # 云服务器开放的端口

[ssh2] # client的一个别名,命名为ssh2以和其他client区分
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6001

即不同内网机器的frpc.ini中,只有remote_port和client别名(比如[ssh1]、[ssh2])不同,其它都一样。

3.4 分别启动内网机器和公网服务器的FRP

(1)启动公网服务器fprs服务端
打开terminal,输入如下命令,在后台运行frps服务端:

nohup ./frps -c ./frps.ini &

然后按control-c退出即可。可以使用jobs命令查看后台是否有运行。如果没有,则运行./frps -c ./frps.ini, 如果显示端口被占用,则参考https://www.jianshu.com/p/b672b4ab5519, 使用netstat -tanlp命令找到对应的进程并kill掉,然后重新在后台启动

(2)启动内网服务器fprc客户端
打开terminal,输入如下命令:

nohup ./frpc -c ./frpc.ini &

3.5 ssh登录服务器

有以下两种方法:

(1) ssh –p 6000 [内网机用户名]@[云服务器公网ip]  
(2) ssh -oPort=6000 [内网机用户名]@[云服务器公网ip]  

密码是内网机的密码。frp 会将请求 [云服务器公网ip]:6000 的流量转发到内网机器的 22 端口。

3.6 文件传输

scp -r -P 6000 ./文件 [内网机用户名]@[云服务器公网ip]:/home/

即,需要指定端口,注意: P为大写字母, ssh登陆时为小写字母

4. frp工作原理

(1) frp服务端运行,监听一个主端口7000,等待frp客户端的连接;
(2) 客户端运行,连接到服务端的主端口7000,同时告诉服务端要监听的端口6000和转发类型tcp;
(3) 服务端fork新的进程监听客户端指定的端口6000;
(4) 外网用户连接到客户端指定的服务端的端口6000,服务端通过和客户端的连接将数据转发到客户端;
(5) frp客户端进程再将数据转发到本地服务(即内网机器),从而实现内网对外暴露服务的能力。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值