目录

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 来配置服务端和客户端。

中需要配置 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

主机 需要配置 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.servicefrpc.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)相关推荐

  1. 启动go服务_内网穿透工具 FRP公网服务端、内网客户端快速配置文件说明

    内网穿透工具 FRP 公网服务端.内网客户端 frps.ini .frpc.ini 配置文件常用设置展示及说明 公网服务端 frps.ini 配置文件常用设置 公网服务端配置文件:frps.ini [ ...

  2. 内网穿透-利用frp进行远程桌面控制(window服务端,window客户端)

    内网穿透-利用frp进行远程桌面控制(window服务端,window客户端) 参考链接 https://blog.csdn.net/weixin_38416696/article/details/1 ...

  3. 中秋征文 | 【云原生之Docker】使用docker部署内网穿透工具FRP

    中秋征文 | [云原生之Docker]使用docker部署内网穿透工具FRP 一.卷首语 二.FRP介绍 1.frp简介 2.frp支持的系统 3.本次frp部署目的 三.检查本地docker状态 1 ...

  4. 一款很好用的内网穿透工具--FRP

    前言 对于没有公网 IP 的内网用户来说,远程管理或在外网访问内网机器上的服务是一个问题. 今天给大家介绍一款好用内网穿透工具 FRP,FRP 全名:Fast Reverse Proxy.FRP 是一 ...

  5. 记frp内网穿透配置

    这两天由于想给客户看一下我们的系统,于是想到用内网穿透,但是怎么办呢,没有用过呀,于是各处找资料,但是搞完以后已经不记得参考了那些文档了,对不起各位大神,就只能写出过程和要被自己蠢死的错误了,以免下次 ...

  6. frp 后台地址_FRP内网穿透配置教程及配置分享

    前言 随着全球IPv4地址耗尽,新装电信宽带一般也只给分配内网IP,不开放外网IP了,但是随时智能设备的越来越普及,像电脑.NAS.树莓派.摄像头等网络设备需要远程控制时较为麻烦,幸好有大佬开发了这款 ...

  7. 架设游戏私服——内网穿透工具frp

    架设游戏私服--内网穿透frp 1. 服务端 2. 客户端 3. exe消失之谜 适用场景: 拥有一台云服务器服务商提供的拥有公网ip的低配服务器. 拥有一台高配家用机,但是位于动态ip的家庭网络甚至 ...

  8. 自建内网穿透之frp

    准备需求:一台公网服务器(VPS) 要求:开启6000,7000两个端口 前往GitHub下载对应文件 链接地址:https://github.com/fatedier/frp/releases 步骤 ...

  9. 内网穿透工具---frp使用教程

    前言 最近在研究内网渗透的一些东西,碰到了需要内网穿透的情况,使用了几款工具后,就来总结一下啦. 介绍frp frp 是一个可用于内网穿透的高性能的反向代理应用,支持 tcp, udp, http, ...

最新文章

  1. 进入临界有什么用?STM32单片机怎么实现?
  2. $cfg_dbtype = mysql_多库操作2:终于实现多个数据库操作
  3. 请大家访问另一个我的博客!
  4. LeetCode 1538. Guess the Majority in a Hidden Array
  5. silverlight动态创建WCF服务
  6. 程序员漫画:影响程序员一生的书单
  7. 深圳杯2020数学建模C题 遗传算法
  8. 两个文件定义了同名的变量,会是同一个变量吗?
  9. 78M05-ASEMI三端正线性稳压器78M05
  10. 一个屌丝程序猿的人生(四十)
  11. waterfall.js
  12. vue不具名插槽与具名插槽
  13. Weblogic11g 在linux安装详解
  14. 做好SEO必备的三步骤
  15. 电脑双网卡共享给其他电脑上网的方法
  16. yjv是电缆还是电线_YJV电缆与YJY电缆哪个价格高,两者的区别是什么?
  17. 我的2013,成功当选微软最有价值专家
  18. 利用sql语句删除重复数据
  19. tableau 如何选择tableau计算类型?基本计算 / LOD计算 / 表计算
  20. 2022AP微积分BC北美卷FRQ已放出,附考情分析

热门文章

  1. 在阿里云ECS上搭建Skynet服务器与Unity通信
  2. 小程序战局最新动态!这些你应该知道
  3. 【转载】IntelliJ IDEA 完美破解(2099年到期)
  4. frp客户端进行windows远程桌面连接
  5. laravel从入门到精通之 php excel设置单元格边框只显示竖条
  6. css页面一些动态效果展示
  7. cf英文名字格式好看的_cf好看的英文名字格式
  8. Android攻城狮fragment
  9. 移动端实现图标拖拽效果
  10. 计算机考研 东华大学,2017考研:计算机科学与技术专业考研院校推荐之东华大学...