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

一、前言

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

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

二、准备工作
  • 外网服务器一台(最好是云服务器)

  • 内网服务器一台(需能访问网络)

  • frp包(linux_X86_64使用的是:frp_0.44.0_linux_386.tar.gz)

    下载地址 官网地址

    可在官网下载其他版本

    image-20220919224748544

image-20220919224812510

image-20220919224837249

三、外网服务器frp搭建

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

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

image-20220919225334495

#3、进入frp_0.44.0_linux_386
cd frp_0.44.0_linux_386/

#外网服务器搭建的frp服务器,需要关注的是frps和frps.ini

#frps.ini配置文件内容:
[common]
bind_port = 7000 #bind_port为指定frp的端口号

image-20220919225513177

image-20220919225709082

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

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

image-20220919230718535

image-20220919230828063

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

vim /lib/systemd/system/frps.service

在frps.service加入以下内容

[Unit]
Description=frps service
After=network.target syslog.target
Wants=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

image-20220919231658884

#可使用下面的命令控制frps
#启动frps
systemctl 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.gz
tar -zxvf frp_0.44.0_linux_386.tar.gz

image-20220919232251907

#3、进入frp_0.44.0_linux_386
cd 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 = tcp
local_ip = 127.0.0.1 
local_port = 22 #需要代理的内网服务器端口
remote_port = 6022 #代理到外网服务器的端口号

image-20220919232533395

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

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

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

vim /lib/systemd/system/frpc.service

frpc.service的内容

[Unit]
Description=frpc service
After=network.target syslog.target
Wants=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

image-20220919233611612

#可使用下面的命令控制frpc
#启动frpc
systemctl start frpc
#设置开机自启
systemctl enable frpc
#重启应用
systemctl restart frpc
#停止应用
systemctl stop frpc
#查看应用的日志
systemctl status frpc
#查看端口占用 
netstat -tunlp

启动内网服务器后,可以发现外网服务器的端口占用列表出现了内网服务器映射的端口,这样说明已经搭建好了。

image-20220919234248179

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

image-20220919234649681

image-20220919234913621

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

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

image-20220919235722524

#重启frpc
systemctl restart frpc

此时外网服务器(云服务)多了端口8848

image-20220920000027949

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

image-20220920000326184

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

image-20220920000616897

六、注意

在搭建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端口使用情况
  • 7
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
外网访问内网FTP服务器的方法有多种。其中一种方法是使用端口映射技术,如使用frp工具进行配置。首先,您需要在内网FTP服务器上安装并配置frp工具。您可以通过下载并解压缩frp软件包,然后修改frpc.ini文件来配置frp。在frpc.ini文件中,您需要指定服务器的IP地址和端口号,以及要映射的本地IP地址和端口号。例如,您可以将本地的FTP服务器端口21映射到外网的端口2121。完成配置后,您可以运行frpc工具来启动端口映射。通过运行命令"./frpc -c ./frpc.ini",您可以验证配置是否正确并启动端口映射。这样,您的朋友就可以通过外网访问您的内网FTP服务器了。请注意,为了使端口映射生效,您还需要在防火墙中放行相应的端口。您可以使用iptables命令来放行指定的端口。例如,您可以使用命令"iptables -I INPUT -i eth0 -p tcp --dport 21 -j ACCEPT"来放行FTP服务器的端口。请确保您的操作系统上已安装iptables,并按照上述步骤进行配置和放行端口。 #### 引用[.reference_title] - *1* [外网用户如何访问内网FTP服务器](https://blog.csdn.net/qinqijing_123/article/details/5805492)[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^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [【内网穿透服务器】使用Frp外网访问内网FTP服务器(以访问内网samba服务为例)](https://blog.csdn.net/deng_xj/article/details/89063768)[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^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值