使用frp实现内网穿透

简介

frp 是一个可用于内网穿透的高性能的反向代理应用,支持 tcp, udp 协议,为 http 和 https 应用协议提供了额外的能力,且尝试性支持了点对点穿透。官方说明文档是https://github.com/fatedier/frp/blob/master/README_zh.md,使用之外,请熟读一下说明文档。

https://gofrp.org/docs/

虽然说frp是内网穿透工具,其主要的运用场景是控制家用的设备,但是由于手上有一些服务器没有公网IP,远程比较麻烦,就使用了这个方案。

frps服务器配置

由于需要在家里的路由器(openwrt系统)上面安装frp服务器程序 ,所以首先在https://github.com/fatedier/frp/releases下面下载linux_arm64.tar.gz这个包,

1
2
3
4
5
6
7
8
9
10
11
12
13
root@route:~# cat /etc/frp/frps.ini 
[common]
bind_port = 7000
vhost_http_port = 虚拟主机的监听端口
subdomain_host = 内网域名
dashboard_port = 控制面板的端口
dashboard_user = 用户名
dashboard_pwd = 控制面板的密码
token = token密码
max_pool_count = 10
log_file = ./frps.log
log_level = info
log_max_days = 3

然后运行/etc/frps/frps -c /etc/frps/frps.ini &即可。

frpc客户端配置

配置文件

在需要被控制的机器上面开启windows远程(此步略),然后修改frpc.ini配置文件,如下:

1
2
3
4
5
6
7
8
9
10
11
12
[common]
server_addr = 路由器的IP
server_port = 7000
token = token密码

[workpc]
type = tcp
local_ip = 127.0.0.1
local_port = 3389
remote_port = 7200 #远程的端口
use_encryption = true #开启加密
use_compression = true #开启压缩

windows控制

如果仅仅是临时使用,可以直接运行D:\frp\frpc.exe -c D:\frp\frpc.ini即可,如果想实现开机启动,有2个方法,一是写vbs脚本,开机时运行这个脚本即可,在windows上面运行,打开目录,输入%programdata%\Microsoft\Windows\Start Menu\Programs\Startup 或者 shell:startup ,然后创建frpc.vbs文件,输入以下内容即可:

1
2
set ws=WScript.CreateObject("WScript.Shell")
ws.Run "D:\frp\frpc.exe -c D:\frp\frpc.ini",0

但是此方法我一直没有成功,就使用注册为服务的方法:

先下载nssm工具,https://nssm.cc/ci/nssm-2.24-101-g897c7ad.zip ,下载并解压压缩包,使用cmd进入对应系统版本工具的路径。(请使用管理员身份运行cmd),在cmd中键入命令nssm install serviceName,进入服务编辑页面,选择frpc.exe的路径,填写好参数,然后再点击install service即可,如下:

1559265656793

这样,运行services.msc就可以看到刚刚注册好的服务,这样自动启动即可。

centos 7配置

先新建frpc.service,输入如下内容可以。

1
2
3
4
5
6
7
8
9
10
11
12
13
vim /lib/systemd/system/frpc.service
[Unit]
Description=fraps service
After=network.target syslog.target
Wants=network.target

[Service]
Type=simple
#启动服务的命令(此处写你的frpc的实际安装目录)
ExecStart=/your/path/frpc -c /your/path/frpc.ini

[Install]
WantedBy=multi-user.target

写完之后,直接systemctl start frpc就可以了。

centos 6配置

创建/etc/init.d/frps文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# cat /etc/init.d/frps 
#!/bin/bash

# chkconfig: - 85 15
# # description: frp init script

RETVAL=0
PROG="frps"
EXEC="/usr/local/frps/frps"
LOCKFILE="/var/lock/subsys/$PROG"
OPTIONS="-c /usr/local/frps/frps.ini"

# Source function library.
if [ -f /etc/rc.d/init.d/functions ]; then
. /etc/rc.d/init.d/functions
else
echo "/etc/rc.d/init.d/functions is not exists"
exit 0
fi

start() {
if [ -f $LOCKFILE ]
then
echo "$PROG is already running!"
else
echo -n "Starting $PROG: "
#$EXEC $OPTIONS &
nohup $EXEC $OPTIONS >/dev/null 2>&1 &
RETVAL=$?
[ $RETVAL -eq 0 ] && touch $LOCKFILE && success || failure
echo
return $RETVAL
fi
}

stop() {
echo -n "Stopping $PROG: "
killproc $EXEC
RETVAL=$?
[ $RETVAL -eq 0 ] && rm -r $LOCKFILE && success || failure
echo
}

restart ()
{
stop
sleep 1
start
}

case "$1" in
start)
start
;;
stop)
stop
;;
status)
status $PROG
;;
restart)
restart
;;
*)
echo "Usage: $0 {start|stop|restart|status}"
exit 1
esac
exit $RETVAL

参考链接

将frpc注册为windows服务:https://aikiller.github.io/2018/03/14/%E5%B0%86frpc%E6%B3%A8%E5%86%8C%E4%B8%BAwindows%E6%9C%8D%E5%8A%A1/

https://blog.csdn.net/x7418520/article/details/81077652

  • 本文作者: wumingx
  • 本文链接: https://www.wumingx.com/tools/frpc.html
  • 本文主题: 使用frp实现内网穿透
  • 版权声明: 本站所有文章除特别声明外,转载请注明出处!如有侵权,请联系我删除。
0%