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 | cd /opt |
2、解压并重命名
1 | tar -xzvf frp_0.21.0_linux_amd64.tar.gz |
3、修改服务端配置 frps.ini
1 | cd frp |
可以参考frps_full.ini,修改后内容如下:
1 | [common] |
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 | cd /etc/systemd/system/ |
frps.service内容为:
1 | [Unit] |
2、启动frps并设置开机自启动
1 | systemctl start 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 | server { |
3、重启nginx
1 | /usr/sbin/nginx -t |
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 | cd /opt |
2、解压并重命名
1 | tar -xzvf frp_0.21.0_linux_amd64.tar.gz |
4、修改客户端配置 frps.ini
1 | cd frp |
修改如下:
1 | [common] |
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 | [common] |
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端口。