内网穿透配置(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)相关推荐
- 启动go服务_内网穿透工具 FRP公网服务端、内网客户端快速配置文件说明
内网穿透工具 FRP 公网服务端.内网客户端 frps.ini .frpc.ini 配置文件常用设置展示及说明 公网服务端 frps.ini 配置文件常用设置 公网服务端配置文件:frps.ini [ ...
- 内网穿透-利用frp进行远程桌面控制(window服务端,window客户端)
内网穿透-利用frp进行远程桌面控制(window服务端,window客户端) 参考链接 https://blog.csdn.net/weixin_38416696/article/details/1 ...
- 中秋征文 | 【云原生之Docker】使用docker部署内网穿透工具FRP
中秋征文 | [云原生之Docker]使用docker部署内网穿透工具FRP 一.卷首语 二.FRP介绍 1.frp简介 2.frp支持的系统 3.本次frp部署目的 三.检查本地docker状态 1 ...
- 一款很好用的内网穿透工具--FRP
前言 对于没有公网 IP 的内网用户来说,远程管理或在外网访问内网机器上的服务是一个问题. 今天给大家介绍一款好用内网穿透工具 FRP,FRP 全名:Fast Reverse Proxy.FRP 是一 ...
- 记frp内网穿透配置
这两天由于想给客户看一下我们的系统,于是想到用内网穿透,但是怎么办呢,没有用过呀,于是各处找资料,但是搞完以后已经不记得参考了那些文档了,对不起各位大神,就只能写出过程和要被自己蠢死的错误了,以免下次 ...
- frp 后台地址_FRP内网穿透配置教程及配置分享
前言 随着全球IPv4地址耗尽,新装电信宽带一般也只给分配内网IP,不开放外网IP了,但是随时智能设备的越来越普及,像电脑.NAS.树莓派.摄像头等网络设备需要远程控制时较为麻烦,幸好有大佬开发了这款 ...
- 架设游戏私服——内网穿透工具frp
架设游戏私服--内网穿透frp 1. 服务端 2. 客户端 3. exe消失之谜 适用场景: 拥有一台云服务器服务商提供的拥有公网ip的低配服务器. 拥有一台高配家用机,但是位于动态ip的家庭网络甚至 ...
- 自建内网穿透之frp
准备需求:一台公网服务器(VPS) 要求:开启6000,7000两个端口 前往GitHub下载对应文件 链接地址:https://github.com/fatedier/frp/releases 步骤 ...
- 内网穿透工具---frp使用教程
前言 最近在研究内网渗透的一些东西,碰到了需要内网穿透的情况,使用了几款工具后,就来总结一下啦. 介绍frp frp 是一个可用于内网穿透的高性能的反向代理应用,支持 tcp, udp, http, ...
最新文章
- 进入临界有什么用?STM32单片机怎么实现?
- $cfg_dbtype = mysql_多库操作2:终于实现多个数据库操作
- 请大家访问另一个我的博客!
- LeetCode 1538. Guess the Majority in a Hidden Array
- silverlight动态创建WCF服务
- 程序员漫画:影响程序员一生的书单
- 深圳杯2020数学建模C题 遗传算法
- 两个文件定义了同名的变量,会是同一个变量吗?
- 78M05-ASEMI三端正线性稳压器78M05
- 一个屌丝程序猿的人生(四十)
- waterfall.js
- vue不具名插槽与具名插槽
- Weblogic11g 在linux安装详解
- 做好SEO必备的三步骤
- 电脑双网卡共享给其他电脑上网的方法
- yjv是电缆还是电线_YJV电缆与YJY电缆哪个价格高,两者的区别是什么?
- 我的2013,成功当选微软最有价值专家
- 利用sql语句删除重复数据
- tableau 如何选择tableau计算类型?基本计算 / LOD计算 / 表计算
- 2022AP微积分BC北美卷FRQ已放出,附考情分析