内网穿透 frp 配置示例

1 篇文章 0 订阅

frp 是一套简单易配的内网穿透服务,能很方便的把内网服务映射到公网,使得公网也能轻易的访问内网的web、文件等,前提是得确保设置得端口不受防火墙保护。

1.下载

分别在服务器端跟需要访问得内网服务器下载 frp的对应版本 ,下载网址:

https://github.com/fatedier/frp/releases

Linux下载命令:
找到对应版本,鼠标右键复制下载链接地址,然后运行命令:

# wget 下载地址
wget https://github.com/fatedier/frp/releases/download/v0.33.0/frp_0.33.0_linux_amd64.tar.gz 

如果报找不到wget:

-bash: wget: command not found

那么你就需要事先下载安装下:

yum install wget
实例下载:
[root@docker ~]# mkdir -p /usr/local/frp
[root@docker ~]# cd /usr/local/frp
[root@docker frp]# wget https://github.com/fatedier/frp/releases/download/v0.33.0/frp_0.33.0_linux_amd64.tar.gz
解压:
[root@docker frp]# tar -zxvf  frp_0.33.0_linux_amd64.tar.gz
frp_0.33.0_linux_amd64/
frp_0.33.0_linux_amd64/frpc_full.ini
frp_0.33.0_linux_amd64/LICENSE
frp_0.33.0_linux_amd64/frpc.ini
frp_0.33.0_linux_amd64/frps.ini
frp_0.33.0_linux_amd64/frpc
frp_0.33.0_linux_amd64/frps_full.ini
frp_0.33.0_linux_amd64/frps
[root@docker frp]# ls
frp_0.33.0_linux_amd64  frp_0.33.0_linux_amd64.tar.gz
[root@docker frp]# mv frp_0.33.0_linux_amd64 frp
[root@docker frp]# ls
frp  frp_0.33.0_linux_amd64.tar.gz
查看树形结构:
[root@docker frp]# tree frp
frp
├── frpc //客户端
├── frpc_full.ini
├── frpc.ini //客户端配置
├── frps //服务端
├── frps_full.ini
├── frps.ini //服务端配置
└── LICENSE

不难理解,其中的frpc代表frp client,也就是配置在内网客服端
类似的,frps则代表frp server, 也就是配置在公网服务端

2.公网服务器配置

在公网主机上配置服务端,也就是下载文件中的frps、frps.ini

frps.ini
[common]
#服务端口
bind_port = 7000
#监听地址
bind_addr = 0.0.0.0
#认证token
token = 123456

#http服务端口
vhost_http_port = 80 #一般可以直接设置80,那么就可以直接访问域名无需加端口
#https服务端口
vhost_https_port = 443  #一般可以直接设置443,那么就可以直接访问域名无需加端口

# 控制面板的端口、账号、密码
dashboard_port = 7500 
dashboard_user = root
dashboard_pwd = admin

[web-http]
listen_port=80 #监听内网端口


[web-http02]
listen_port=80 #监听内网端口

[web-https]
listen_port=443 #监听内网端口

3.内网客户端配置

在内网主机上配置客户端,也就是下载文件中的frpc、frpc.ini

frpc.ini
[common]
server_addr = 112.113.114.115 #公网IP,自行设置成自己的服务端ip
server_port = 7000 #公网端口
token = 123456 #认证token,需要跟服务端的token保持一致

[ssh]
type = tcp
local_port = 22
local_ip = 127.0.0.1 # 本地局域网ip
# 在服务端注册端口 服务端将监听 7022 ssh root@112.113.114.115 -p 7022 即可代理到本机 ssh 登录
remote_port = 7022
bandwidth_limit = 1MB #单位下载速度限制

[web-http]
# 远端服务器定义好了 http 服务的端口 这里不需要指定
# 只需要指定 custom/sub_domains 用来做路由即可 
# 如果只是代理一台 则指定服务端ip 使用ip访问即可
type = http
local_port = 8888 #本地http服务端口
remote_port = 80 # 这个不能缺少,否者无法打开
local_ip = 127.0.0.1#本地http服务地址
# 或者指定域名 可以使用其他域名继续绑定
custom_domains = frp1.test.com # 这里的域名是公网ip解析的域名

[web-http02]
type = http
local_port = 8082 #本地http服务端口
local_ip = 127.0.0.1# 本地http服务地址
remote_port = 80 # 这个不能缺少,否者无法打开
# 直接使用服务端的公网ip绑定(这样一个frps只能代理一个http客户端)
custom_domains = frp2.test.com # 这里的域名是公网ip解析的域名

[web-https]
type = https
remote_port = 443 #远程端口
local_ip = 127.0.0.1
local_port = 443 # 本地端口
custom_domains = frp2.test.com


plugin = https2http
plugin_local_addr = 127.0.0.1:80
plugin_crt_path = ./server.crt
plugin_key_path = ./server.key
plugin_host_header_rewrite = 127.0.0.1
plugin_header_X-From-Where = frp

具体配置可参考git文档:https://github.com/fatedier/frp

一般https需要证书,而且比较麻烦,所以为了解决该问题,下面我们说一下利用cloudflare实现https加密

4.启动服务
服务端
  • 服务端前台启动
[root@iZj6cfqhk4voeeejr9uygtZ frp]# ./frps -c ./frps.ini
2020/06/03 11:28:26 [I] [service.go:83] frps tcp listen on 0.0.0.0:7000
2020/06/03 11:28:26 [I] [service.go:108] http service listen on 0.0.0.0:6080
2020/06/03 11:28:26 [I] [main.go:112] Start frps success
2020/06/03 11:28:26 [I] [main.go:114] PrivilegeMode is enabled, you should pay more attention to security issues

以上提示则表示已经开启成功!!不过一般前台启动多用户调试使用,实际应该使用后台启动:

  • 服务端后台启动
nohup ./frps -c ./frps.ini &
客户端
  • 客户端前台启动
[root@docker frp]# ./frpc -c ./frpc.ini
2020/06/03 02:40:51 [I] [service.go:282] [e0a53f67512c167b] login to server success, get run id [e0a53f67512c167b], server udp port [0]
2020/06/03 02:40:51 [I] [proxy_manager.go:144] [e0a53f67512c167b] proxy added: [web-01 ssh web]
2020/06/03 02:40:51 [I] [control.go:179] [e0a53f67512c167b] [web-01] start proxy success
2020/06/03 02:40:51 [I] [control.go:179] [e0a53f67512c167b] [ssh] start proxy success
2020/06/03 02:40:51 [I] [control.go:179] [e0a53f67512c167b] [web] start proxy success
  • 客户端后台启动:
nohup ./frpc -c ./frpc.ini &
5.测试访问

经过上面一顿配置操作,打开浏览器访问:

  • frp1.test.com能成功访问内网:ip:8888的web项目
  • frp2.test.com能成功访问内网:ip:8082的web项目。
    到此就完成了内网穿透的配置以及开启!!!
6.遇到的坑以及注意事项
  • 1.公网启动成功,内网启动报以下错误
[root@docker frp]# ./frpc -c ./frpc.ini
2020/06/02 23:34:39 [W] [service.go:101] login to server failed: dial tcp xx.xx.xx.xxx:7000: connect: connection timed out

这个错误一般要么是防火墙没开放端口、要么公网服务器那边未把指定端口加入安全组!
解决方案:
a) 防火墙开放端口

  • 防火墙状态:
systemctl status firewalld.service
  • 开启防火墙:
systemctl start firewalld.service
  • 关闭防火墙
systemctl stop firewalld.service
  • 查看已开放端口:
firewall-cmd --permanent --zone=public --list-ports
  • 设置开放端口
firewall-cmd --zone=public --add-port=7000/tcp --permanent
  • 重启防火墙
firewall-cmd --reload

b)云服务器开放端口
参考:https://blog.csdn.net/wsjzzcbq/article/details/88896214

  • 2.客户端与服务端的frp的版本不一致
    a) 客户端提示:
2020/06/02 23:57:28 [W] [service.go:101] login to server failed: EOF
EOF

b) 服务端提示:

2020/06/03 11:50:45 [W] [service.go:214] Accept new mux stream error: broken pipe
  • 3.如果一开始是后台启动,修改配置再开启报frp已经存在,那么需要查看frp进程
ps -aux|grep frp| grep -v grep

杀死进程并重新开启frp服务即可!!!

frp服务端后台运行以及开机自启

一、frpc配置systemctl启动
1.创建systemctl配置文件:
vi /lib/systemd/system/frpc.service
2.配置文件填入以下配置信息:
[Unit]
Description=frpc service
After=network.target syslog.target
Wants=network.target

[Service]
Type=simple
User=nobody
Restart=on-failure
RestartSec=5s
#启动服务的命令(此处写你的frpc的实际安装目录)
ExecStart=/usr/local/frp/frp/frpc -c /usr/local/frp/frp/frpc.ini
ExecReload=/usr/local/frp/frp/frpc reload -c /usr/local/frp/frp/frpc.ini

[Install]
WantedBy=multi-user.target
3.启动frpc
# 启动frps
systemctl start frpc
# 打开开机自启动
systemctl enable frpc
# 关闭开机自启动
systemctl disable frpc
# 重启应用
systemctl restart frpc
# 停止应用
systemctl stop frpc
# 查看应用的日志
systemctl status frpc
二、frps配置systemctl启动

类似frpc的配置,只不过是在外网服务器配置frps!!

三、systemctl常用方法

启动服务:systemctl start xxx.service
关闭服务:systemctl stop xxx.service
重启服务:systemctl restart xxx.service
显示服务的状态:systemctl status xxx.service
在开机时启用服务:systemctl enable xxx.service
在开机时禁用服务:systemctl disable xxx.service
查看服务是否开机启动:systemctl is-enabled xxx.service
查看已启动的服务列表:systemctl list-unit-files|grep enabled
查看启动失败的服务列表:systemctl --failed

如果启动过程中出现权限问题
[root@xzh2c4g frp]# /usr/local/frp/frp/frpc -c /usr/local/frp/frp/frpc.ini
-bash: /usr/local/frp/frp/frpc: Permission denied
解决
chmod -R 744 /usr/local/frp
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
frp穿透配置文件包括frps.ini和frpc.ini两个文件。在frps.ini配置文件中,常用的配置信息有: - bind_port:指定frps服务端监听的端口。 - authentication_method:指定认证方式,常用的是token认证。 - token:指定用于认证的令牌。 - vhost_http_port:指定虚拟主机的HTTP端口。 - subdomain_host:指定子域名的主机地址。 在frpc.ini配置文件中,常用的配置信息有: - server_addr:指定连接的frps服务端的地址。 - server_port:指定连接的frps服务端的端口。 - token:指定用于认证的令牌。 除了常用的配置信息外,根据具体需求,还可以配置多个映射规则。例如,在frpc.ini文件中,可以配置[type]字段来指定映射规则的类型(如tcp、http等),然后根据规则为本地服务配置对应的IP地址、端口号、子域名等信息。 请根据具体需求,参考以上配置文件中的示例,对frp穿透进行相应的配置。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [frp穿透](https://download.csdn.net/download/weixin_38551046/14052413)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [内穿透工具FRP配置文件详解](https://blog.csdn.net/weixin_46985491/article/details/118799053)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值