分类
技术分享

LEDE软路由frp内网穿透

因为合租平台蛋壳资金问题,半个月前联通师傅前来,把电信宽带换成了联通宽带,发现联通不提供公网IP,即自己本地上网IP和软路由拨号上的IP不是一个IP,在两天的休闲CS: GO死亡时间一边搜索资料一边实践,终于成功了,记录文章用于未来可能需要回顾。

首先,我把原本的动态DNS都关闭并停止运行:

之后我尝试了酷软中心里的自带的“frpc内网穿透”工具,但是其实最终发现似乎有问题,以及尝试了酷软中的docker,想在docker中直接用别人的frp镜像文件,但是发现自己docker不太熟悉,所以放弃了,但是在启动酷软的docker时发现自己软路由分区有问题,软路由里是安装了16G的固态SSD,但是挂载只有系统分区,剩余14G容量没有分区出来,所以SSH连接软路由进行分区并在后台挂载,这时我才知道软路由SSH的密码原来就是后台的登陆密码。

至此,在了解了官方frp文档后,发现直接下载官方的运行更为简单,官方GitHub:https://github.com/fatedier/frp

我先尝试了直接wget下载最新版 frp_0.33.0_linux_amd64.tar.gz

wget https://github.com/fatedier/frp/releases/download/v0.33.0/frp_0.33.0_linux_amd64.tar.gz

因为第一次测试使用一台测试用的腾讯云上海服务器,发现下了3分钟3%不到,故直接放弃,直接本地下载了frp_0.33.0_linux_amd64.tar.gz文件,因为这台服务器上已经有宝塔面板,很方便的上传了,当然可以通过sftp上传也是可以的。

这里我在/root下上传了文件,然后执行解压:

tar -zxvf frp_0.33.0_linux_amd64.tar.gz

得到以下文件,其中frps.ini是服务端配置文件,frpc.ini是客户端配置文件:

frp_0.33.0_linux_amd64/
frp_0.33.0_linux_amd64/frps_full.ini
frp_0.33.0_linux_amd64/frps.ini
frp_0.33.0_linux_amd64/frpc
frp_0.33.0_linux_amd64/frpc_full.ini
frp_0.33.0_linux_amd64/frps
frp_0.33.0_linux_amd64/LICENSE
frp_0.33.0_linux_amd64/frpc.ini
frp_0.33.0_linux_amd64/systemd/
frp_0.33.0_linux_amd64/systemd/[email protected]
frp_0.33.0_linux_amd64/systemd/frpc.service
frp_0.33.0_linux_amd64/systemd/frps.service
frp_0.33.0_linux_amd64/systemd/[email protected]

这里需要运行服务端,所以只要编辑frps.ini,为了方便,我直接使用宝塔文件修改frps.ini:

[common]
bind_port = 7000
dashboard_port = 7001
token = p%ejhH*xmEKTNwL735^n008l#9D8@%
dashboard_user = admin
dashboard_pwd = p%ejhH*xmEKTNwL735^n008l#9D8@%
vhost_http_port = 7002
vhost_https_port = 7003

然后执行运行:

./frps -c ./frps.ini

运行成功:

[root@VM-4-16-centos frp_0.33.0_linux_amd64]# ./frps -c ./frps.ini
2020/09/12 09:00:21 [I] [service.go:178] frps tcp listen on 0.0.0.0:7000
2020/09/12 09:00:21 [I] [service.go:220] http service listen on 0.0.0.0:7002
2020/09/12 09:00:21 [I] [service.go:241] https service listen on 0.0.0.0:7003
2020/09/12 09:00:21 [I] [service.go:277] Dashboard listen on 0.0.0.0:7001
2020/09/12 09:00:21 [I] [root.go:209] start frps success

到此服务器就算完成。


注意以下删除线为废弃方法,请直接跳过查看最新修订内容。

接下来是软路由,首先试图sftp连接软路由来上传frp_0.33.0_linux_amd64.tar.gz,结果发现连不上,原来是LEDE软路由没有sftp,所以先需要安装sftp:

opkg update
opkg install openssh-sftp-server

之后和服务端一样上传文件,解压,然后修改客户端frpc.ini文件:

[common]
server_addr = wangyifang.com
server_port = 7000
token = 4E0#9NaxRIszkChJj5eizzf4i6Dn^q

[ssh]
type = tcp
local_ip = 192.168.100.1
local_port = 22
remote_port = 7004

[ruanluyou]
type = http
local_port = 80
custom_domains = wangyifang.com

然后执行运行客户端:

./frpc -c ./frpc.ini

运行后发现一直出错无法连接,最后发现是不仅需要腾讯云服务器防火墙打开,还需要宝塔的安全里也需要再添加端口,我这里直接开放7000-7100的端口,最终成功了:


接下来是软路由,直接进入lede的酷软中心,安装frpc插件,安装后如果对版本有要求可以先不用开启,直接去GitHub上下载最新版的frp,之后解压,可以继续安装ftp插件后ftp直接覆盖 /koolshare/frpc/ 文件夹下的frpc,然后ssh上lede,执行:

cd /koolshare/frpc
chmod +x frpc

然后回到酷软中心frp下启动frp客户端即可。


最后:

开启frp服务端的自启动工作,在服务器上:

vim /lib/systemd/system/frps.service

建立frps.service,键入内容后保存退出(注意frp版本号应该使用自己当前的版本):

[Unit]
Description=fraps service
After=network.target syslog.target
Wants=network.target

[Service]
Type=simple
ExecStart=/root/frp_0.33.0_linux_amd64/frps -c /root/frp_0.33.0_linux_amd64/frps.ini

[Install]
WantedBy=multi-user.target

之后就可以使用以下命令进行控制:

启动frps:
systemctl start frps

打开自启动:
systemctl enable frps

重启应用:
systemctl restart frps

停止应用:
systemctl stop frps

开启lede上frp客户端的自启动工作,ssh lede:

vim /koolshare/frpdog.sh
#!/bin/sh

RUNNING=`pgrep frpc`
if [ -n "$RUNNING" ]; then
    echo "program is running" > /koolshare/frpdog.log
else
    echo "starting frpc" > /koolshare/frpdog.log
    /koolshare/scripts/frpc_config.sh start > /koolshare/frpdog.log
fi

shift+: wq 保存后

chmod a+x /koolshare/frpdog.sh

再登陆lede网页后台-系统-计划任务,加入下面一行:

*/5 * * * * /koolshare/frpdog.sh #check_frpc#

这样就完成了服务端与客户端的自动启动。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注