利用VPS服务器搭建一个FRP内网穿透服务和Web服务穿透

目标:实现在公司用mstsc访问控制家里的电脑

附:基本配置参考:FRP服务端和客户端的基本配置_JohnGene的博客

准备资料

1、带有公网ip的Linux主机,下面假设1.2.3.4是固定外网ip

2、家用电脑联网,以下FRP客户端就是在家用电脑中操作的

FRP下载地址:Releases · fatedier/frp · GitHub

中文文档:frp/README_zh.md at master · fatedier/frp · GitHub
注意:frps是服务端程序,frpc是客户端程序

服务端配置

服务端程序 frp_0.30.0_linux_amd64.ter.gz 解压出来是这个样子:

编辑frps.ini为以下内容:

[common]

bind_port = 7000 #与客户端绑定的进行通信的端口

vhost_http_port = 80 #访问客户端web服务自定义的端口号

注意防火墙和安全组策略要开放自己设置的7000和80端口

进行到解压后的frp目录,然后通过./frps -c frps.ini命令即可启动服务端。

看到start frps success则说明成功

只用这种方式开启frps的话frps会占据了整个命令窗口,退出即停,所以接下来要考虑如何让它在后台运行并且开机自启。

新建 frps.service 文件:

vi /etc/systemd/system/frps.service

[Unit]

Description=frps daemon

After=syslog.target  network.target

Wants=network.target

[Service]

Type=simple

ExecStart=/frp/frps -c /frp/frps.ini

Restart= always

RestartSec=1min

[Install]

WantedBy=multi-user.target

注意ExecStart中要配置成自己的路径.

授权:

chmod 777 /frp/frps

chmod 777 /frp/frps.ini

然后使用systemctl start frps即可启动frps, 用systemctl enable frps即可将frps设置为开机启动。

客户端的配置

 

frp_0.30.0_windows_amd64.zip解压出来后:

配置frpc.ini:

[common]

server_addr = 1.2.3.4

server_port = 7000

[mstsc]

type = tcp

local_ip = blogs.johngene.cn

local_port = 3389

remote_port = 6999

[web]
type = http #访问协议
local_port = 8080 #内网web服务的端口号
custom_domains = 1.2.3.4 #所绑定的公网服务器域名,一级、二级域名、ip地址都可以

注意防火墙和安全组策略要开启自己设置的6999、7000、80端口,remote_port 就是我们接下来要使用的端口

启动客户端:

start proxy success成功

这时就可以是用mstsc访问了

 

注意开启允许远程访问,防火墙要配置允许对应的数据或者直接关闭:

windows客户端需要将frpc设置为开机自启[可选]

1.编写frpc的执行脚本

新建文本文档输入:

E:\FRPC\frpc.exe -c E:\FRPC\frpc.ini

这里的 frpc.exe 和 frpc.ini 的地址不要搞错了

保存后修改后缀名为.bat文件 

2.右击我的电脑>管理>系统工具>任务计划程序>任务计划程序库>创建任务

3.常规选项:名称、不管用户是否登录都要运行、使用最高权限运行

4.触发器:新建、开始任务选启动时其他默认,点确定 

5.操作:新建操作、选启动程序、浏览选择bat脚本、确定 

6.条件:全不选或者选择一个只有在以下网络时才启动,选任何网络 

7.设置:选允许按需运行任务、如果过了计划开始时间,立即启动任务、如果任务失败,按以下频率重新启动(1分钟300次或者酌情填写)、如果此任务 

已经运行选择请勿启动新实例

至此可以重启电脑测试了,注意重启后不要进入登录,直接用另一台机器用mstsc连接试试!

注意事项 

如上安装FRP是不安全的,网络任何一台电脑都可以连接,下面分享个安全的配置方法:

客户端的协议采用stcp方式:

#服务端:[common]

bind_port = 7000

bind_udp_port = 7001
token = abcdefg
# bind_port:需要服务器开放端口
# bind_udp_port:提供udp协议的客户端使用,也需要服务器开放端口
# token:客户端连接服务端时需要的像密码一样的东西

#客户端A[被连接的机器]:
[client_A]
type=stcp
sk=12345678
local_ip=blogs.johngene.cn
local_port=3389
# type选择stcp
# sk:连接A需要的秘钥
# local_ip:A机器的本地地址
# local_port:A机器的连接端口
 

#客户端B[连接A的机器]:
[client_A_visitor]
type=stcp
role=visitor
server_name=client_A
sk=12345678
bind_ip=blogs.johngene.cn
bind_port=789
# type选择stcp
# role:角色visitor
# server_name:A机器配置的名称client_A
# sk:和A机器配置的sk保持一致
# bind_ip:B机器的本地地址
# bind_port:B机器随意一个不被占用的端口

最后B机器连接A机器需要在mstsc里面输入:localhost:789,或者127.0.0.1:789

如果要A和B相互连接,就得举一反三了,A里面配置client_B_visitor,B里面提供被A连接的接口client_B。

同样的,如果希望B机器对外公开,可以同时使用stcp协议和tcp协议,即:谁提供stcp接口谁就可以被stcp的visitor访问(注意秘钥相同),谁提供tcp接口谁就会被公开,任何电脑的远程输入ip地址和端口号就都可以访问。

Linux配置FRPC客户端

不安全的配置:

1、将下载的frp_0.31.1_linux_amd64.tar.gz解压出来,把里面的frpc和frpc.ini复制出来上传到Centos。

2、修改配置文件

[common]

server_addr = 1.2.3.4

server_port = 1234

 

#tcp客户端可以和stcp客户端同时使用

[ssh]

type = tcp

local_ip = blogs.johngene.cn

local_port = 22

remote_port = 8080

然后注意开放对应的1234和8080端口

3、利用ssh工具直接连接1.2.3.4:8080即可

安全的配置:

参考上面stcp握手方式!

自定义开启脚本与开机自启

1.编写脚本:

vi start-frpc.sh

#!/bin/bash

nohup /opt/frpc/frpc -c /opt/frpc/frpc.ini &

2.编写service文件

cd /lib/systemd/system

vi frpc.service

[Unit]

Description=xmr-staK

After=network.target

[Service]

Type=forking

ExecStart=/opt/frpc/start-frpc.sh

PrivateTmp=true

[Install]

WantedBy=multi-user.target

Description:描述服务
After:描述服务类别
[Service]服务运行参数的设置
Type=forking是后台运行的形式
ExecStart为服务的具体运行命令
ExecReload为重启命令
ExecStop为停止命令
PrivateTmp=True表示给服务分配独立的临时空间
注意:[Service]的启动、重启、停止命令全部要求使用绝对路径
[Install]运行级别下服务安装的相关设置,可设置为多用户,即系统运行级别为3

3.手工启动&开机自动启动服务 

systemctl start frpc   启动
systemctl restart frpc   重启
systemctl stop frpc   停止
systemctl enable frpc   开机自启

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值