Frp内网穿透

Frp内网穿透配置详解
本文介绍了Frp内网穿透的配置,包括服务端和客户端的设置,重点关注Linux和Windows客户端的22及3389端口的穿透。同时提到了服务端的安全配置以及使用中可能遇到的问题和解决方案。

Frp内网穿透

所有经过服务器的内网穿透都是有一个服务端和客户端,因为都需要借助服务器的公网ip来访问进而达到内网穿透的效果。

frp的github开源地址:https://github.com/fatedier/frp

frp的说明文档:https://gofrp.org/docs/

其实他的github已经很完整的说明了,我这里只不过是进行一个快速的说明,更多更深的功能还是要参考frp的说明文档。

1. Frp服务端配置

  1. 获取frp可执行程序
# 1. 下载
1. wget https://github.com/fatedier/frp/releases/download/v0.44.0/frp_0.44.0_linux_amd64.tar.gz

# 2. 解压
tar -xvf frp_0.44.0_linux_amd64.tar.gz

# 3. 进入frp目录
cd frp_0.44.0_linux_amd64/

# 4. 删除客户端,避免干扰,frps配置文件我们也删
rm frpc* #frpc包含c的都是客户端相关的文件
rm frps_full.ini frps.ini LICENSE
  1. 对配置文件进行配置
# 为了能够快速使用,这里配置内网穿透最简单的功能
# 1. nano frps.ini ,复制下面内容到frps.ini中

[common]
#此ip代表你服务器的ip
bind_addr = 0.0.0.0
#服务器
bind_port =  10024

dashboard_addr = 0.0.0.0
dashboard_port = 5000
dashboard_user = admin
dashboard_pwd = 123456

# 2. 运行 frps 服务端程序
./frps -c frps.ini

root@fzj:~/frp/frp_0.44.0_linux_amd64# ./frps -c frps.ini
2022/09/08 15:58:54 [I] [root.go:209] frps uses config file: frps.ini
2022/09/08 15:58:54 [I] [service.go:194] frps tcp listen on 127.0.0.1:7000
2022/09/08 15:58:54 [I] [service.go:293] Dashboard listen on 0.0.0.0:5000
2022/09/08 15:58:54 [I] [root.go:218] frps started successfully
#出现该这样,就说明服务端配置好了

# 3. 进一步查看是否配置好
用浏览器访问 服务器公网ip:dashboard_port ,我上面配置了5000端口,我的公网ip是:8.210.95.55
因此我访问 8.210.95.55:5000就能登录frp的管理后台。上面我们设置了登录的账号密码是admin 和 123456。进入后台。说明我们已经完全配置好了服务端。

# 4. 此处需要注意的点有几个
1. 登录你服务器的运营商,比如阿里云腾讯云。登录其后台,打开安全组,开放对应的端口。比如上面使用了7000端口和5000端口。(此处必定要注意)

2. 第二个点,注释不要写在配置参数的后面

2. 客户端配置

客户端我这里会展示linux端和window端,linux端展示 ssh的22端口内网穿透,和window端3389内网穿透,这两个端口都是我们常用的端口。也很多朋友使用frp的原因

2.1 linux端配置

  1. 获取frp可执行程序
# 1. 下载
1. wget https://github.com/fatedier/frp/releases/download/v0.44.0/frp_0.44.0_linux_amd64.tar.gz

# 2. 解压
tar -xvf frp_0.44.0_linux_amd64.tar.gz

# 3. 进入frp目录
cd frp_0.44.0_linux_amd64/

# 4. 删除客户端,避免干扰,frps配置文件我们也删
rm frps* #frpc包含c的都是客户端相关的文件
rm frpc_full.ini frpc.ini LICENSE
  1. 对配置文件进行配置

此处把22端口映射的公网ip的6000端口

# 1. nano frpc.ini ,复制下面内容到frps.ini中
[common]
server_addr = 8.210.233.213 (更换为自己服务器地址,我此服务器已经过期)
server_port = 10024

[ssh2cc]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 10081

# 2. 运行 frpc 服务端程序
./frpc -c frpc.ini
  1. 使用putty链接
输入
ip:8.210.233.213
端口:10081
就可以远程连接了

2.1 window客户端配置

  1. 获取frp可执行程序
1. wget  https://github.com/fatedier/frp/releases/download/v0.44.0/frp_0.44.0_windows_amd64.zip

2. 解压
  1. 对配置文件进行配置
# 1. nano frpc.ini ,复制下面内容到frps.ini中
[common]
server_addr = 8.210.233.213
server_port = 10024

[rdp]
type = tcp
local_ip = 127.0.0.1
#我自己改了端口,默认是3389
local_port = 5269
remote_port = 10089

2. 建一个start.bat
复制指令
frpc.exe -c frpc.ini
到start.bat中。双击就可以运行
  1. 远程连接
1. 按住win+r键
2. 输入mstsc远程连接指令
3. 输入 8.210.233.213:10089

3. 服务端常用的配置

学会了上面我们已经能够进行内网穿透了,但是对于安全还是考虑不周到。加入别人知道你的ip和端口就能够连接,而且数据传输也是明文的,也没有log记录等。这个章节就是解决这些问题

  1. 常用的服务端配置

[common]
#此ip代表你服务器的ip
bind_addr = 0.0.0.0
#服务器
bind_port =  10024

dashboard_addr = 0.0.0.0
dashboard_port = 5000
dashboard_user = admin
dashboard_pwd = 123456

#添加token认证,只有token对的人才能连进来
token = gQFWBODEEeS0p2JE 

#设置log记录
log_file = ./frps.log
# debug, info, warn, error
log_level = info
log_max_days = 3

#心跳时间
heartbeat_timeout = 60
  1. p2p等其他配置

后续会介绍其他p2p方案,这里我经常测试,frp的p2p是很难通讯成功

4. 需要注意的点有一下几个

  1. 如果出现下面错误
    2022/09/09 10:39:58 [W] [service.go:128] login to server failed: EOF
    EOF
geekfong@ubuntu:~/frp/frp_0.44.0_linux_amd64$ ./frpc -c frpc.ini
2022/09/09 10:39:58 [W] [service.go:128] login to server failed: EOF
EOF

# 1. 90%是你的ip地址问题,查看你服务端frps是否是自己的ip,客户端frpc填写的ip和端口是否是自己绑定的那个
# 2. 查看你后台一台服务器是否绑定多个ip
# 3. 如果你是公司内网环境,公司如果是大型公司可能会做一些检测。需要对数据进行加密和tls认证,这个网上有人出现过
  1. 确定自己的服务器供应商里的安全组里开了端口,可用telnet工具去查看
telnet ip:端口

telnet 8.210.233.213 80
Trying 8.210.233.213...
Connected to 8.210.233.213.
Escape character is '^]'.
Connection closed by foreign host.

出现如上说明是开通了端口
  1. 注意每个内网穿透的名字都需要不一样
### frp 内网穿透配置教程、原理与使用方法 #### 什么是 frpfrp(Fast Reverse Proxy)是一个高性能的反向代理应用,支持多种协议,如 TCP、UDP、HTTP、HTTPS 等。它主要用于实现内网穿透,使得外部网络可以访问本地局域网中的服务。frp 由 Go 语言编写,具有良好的跨平台支持,适用于 Linux、Windows、macOS 等操作系统。 #### 为什么选择 frpfrp 的优势在于其简单易用、功能丰富、性能稳定。它支持多种代理模式,如 TCP、UDP、HTTP、HTTPS、STCP 等,并且可以通过简单的配置文件进行管理。此外,frp 支持自定义域名、加密传输、身份验证等功能,适用于多种场景,如远程桌面、Web 服务、游戏服务器等。 #### 工作原理 frp 的工作原理基于反向代理机制。它由两部分组成:**服务端(frps)** 和 **客户端(frpc)**。服务端部署在具有公网 IP 的服务器上,客户端部署在内网环境中。客户端通过与服务端建立连接,将内网服务映射到公网端口或域名上,从而实现外部访问。 具体流程如下: 1. 客户端(frpc)与服务端(frps)建立连接。 2. 客户端将本地服务的端口信息发送给服务端。 3. 服务端将外部请求转发到客户端,再由客户端转发到本地服务。 4. 数据在服务端与客户端之间双向传输,完成请求响应过程。 #### 代理类型 frp 支持多种代理类型,常见的有: - **TCP 代理**:适用于 SSH、数据库等基于 TCP 的服务。 - **UDP 代理**:适用于 DNS、VoIP 等基于 UDP 的服务。 - **HTTP/HTTPS 代理**:适用于 Web 服务,支持域名映射。 - **STCP 代理**:安全的 TCP 代理,需配合 frp 客户端使用,防止被第三方滥用。 #### 内网穿透配置教程 ##### 服务端安装与配置 1. **下载 frp**:前往 [frp 官方 GitHub 仓库](https://github.com/fatedier/frp) 下载对应系统的版本。 2. **解压文件**:将下载的压缩包解压到服务器目录,如 `/usr/local/frps/`。 3. **配置 frps.toml**:编辑 `frps.toml` 文件,配置监听端口、仪表盘端口、认证 token 等参数。 ```toml [common] bindPort = 7000 dashboardPort = 7500 token = "12121212" ``` 4. **使用 systemd 管理服务端**:创建 systemd 服务文件 `/etc/systemd/system/frps.service`,内容如下: ```ini [Service] Type=simple ExecStart=/usr/local/frps/frp_0.59.0_linux_amd64/frps -c /usr/local/frps/frp_0.59.0_linux_amd64/frps.toml KillSignal=SIGQUIT TimeoutStopSec=5 KillMode=process PrivateTmp=true StandardOutput=syslog StandardError=inherit [Install] WantedBy=multi-user.target ``` 5. **启动服务**: ```bash systemctl start frps.service systemctl enable frps.service systemctl status frps.service ``` 6. **开放防火墙端口**:在云服务器控制台或命令行中开放 `bindPort` 和 `dashboardPort` 对应的端口。 ##### 客户端安装与配置 1. **下载 frp**:根据客户端操作系统下载对应版本。 2. **解压文件**:将压缩包解压到本地目录,如 `/usr/local/frp/`。 3. **配置 frpc.toml**:编辑 `frpc.toml` 文件,配置服务端地址、端口、认证 token 及代理规则。 ```toml [common] serverAddr = "xx.xx.xx.xx" serverPort = 7000 auth.method = "token" auth.token = "12121212" [[proxies]] name = "ssh" type = "tcp" localIP = "127.0.0.1" localPort = 22 remotePort = 6000 [[proxies]] name = "web" type = "http" localIP = "127.0.0.1" localPort = 80 remotePort = 8080 customDomains = ["example.com"] ``` 4. **启动客户端**: ```bash ./frpc -c ./frpc.toml ``` ##### 使用 systemd 管理客户端(可选) 创建 `/etc/systemd/system/frpc.service` 文件,内容如下: ```ini [Service] Type=simple ExecStart=/usr/local/frp_0.59.0_linux_amd64/frpc -c /usr/local/frp_0.59.0_linux_amd64/frpc.toml KillSignal=SIGQUIT TimeoutStopSec=5 KillMode=process PrivateTmp=true StandardOutput=syslog StandardError=inherit [Install] WantedBy=multi-user.target ``` 然后执行以下命令启动并启用服务: ```bash systemctl start frpc.service systemctl enable frpc.service systemctl status frpc.service ``` #### 注意事项 - **安全性**:建议启用 token 认证,并定期更换 token,防止未授权访问。 - **防火墙配置**:确保服务端和客户端的防火墙规则允许相应端口通信。 - **日志监控**:通过查看日志文件或仪表台监控 frp 的运行状态。 - **版本兼容性**:服务端与客户端应尽量保持版本一致,避免兼容性问题。 --- ####
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GeekFong

记录不易,坚持更新

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值