利用frp实现外网访问内网设置保姆级教程

该文详细介绍了如何在Ubuntu 16.04上通过FRP(Fast Reverse Proxy)建立SSH代理,包括安装SSH服务,设置FRP服务器端frps和客户端frpc的配置,以及开放防火墙端口,确保服务自启动。FRP使得内网服务可以通过公网进行访问,文章强调了端口设置和防火墙配置的重要性。
摘要由CSDN通过智能技术生成

注意:

本文所有内容均在ubuntu16.04上进行操作,centos指令可能稍有不同

  • 前置工作
    首先要明确frp基于ssh代理访问,因此咱们首先得安装上ssh吧
sudo apt-get install openssh-server

ok,现在我们启动ssh,利用systemctl或者service都可以

sudo service ssh start

然后我们将ssh设置为开机自启动

sudo systemctl enable ssh

到这里前置工作就算结束了

现在到我们的重头戏frp了,frp直接搜索下载下.tar.gz压缩包即可,推荐新版本

  • frpc

我们在目标代理服务器上进行解压,作为我们的frp server
在服务器中最重要的两个文件: frps与frps.ini
首先我们别忘了frps可执行化

chmod 755 frps

然后就是对frps.ini进行编辑了,这里我们只针对一个ssh访问

[common]
#这个就是我们服务器绑定的端口号,利用这个端口连接监听
bind_port = 7123
#当代理出来的是web服务时,在外网访问http://vps的IP:7124
vhost_https_port = 7124		
#dashboard_port状态以及代理统计信息展示,网址:7500可查看详情
dashboard_port = 7999
#dashboard_user访问用户dashboard_pwd访问密码
dashboard_user = user_name
dashboard_pwd = user_passwd
#log_file日志文件log_level记录的日志级别log_max_days日志留存3天authentication_timeout超时时间
log_file = ./frps.log
log_level = info
log_max_days = 3
authentication_timeout = 0
#max_pool_count最大链接池,每个代理预先与后端服务器建立起指定数量的最大链接数
max_pool_count = 50


ok,现在设置完,我们需要确定防火墙没有屏蔽frpc的端口,否则是无法交互信息的
可以直接把防火墙关闭,或者利用ufw(ubuntu下)/firewall(centos下)进行allow/add来添加访问端口

同样的,我们服务器也可以设置frps为service里面的一个服务,具体就是在/etc/init.d目录下创建一个frps指令脚本,这样讲frps设置为一个单独的服务更加方便

启动frps就是:

所在目录/frps -c 所在目录/frps.ini 

打开之后服务器这边就算搞定了

  • frpc
    接下来我们设置frpc也就是我们的目标访问机器
    同样需要机器开启ssh服务
    然后我们要设置好frpc.ini内容
[common]
#服务器的ip
server_addr = xxxxx
#frps.ini中配置服务端要一样bind_port
server_port = 7123

[ssh]
#类型tcp
type = tcp	
#需要代理出去的本地ip
local_ip = 127.0.0.1
# local_ip = 192.168.0.3
#需要代理出去访问的端口,这里为了防止端口被防火墙阻止直接选择ssh的22port,也可以选择其他的port
local_port = 22
#这里就是转发出去的端口,也就是在自己的机器上访问的代理端口
remote_port = 8585

然后我们同样在目标主机上执行frpc指令

所在目录/frpc -c 所在目录/frpc.ini 

访问的时候就直接拿我们的remote_port访问公网IP即可

上面说到,为了方便我们希望每次reboot的时候都能够实现自启动,那么我们可以写一个service脚本添加frps与frpc服务
这里以frpc举例子,我们采用systemctl作为控制启动项,后续可以使用service或者systemctl来对服务进行查看

在/lib/systemd/system目录下创建frpc.service服务文件

[Unit]
Description=frpc service
#After=multi-user.target
After=network.target

[Service]
TimeoutStartSec=30
ExecStart=/home/leonard/Documents/frp/frpc -c /home/leonard/Documents/frp/frpc.ini
ExecStop=/bin/kill $MAINPID
ExecReload=/home/leonard/Documents/frp/frpc reload -c /home/leonard/Documents/frp/frpc.ini

[Install]
WantedBy=multi-user.target

注:

  • 如果要是出现了end of file,请查看是否访问端口写错了
  • 如果出现拒绝访问请检查防火墙是否开启对应端口访问,可以把防火墙关闭

自己也是整了半天,和防火墙斗智斗勇,设置好端口很重要,有时候会出现端口占用情况,这里采用netstat来查看占用端口然后kill -9直接杀死进程再运行即可

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值