基于frp实现外网访问内网服务器

HarmonyOS

  一、前言

  当我们有一台内网服务器,又在这台内网服务器上部署了应用,又希望能使用外网访问这台内网服务器,并且还能访问服务器上部署的应用时。这种情况只能花钱购买内网穿透软件来满足访问的要求,那有不有免费且好用的方法呢?

  下面为大家介绍一种内网穿透方法(免费哟)。那就是利用frp来反向代理应用,实现以外网服务为桥梁的方式去访问内网服务器。

  二、准备工作

  外网服务器一台(最好是云服务器)内网服务器一台(需能访问网络)frp包(linux_X86_64使用的是:frp_0.44.0_linux_386.tar.gz)下载地址:https://github.com/fatedier/frp/releases/download/v0.44.0/frp_0.44.0_linux_386.tar.gz官网地址:https://github.com/fatedier/frp可以在官网上下载其他版本

  三、外网服务器frp搭建

  准备工作都做好了,下面我们开始搭建。

  #1、将frp_0.44.0_linux_386.tar.gz 上传到服务器指定路径#2、解压frp_0.44.0_linux_386.tar.gztar -zxvf frp_0.44.0_linux_386.tar.gz

  #3、进入frp_0.44.0_linux_386cd frp_0.44.0_linux_386/#外网服务器搭建的frp服务器,需要的是frps和frps.ini#frps.ini配置文件内容:[common]bind_port = 7000 #bind_port为指定frp的端口号

  我们需要在外网服务器启动frps

  4、启动frp./frps -c frps.ini

  通常情况我们需要设置后台启动,这里介绍一种systemctl的方式来控制、设置后台frp启动。

  vim /lib/systemd/system/frps.service在frps.service加入以下内容

  [Unit]Description=frps serviceAfter=network.target syslog.targetWants=network.target[Service]Type=simple#启动服务的命令(此处写你的frps的实际安装目录)ExecStart=/zhouyx/frp_0.44.0_linux_386/frps -c /zhouyx/frp_0.44.0_linux_386/frps.ini[Install]WantedBy=multi-user.target

  #可使用下面的命令控制frps#启动frpssystemctl start frps#设置开机自启systemctl enable frps#重启应用systemctl restart frps#停止应用systemctl stop frps#查看应用的日志systemctl status frps四、内网服务器frp搭建

  #1、将frp_0.44.0_linux_386.tar.gz 上传到服务器指定路径#2、解压frp_0.44.0_linux_386.tar.gztar -zxvf frp_0.44.0_linux_386.tar.gz

  #3、进入frp_0.44.0_linux_386cd frp_0.44.0_linux_386/#内网服务器搭建的是frp客户端,需要的是frpc和frpc.ini#frpc.ini配置文件服务器内容:server_addr = XX:XX:XX:XX #frp服务器地址(外网服务器地址)server_port = 7000 #frp服务器端口(外网服务器端口)[ssh]type = tcplocal_ip = 127.0.0.1 local_port = 22 #需要代理的内网服务器端口remote_port = 6022 #代理到外网服务器的端口号

  我们需要在内网服务器启动frpc

  4、启动frp./frpc -c frpc.ini内网服务器也不例外,需要设置后台启动,使用systemctl的方式来控制、设置后台frp启动。

  vim /lib/systemd/system/frpc.servicefrpc.service的内容

  [Unit]Description=frpc serviceAfter=network.target syslog.targetWants=network.target[Service]Type=simple#启动服务的命令(此处写你的frpc的实际安装目录)ExecStart=/zhouyx/frp_0.44.0_linux_386/frpc -c /zhouyx/frp_0.44.0_linux_386/frpc.ini[Install]WantedBy=multi-user.target

  #可使用下面的命令控制frpc#启动frpcsystemctl start frpc#设置开机自启systemctl enable frpc#重启应用systemctl restart frpc#停止应用systemctl stop frpc#查看应用的日志systemctl status frpc#查看端口占用 netstat -tunlp启动内网服务器后,可以发现外网服务器的端口占用列表出现了内网服务器映射的端口,这样说明已经搭建好了。

  使用外网服务器IP加映射的端口访问内网服务器,成功的实现了内网穿透

  五、实现内网服务器多端口映射

  这里以映射本地nacos为例,添加端口映射信息

  #重启frpcsystemctl restart frpc此时外网服务器(云服务)多了端口8848

  通过内网服务器IP+端口访问nacos

  通过外网服务器IP+端口访问nacos

  六、注意

  在搭建frp的时候要注意端口的开放。如果防火墙打开,而没有开发端口,可能会导致搭建失败。

  云服务器需在指定的云服务平台开放端口。

  #1、开启防火墙 systemctl start firewalld#2、开放指定端口firewall-cmd --zone=public --add-port=7000/tcp --permanent#命令含义:--zone #作用域--add-port=7000/tcp #添加端口,格式为:端口/通讯协议--permanent #永久生效,没有此参数重启后失效#3、重启防火墙firewall-cmd --reload#4、查看端口号netstat -ntlp #查看当前所有tcp端口·netstat -ntulp

  grep 7000 #查看所有7000端口使用情况

标签: HarmonyOS