记一次使用frpc/frps进行内网穿透

1. 前提条件:

有一个公网ip,这里用x.x.x.x代替

2. 配置

【服务器端】
S_NUMBER是一个端口号

#服务端口
bind_port = S_NUMBER
#监听地址
bind_addr = 0.0.0.0
#认证token
token = xxxx

【客户端】(也就是需要被内网穿透的服务器)
C_NUMBER是一个端口号

[common]
#自己的公网地址
server_addr = x.x.x.x
#用于服务器和客户端之间通信的端口
server_port = S_NUMBER
#认证令牌,需要和服务器端保持一致
token = xxxx

[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
#意味着将服务器上的C_NUMBER端口映射到私人电脑上的22端口
#访问的时候在外部电脑上:ssh username@x.x.x.x -p 6000
#username是私人服务器上的用户名
#x.x.x.x是公网ip
remote_port = C_NUMBER

3. 启动

先在公网服务器上启动frps
再在私网服务器上启动frpc
之后就可以在其他电脑上按照ssh username@x.x.x.x -p 6000访问私人服务器。

4. 坑

  1. 上述设置中,7000端口用于frpc和frps工作通信。C_NUMBER端口是将公网的C_NUMBER端口用于映射到私网22端口。但是C_NUMBER端口和S_NUMBER端口在公网和私网中都要允许通过防火墙。

  2. 我用的公网服务器是阿里云云服务器。一开始总是连接不成功。在web控制端,新增安全组中对应的端口之后,就可以使用。
    新增入端口1:优先级100,协议选择自定义TCP,用处写S_NUMBER(就是端口号)。
    新增入端口2:前面都一样,用处写C_NUMBER(端口号)。
    新增完以上安全组,应该就可以了。如果不可以,再新增一个用处为ssh的入端口。
    找到安全组
    在这里插入图片描述
    在安全组中添加新的入端口
    在这里插入图片描述

  3. 私网的客户端进程一旦运行,就不能关闭。所以建议添加系统启动时执行。并且将此进程设置为后台执行。

  4. 一般情况下设置守护进程比较麻烦,可以直接使用如下命令在后台运行。在执行完如下命令之后,关闭当前会话也不会有影响。

    #服务端
    nohup ./frps -c frps.ini &
    #客户端
    nohup ./frpc -c frpc.ini &
    

5. 2022.1.14新增定时任务,解决意外进程断线

用了一段时间发现了客户端或者服务端可能会存在某种原因关机。此时一旦断开连接,就不能再内网穿透。
考虑在客户端和服务端使用两个定时任务解决。
具体操作是每隔一定时间检查特定名称的进程是否还在运行,如果不在运行,则启动进程。

整个定时重启包括电脑开机进程重启定时检查进程状态重启,可以解决所有情况下的进程断开。
使用linux的定时工具crontab,具体的脚本编写:
参考

6. 2022.1.17

使用一段时间发现使用nohup命令运行进程产生的日志文件nohup.out变得很大,占用了大量的存储空间。
可以设定一个定时任务,每隔一天清空nohup.out文件的内容。
注意不能直接删除nohup.out文件,因为执行rm nohup.out之后,虽然文件在文件夹中不见了,但是文件是被进程打开着的,因此文件并没有真正被删除,只有对应进程停止之后,文件才被删除。解决办法就是不要删除nohup.out文件,而是一段时间就使用

echo "" > nohup.out

将其清空,这样就不用担心nohup.out文件占用了大量的存储空间了。

7. 2022.1.18

防止黑客利用公网进行字典攻击,影响登陆体验。建议修改端口号为一个不常见的端口号。

8.2022.5.12

在二月份的时候frp突然不能用了。然后一直没有找到解决办法。
今天找到了解决办法:
在客户端配置文件中加入选项:

tls_enable = true

将客户端的remote_ip选项改成6000端口(好像我这只有这一个能用了,其他的端口即使将云服务器的安全组中对应端口入规则打开,还是不行)
完成以上配置之后,就又可以正常使用了。

九 2022.6.30

增加web内网穿透
配置文件
服务端:
在这里插入图片描述
客户端:(非必要参数已经隐去)
在这里插入图片描述
对客户端的web解释:
local_port是内网服务器的web服务端口
remote_port是公网服务器的web服务端口
其实可以看到,web服务也可以用tcp来实现(跟ssh差不多)

访问时在浏览器中使用以下格式:
公网ip:remote_port

此处遇一坑:
阿里云服务器的服务器本身有防火墙
阿里云服务器网页管理部分有安全组
frp使用的端口必须在防火墙和安全组中都打开才能用

### 如何在 Windows 上使用 Frp 实现内网穿透 #### 准备工作 为了成功设置 Frp 来实现内网穿透,需要准备一台拥有公网 IP 的服务器作为服务端 (frps),以及至少一台位于私有网络中的客户端设备来部署 frpc。 #### 下载并安装 Frp 对于 Windows 平台上的操作: - **下载最新版本的 Frp** 访问 GitHub 发布页面获取适用于 Windows 架构(通常是 amd64 或者 386)的压缩包[^1]。 - **解压文件到指定目录** 将下载好的 .zip 文件解压缩至 C:\Program Files\ 目录下创建的新文件夹 `frp` 中。确保该路径不包含中文字符以免引起潜在问题。 #### 设置服务端 (Frps) 虽然通常推荐 Linux VPS 作为稳定的服务端环境,但在特殊情况下也可以考虑 Windows Server 版本来运行 frps: - 创建一个新的文本文件命名为 `frps_full.ini`, 编辑此配置文件以适应个人需求, 至少应定义如下参数: ```ini [common] bind_port = 7000 dashboard_port = 7500 token = your_token_here ``` - 使用命令提示符启动 frps: ```powershell cd "C:\Program Files\frp" .\frps.exe -c .\frps_full.ini ``` #### 配置客户端 (Frpc) 针对想要暴露给外部世界的每项内部资源都需要单独配置一次 frpc: - 同样地,在相同位置建立名为 `frpc.ini` 的新 INI 文件用于保存必要的设定选项; 对于简单的 SSH 穿透来说可以参照下面的例子: ```ini [common] server_addr = public_server_ip_address server_port = 7000 token = your_token_here [ssh] type = tcp local_ip = 127.0.0.1 local_port = 22 remote_port = 6000 ``` - 接下来执行以下 PowerShell 命令开启 frpc 客户端进程: ```powershell cd "C:\Program Files\frp" Start-Job {.\frpc.exe -c .\frpc.ini} ``` 这样就完成了基本的 Windows 内网穿透方案搭建过程。现在可以从任何地方通过连接到 `<public_server_ip>:6000` 来访问本地机器上的 SSH 服务了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值