阿里云服务器ECS利用反向代理FRP内网穿透

FRP 服务端搭建

有时候在外地要访问家里的电脑或者网络硬盘,没有固定IP怎么办呢?这时候就面临内网穿透需求了。*

内@网@穿@透

一般内@网@穿@透有哪些解决方法呢?一般有反向代理、动态域名等等。前者用的多有frp,后者有花生壳等。

  • frp,即本文所讲的。frp 是一个可用于内网穿透的高性能的反向代理应用。其官网链接为:https://github.com/fatedier/frp
  • sunny_ngrok,国外反向代理。
  • 花生壳,动态域名,通过解析域名和对应的IP地址。这个国产商业软件,要实名制,绝大多数产品是要付费的。

frp简介

frp 是一个可用于内网穿透的高性能的反向代理应用,支持 tcp, udp
协议。其官网链接为:https://github.com/fatedier/frp

frp分为服务器端frps客户端frpc

准备条件

带公网IP的VPS服务器,假设IP地址是111.111.111.111。如果没有VPS服务器具体可以参考阿里云域名注册与备案、服务器ECS购买与登录.

  • 外网PC ACentOS7 。
  • 内网PC B Windows Server 2016 。
  • 内网PC C CentOS7 。

VPS服务器端搭设

  • 下载frps到服务器
frp_0.34.3_linux_arm64.tar.gz
https://github.com/fatedier/frp/releases
  • 修改服务器配置文件(frps.ini):
[common]
#与客户端绑定的进行通信的端口
bind_port = 7000
  • 启动frp命令:
./frps -c ./frps.ini &

内网PC 客户端搭设(windows版本)

  • 下载客户端的frp:

在这里 https://github.com/fatedier/frp/releases 找到对应版本的frp。
因为在服务器端是使用了0.16.0版本,所以需要找到对应版本下载。

  • 编辑frpc.ini文件
[common]
server_addr = 111.111.111.111
server_port = 7000
​
[RemoteDesktop]
#windows下使用远程桌面
type = tcp
local_addr = 127.0.0.1
local_port = 3389
remote_port = 7002
  • 启动frp客户端frpc:

找到frpc.exe对应文件夹,在其地址栏输入cmd,则进入以该文件夹为路径的cmd命令行。在命令行下输入以下命令即可启动。

frpc -c frpc.ini

远程连接

外网PC在命令行下输入mstsc,启动远程桌面

在远程桌面的计算机输入框中,输入VPS对应ip及客户端frpc.ini中对应的remote_port。

在这里则是111.111.111.111:7002

内网PC 客户端搭设(linux版本)

  • 下载客户端的frp:

在这里 https://github.com/fatedier/frp/releases 找到对应版本的frp。

  • 编辑frpc.ini文件
[common]
server_addr = 111.111.111.111
server_port = 7000
​
[ssh1]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 7003


  • 启动frpc客户端。
./frpc -c ./frpc.ini &

远程连接

外网电脑ssh登录内网PC,输入命令为

ssh -p 7003 root@111.111.111.111

其中 -p为端口号,登录用户名为root。

假若已经保存了秘钥文件id_rsa,可以用-i 指定秘钥文件

ssh -p 7003  root@111.111.111.111 -i id_rsa

在这里插入图片描述

过程问题

1.Windows server2016远程桌面默认关闭 ,需要手动打开

2. Windows10远程桌面连接提示:出现身份验证错误,要求的函数不受支持

在这里插入图片描述
修改win10 注册表

计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System

然后在System文件夹内创建文件夹项:\CredSSP\Parameters

然后在Parameters文件夹内,新建 DWORD(32)位值(D),文件名为 AllowEncryptionOracle,值为2

重新远程连接一下,错误消失,可以正常连接

阿里云ECS 端口开放

  1. 7000 frp 服务端使用的端口
  2. 7002 frp 客户端(win)连接使用的端口
  3. 7003 frp 客户端(linux)连接使用的端口

开机自启

frp 服务端开机自启

创建服务文件

sudo vim /etc/systemd/system/frpc.service

填入如下信息,ExecStart请自行替换

[Unit]
Description=Frp Client
After=network.target
Wants=network.target

[Service]
Restart=on-failure
RestartSec=5
ExecStart=/root/frp/frp_0.34.3_linux_amd64/frps -c /root/frp/frp_0.34.3_linux_amd64/frps.ini

[Install]
WantedBy=multi-user.target
#刷新服务列表:
systemctl daemon-reload

#设置开机自启
systemctl enable frpc
#关闭开机自启
systemctl disable frpc

#启动服务
systemctl start frpc
#停止服务
systemctl stop frpc

frp 客户端(linux)开机自启

同上

frp 客户端(win)开机自启

方法一:

创建一个快捷方式到 C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp
里面 这个方法最大缺点是电脑要登录后才能连接,所以一般不用这个方法

方法二:

用计划任务实现,方法看这里 http://diannaobos.com/post/405.html

方法三:

用winsw将frp注册为系统服务 这个方法最稳定,这是我最终用的方法。 下载winsw
https://github.com/kohsuke/winsw/releases
,改名为winsw.exe,放到frp相同的目录里,在同一个目录里创建一个utf8编码的文本文件,文件名是 winsw.xml,内容是:

<service>
    <id>frp</id>
    <name>frp这里是服务的名称</name>
    <description>这里是服务的介绍,随便写</description>
    <executable>frpc</executable>
    <arguments>-c frpc.ini</arguments>
    <onfailure action="restart" delay="60 sec"/>
    <onfailure action="restart" delay="120 sec"/>
    <logmode>reset</logmode>
</service>

以管理员权限打开一个命令窗口,cd到frp所在目录,执行:

winsw install
winsw start

如果要卸载服务,执行命令:

winsw stop
winsw uninstall
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值