一个计算机技术爱好者与学习者

0%

使用frp进行内网穿透

1. 前言

《使用lanproxy进行内网穿透》一文中,郝同学使用lanproxy搭建了一个内网穿透服务,并且介绍了使用方法。

但是,lanproxy不太稳定,最近无法使用它正常进行内网穿透,访问内网主机的22端口。
因此,本文学习另外一个内网穿透工具frp的安装配置方法,用做lanproxy的替代。

参考文档:

2. 机器资源

1、一台公网服务器(centos7,运行frp-server),IP为 120.77.36.182。
2、一台内网pc或服务器(运行frp-client)。

3. 安装配置frps

3.1. 安装并测试启动frps

1、下载frp程序
访问frp releases,下载frp程序,本文中下载frp_0.21.0_linux_amd64.tar.gz(包含服务端和客户端)。

1
2
3
4
cd /opt
wget https://github.com/fatedier/frp/releases/download/v0.21.0/frp_0.21.0_linux_amd64.tar.gz
# or
curl -C - -O -L https://github.com/fatedier/frp/releases/download/v0.21.0/frp_0.21.0_linux_amd64.tar.gz

2、解压并重命名

1
2
tar -xzvf frp_0.21.0_linux_amd64.tar.gz
mv frp_0.21.0_linux_amd64 frp

3、修改服务端配置 frps.ini

1
2
cd frp
vim frps.ini

可以参考frps_full.ini,修改后内容如下:

1
2
3
4
5
6
7
8
9
[common]
bind_addr = 0.0.0.0
bind_port = 7000

dashboard_addr = 0.0.0.0
dashboard_port = 7500
dashboard_user = voidking
dashboard_pwd = voidking
token = 12345678

4、测试启动frps

1
./frps -c ./frps.ini

后台启动参考《Linux后台运行脚本或程序》

5、测试访问
在浏览器访问 http://120.77.36.182:7500 ,输入用户名和密码,即可看到frp dashboard。

3.2. 开机自启动frps

3.2.1. 基于systemd(推荐)

1、创建systemd服务配置文件

1
2
cd /etc/systemd/system/
vim frps.service

frps.service内容为:

1
2
3
4
5
6
7
8
9
[Unit]
Description=frps
After=network.target

[Service]
ExecStart=/opt/frp/frps -c /opt/frp/frps.ini

[Install]
WantedBy=multi-user.target

2、启动frps并设置开机自启动

1
2
3
systemctl start frps
systemctl status frps
systemctl enable frps

3.2.2. 基于SysVinit

编辑 rc.local 文件:

1
vim /etc/rc.local

在exit 0之前添加:

1
nohup /opt/frp/frps -c /opt/frp/frps.ini &

其中nohup可以省略。

3.3. 探活重启frps

1
*/5 * * * * systemctl is-active --quiet frps.service || systemctl start frps.service

4. nginx反向代理frps

1、添加域名解析frp到公网ip。

2、在/etc/nginx/conf.d/目录中,添加frp.voidking.com.conf,内容如下:

1
2
3
4
5
6
7
8
9
10
11
server {
listen 80;
server_name frp.voidking.com;
charset utf-8;
location /{
proxy_set_header Host $host;
proxy_set_header X-Forward-For $remote_addr;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://127.0.0.1:7500;
}
}

3、重启nginx

1
2
/usr/sbin/nginx -t
/usr/sbin/nginx -s reload

4、测试访问
访问 http://frp.voidking.com/ ,同样可以看到dashboard界面。

至此,服务端配置完成。

5. 安装配置frpc

5.1. linux中安装配置frpc

1、下载frp程序
访问frp releases,下载frp程序,本文中下载frp_0.21.0_linux_amd64.tar.gz(包含服务端和客户端)。

1
2
3
4
cd /opt
wget https://github.com/fatedier/frp/releases/download/v0.21.0/frp_0.21.0_linux_amd64.tar.gz
# or
curl -C - -O -L https://github.com/fatedier/frp/releases/download/v0.21.0/frp_0.21.0_linux_amd64.tar.gz

2、解压并重命名

1
2
tar -xzvf frp_0.21.0_linux_amd64.tar.gz
mv frp_0.21.0_linux_amd64 frp

4、修改客户端配置 frps.ini

1
2
cd frp
vim frpc.ini

修改如下:

1
2
3
4
5
6
7
8
9
10
[common]
server_addr = 120.77.36.182
server_port = 7000
token = 12345678

[ssh_3422]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 3422

5、启动客户端

1
./frpc -c ./frpc.ini

6、测试登录
使用xshell连接本地服务器,IP填入120.77.36.182,端口填入3422,顺利连接。

7、设置开机自启动
配置方法参考【frps设置开机自启动】一节,frps改成frpc即可。

8、探活重启frpc

1
*/5 * * * * systemctl is-active --quiet frpc.service || systemctl start frpc.service

5.2. windows中安装配置frpc

1、下载frp程序
访问frp releases,下载frp程序,这里下载frp_0.21.0_windows_amd64.zip(包含服务端和客户端)。

2、解压frp_0.21.0_windows_amd64.zip,并重命名为frp。

3、修改客户端配置
编辑frp/frpc.ini文件,修改为:

1
2
3
4
5
6
7
8
9
10
[common]
server_addr = 120.77.36.182
server_port = 7000
token = 12345678

[web_3480]
type = tcp
local_ip = 127.0.0.1
local_port = 80
remote_port = 3480

server_addr是服务器端的公网IP地址,server_port是frp服务端口号,auto_token是连接服务器的口令,必须和服务器保持一致。

web_3480是客户端和服务端之间的通道名,每个客户端必须不一样,remote_port是服务器端对外提供本机服务的端口号。

4、启动客户端
shift+右键,在此处打开powershell窗口,然后执行:

1
.\frpc.exe -c .\frpc.ini

5、本地启动web服务,在80端口提供服务。

6、测试访问
在浏览器访问 http://120.77.36.182:3480 ,即可看到本地80服务。

6. 结语

至此,大功告成,nice。
frp和lanproxy相比,安装更加简便(不需要java环境),配置更加方便(客户端自己控制外网端口)。最重要的是,服务端主机是centos系统,也可以正常代理内网的22端口。

  • 本文作者: 好好学习的郝
  • 原文链接: https://www.voidking.com/dev-frp/
  • 版权声明: 本文采用 BY-NC-SA 许可协议,转载请注明出处!源站会即时更新知识点并修正错误,欢迎访问~
  • 微信公众号同步更新,欢迎关注~