简单高效的内网穿透——frp

文章目录
[隐藏]
本文最后更新于 2020年9月15日 19:25 可能会因为没有更新而失效。如已失效或需要修正,请留言

前言

frp 是一个可用于内网穿透的高性能的反向代理应用,支持 tcp, udp 协议,为 http 和 https 应用协议提供了额外的能力,且尝试性支持了点对点穿透。

GitHub:https://github.com/fatedier/frp/blob/master/README_zh.md

使用前提

有固定公网IP的服务器。

架构

frp

使用方法

根据对应的操作系统及架构,从 Release 页面下载最新版本的程序。下载的内容包含服务端与客户端。

将 frps 及 frps.ini 放到具有公网 IP 的机器上。(服务端)

将 frpc 及 frpc.ini 放到处于内网环境的机器上。(客户端)

根据自身的要求编辑 frps.ini 、 frpc.ini 配置文件。

开放端口(包含外部的防火墙、系统的防火墙,都需打开)。

启动frp

Linux服务端:

nohup ./frps -c ./frps.ini &

Linux客户端:

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

Windows服务端:(cmd到frp目录执行,或者在frp目录下建立一个批处理bat文件,输入以下命令,保存并启动即可)

frps.exe -c frps.ini

Windows客户端:(同上)

frpc.exe -c frpc.ini

 

附上几个批处理,方便快速搭建frp:

开启远程桌面端口

启用网络级别认证的远程桌面

 

常用配置文件分享 (重点)

——  使用前提  ——

frp目录下的frps_full、frpc_full 是服务端、客户端的 全部配置 的说明与指导。不明白配置的可以多看看。

以下配置示例均为最简配置。请根据自身的需求、安全性 做更改及调整。

远程桌面

访问内网中的Windows 系统

服务端配置(frps.ini):

[common]
bind_port = 23333
token = lightime

bind_port 这个参数是 frp 的主端口,负责与客户端通信。

token 密码验证。服务端与客户端一致才能连接。

客户端配置(frpc.ini):

[common]
server_addr = 1.1.1.1
server_port = 23333
token = lightime

[rdp]
type = tcp
local_ip = 127.0.0.1
local_port = 3389
remote_port = 6666

server_addr 服务器IP地址

server_port 与bind_port保持一致

local_port 远程桌面服务的本地端口

remote_port 你想要使用的外部端口,可以任意指定

最后,用:1.1.1.1:6666 就能以远程桌面访问客户端。

记住,上述所有端口防火墙都需要开放出来。


ssh

服务端配置(frps.ini):

[common]
bind_port = 23333
token = lightime

客户端配置(frpc.ini):

[common]
server_addr = 1.1.1.1
server_port = 23333
token = lightime

[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 7777

最后,连接 服务器IP 1.1.1.1 及 端口 7777 即可。


web服务

访问内网中的web服务

服务端配置(frps.ini):

[common]
bind_port = 23333
token = lightime

[web]
listen_port = 8888

listen_port 为你想要使用的外部端口,可以任意指定。与客户端配置中的 remote_port 相同。

客户端配置(frpc.ini):

[common]
server_addr = 1.1.1.1
server_port = 23333
token = lightime

[web]
type = tcp
local_ip = 127.0.0.1
local_port = 80
remote_port = 8888

最后浏览器访问 1.1.1.1:8888 即可。


Apache 反代 web服务

编辑 Apache 的主配置文件 httpd.conf,去掉:

LoadModule proxy_module modules/mod_proxy.so

LoadModule proxy_http_module modules/mod_proxy_http.so

前面的 # 号,激活模块

再创建站点文件(一般位于 vhosts 文件夹下):

<VirtualHost *:80>
        ServerName t.abc.com
        ServerAlias e.abc.com
        ProxyPreserveHost On
        ProxyPass / http://127.0.0.1:81/
        ProxyPassReverse / http://127.0.0.1:81/
</VirtualHost>

以上参数请自行替换。

之后重启Apache即可。


使用kcp传输模式(以远程桌面为例)

底层通信协议支持选择 kcp 协议,在弱网环境下传输效率提升明显,但是会有一些额外的流量消耗。

服务端配置(frps.ini):

[common]
bind_port = 23333
kcp_bind_port = 23333
token = lightime

kcp_bind_port 为你想要使用的UDP端口,可以任意指定,可以与TCP端口相同。

客户端配置(frpc.ini):

[common]
server_addr = 1.1.1.1
server_port = 23333
token = lightime
protocol = kcp

[RDP]
type = tcp
local_ip = 127.0.0.1
local_port = 3389
remote_port = 3389

protocol 这里指定使用kcp协议。

 

设置 frp 开机启动(Linux)

这里以服务端frps为例子。客户端也一样,只是改下名字即可

创建 /etc/systemd/system/frps.service 文件:

vim /etc/systemd/system/frps.service

输入以下内容:

[Unit]
Description=frps daemon
After=network.target
Wants=network.target

[Service]
Type=simple
ExecStart=/root/frp/frps -c /root/frp/frps.ini
Restart= always
RestartSec=1min
ExecStop=/usr/bin/killall frps

[Install]
WantedBy=multi-user.target

ExecStart 这里是运行的命令,注意改成自己的路径

After、Wants、Restart、RestartSec、ExecStop 这几个参数是为了确保 frp 开机时能正常启动,不受其它因素干扰

设置开机启动:

systemctl enable frps

这样Linux重启,frp也会跟着跑起来。

以后也能通过 systemctl 命令来控制 frps,如:

systemctl start frps

systemctl stop frps

同理,其他的程序,也能通过这样的方式设置开机启动。

 

frp 开机启动(centos 6.5)

vi /etc/rc.local

在最下面加一行:

/root/frp/frps -c /root/frp/frps.ini

其中,/root/frp/  是你 frp 的目录,请自行更改。重启就能看到 frp 自行启动了。

 

设置 frp 开机启动(Windows)

Windows 下我们可以用 任务计划 来实现 frp 开机启动。

因为特别简单,这里只讲几个细节。

1、需要创建的是 任务,而不是 基本任务;

2、注意选上 不管用户是否登录都要运行 ;

3、操作选项, 起始于 这里要设置 frp 的根目录。

 

 

 

打赏
欢迎转载,请注明出处:轻时代 » 简单高效的内网穿透——frp

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

打赏一下作者,鼓励他发表更多的精彩文章

支付宝扫一扫打赏

微信扫一扫打赏