1. 前言
《使用lanproxy进行内网穿透》一文中,郝同学使用lanproxy搭建了一个内网穿透服务,并且介绍了使用方法。
但是,不知道最近出了什么幺蛾子,居然无法再提供内网穿透服务。本文,就研究一下另外一个内网穿透工具frp。主要参考frp内网穿透搭建,超级简单实用。
2. 准备
1、一台公网服务器(centos7,运行frp-server)。
2、一台内网pc或服务器(运行frp-client)。
3. 服务端配置
3.1. 安装frp
1、进入/opt目录cd /opt
2、访问frp项目,下载最新版的frp,这里下载frp_0.21.0_linux_amd64.tar.gz(包含服务端和客户端)。
1 | wget https://github.com/fatedier/frp/releases/download/v0.21.0/frp_0.21.0_linux_amd64.tar.gz |
3、解压并重命名tar -xzvf frp_0.21.0_linux_amd64.tar.gz
mv frp_0.21.0_linux_amd64 frp
4、编辑frps.inicd frp && vim frps.ini
,参考frps_full.ini,修改如下:
1 | [common] |
5、启动frps./frps -c ./frps.ini
后台启动:screen ./frps -c ./frps.ini
,然后ctrl+A+D。
6、测试访问
在浏览器访问 http://120.77.36.182:7500 ,输入用户名和密码,即可看到frp dashboard。
7、设置开机自启动vim /etc/rc.local
,在exit 0之前添加:
1 | nohup /opt/frp/frps -c /opt/frp/frps.ini & |
其中nohup可以省略。
3.2. nginx反向代理
1、添加域名解析frp
到公网ip。
2、在/etc/nginx/conf.d/目录中,添加frp.voidking.com.conf,内容如下:
1 | server { |
3、重启nginx/usr/sbin/nginx -t
,如果提示缺少目录,那么mkdir -p
创建。
/usr/sbin/nginx -s reload
4、测试访问
访问 http://frp.voidking.com/ ,同样可以看到dashboard界面。
至此,服务端配置完成。
4. 客户端配置
4.1. windows
1、访问frp项目,下载最新版的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窗口,然后执行:.\frpc.exe -c .\frpc.ini
5、本地启动web服务,在80端口提供服务。
6、测试访问
在浏览器访问 http://120.77.36.182:3480 ,即可看到本地80服务。
4.2. linux
1、进入/opt目录cd /opt
2、访问frp项目,下载最新版的frp,这里下载frp_0.21.0_linux_amd64.tar.gz(包含服务端和客户端)。
1 | curl -C - -O -L https://github.com/fatedier/frp/releases/download/v0.21.0/frp_0.21.0_linux_amd64.tar.gz |
3、解压并重命名tar -xzvf frp_0.21.0_linux_amd64.tar.gz
mv frp_0.21.0_linux_amd64 frp
4、编辑frps.inicd frp && vim frpc.ini
,修改如下:
1 | [common] |
5、启动客户端./frpc -c ./frpc.ini
6、测试登录
使用xshell连接本地服务器,IP填入120.77.36.182,端口填入3422,顺利连接。
7、设置开机自启动vim /etc/rc.local
,在exit 0之前添加:
1 | nohup /opt/frp/frpc -c /opt/frp/frpc.ini & |
其中nohup可以省略。
5. 结语
至此,大功告成,nice。frp和lanproxy相比,安装更加简便(不需要java环境),配置更加方便(客户端自己控制外网端口)。最重要的是,在使用centos7作为frp外网服务器的时候,不会出现无法代理22的问题。