赞
踩
由于工作需要使用服务器的IP是内网IP,在家之后就没有办法远程办公了。所以在网上搜了一些关于内网穿透的一些教程。最开始使用的是cpolar,这个不需要root权限,也不需要公网ip,就直接可以做内网穿透,但是缺点就是,他提供的连接隧道是不稳定的,每个24小时都会切换一下端口,所以不符合我的需求。但是在后面说教程的时候,我会简单的提一下这个该怎么用。主要还是讲一下关于frp内网穿透。
注意frp我试了一下,穿透一台客户端还行,穿透多台的时候会出问题,建议大家下载0.58.1版本的frp,文章内容我也做了一些更新。—2024.6.9
cpolar一般用于临时内网穿透,首先需要去官网注册一个账号:https://www.cpolar.com,选择免费的套餐就可以了,这个我就不赘述了。
一般内网穿透的进程都需要后台运行的,直接终端运行的话就是前台进程,关闭当前终端之后这个进程也会被随之杀死,所以是不可行的。当然可以使用nohup
命令,但是不方便管理,screen
是一个不错的选择用于管理不同的任务,如果你已经安装过了screen就可以跳过这个步骤了,这里讲的是不需要root安装screen。
#进入你想安装screen的目录下面,我一般是选择一个创建一个app目录,然后在下面放一些应用。 cd mkdir app cd app & mkdir screen cd screen pwd #复制pwd的输出的路径 #进入scream目录之后开始下载安装包 wget http://ftp.gnu.org/gnu/screen/screen-4.9.0.tar.gz #解压 tar -zxvf screen-4.9.0.tar.gz cd screen-4.9.0 #运行指令产生编译环境,编译、安装 ./autogen.sh ./configure --prefix= 粘贴刚才复制的路径 make make install #添加环境变量 vim ~/.bashrc #在最后一行追加如下内容,保存退出 export PATH=粘贴刚才复制的路径/bin:$PATH #更新环境变量 source ~/.bashrc
#在app目录下创建一个新的文件夹cpolar
cd ~/app & mkdir cpolar
#下载解压
wget https://static.cpolar.com/downloads/releases/3.3.12/cpolar-stable-linux-amd64.zip
unzip cpolar-stable-linux-amd64.zip
cd cpolar-stable-linux-amd64/
#复制pwd的输出的路径
pwd
#添加cpolar的环境变量
vim ~/.bashrc
#最后一行追加如下内容
export PATH=粘贴刚才复制的路径:$PATH
#更新环境变量
source ~/.bashrc
cpolar version
如果能显示cpolar版本号,则证明环境变量配置正确。
登录cpolar官网后台,点击左侧的验证,查看自己的认证token,复制里面的命令运行即可。
随后我们开启一个screen,开启cpolar进程
#开启一个新的screen,名称为keep_cpolar
screen -S keep_cpolar
#启动cpolar
cpolar start-all -daemon=on -dashboard=on -log=stdout
先按ctrl+A,再按ctrl+D,退出screen界面,实现后台挂载。简单说一下screen的常用命令
screen -S cpolar #创建名称为cpolar的screen窗口
screen -ls #查看有哪些窗口
screen -r name #回到对应的窗口
exit #结束掉当前窗口,返回之前的窗口,注意直接杀掉了就没了,要用ctrl+A,再按ctrl+D实现后台挂载
进入后台管理,浏览器输入http://你的局域网ip:9200,如跳出以下界面成功访问。账号密码为cpolar官网注册的账号密码,你可以在改面板中创建管理隧道。
frp内网穿透更稳定点,不会周期性的更换端口号,但是需要在服务端有root权限,且服务端是一个公网ip。简单说frp分为三个部分
可见cpolar虽然没找我们要公网IP,是因为他自己提供了中介服务器C,所以找我们收费升级更稳定更快的服务。
一般linux服务器都是x86的我们下载https://github.com/fatedier/frp/releases/download/v0.58.1/frp_0.58.1_linux_amd64.tar.gz这个就好了。你可以运行uname -m
来确定自己处理器是什么架构的,来下载对应的安装包
输出 | 架构 |
---|---|
i386 , i686 | i386 |
x86_64 | amd64 |
arm , armel | arm_garbage |
armv7l , armhf | armv7** |
aarch64 , armv8l | arm64 |
mips | mips* |
mips64 | mips64* |
下载完成之后,将其解压整个命名为frp,然后放在app目录下,就不赘述了。
可以看到里面主要有这些文件,其中frpc表示frp的client客户端需要运行的程序,也就是内网中需要被穿透的主机。frps表示中介服务器,即带有公网IP的服务器作为服务端。
编辑frps.ini
vi frps.toml #将其内容修改如下 # frps.toml bindPort = 7000 # 服务端与客户端通信端口 transport.tls.force = true # 服务端将只接受 TLS链接 auth.token = "public" # 身份验证令牌,frpc要与frps一致 # Server Dashboard,可以查看frp服务状态以及统计信息 webServer.addr = "0.0.0.0" # 后台管理地址 webServer.port = 7500 # 后台管理端口 webServer.user = "admin" # 后台登录用户名 webServer.password = "admin" # 后台登录密码
编辑完成之后,我们同样创建一个frps的screen然后运行
screen -S frps
./frps -c frps.toml
#CtrlA+D后台挂起
可以在浏览器中输入服务器C的公网IP:7500查看是否有frp的面板。如果有,则服务端的frp配置完成。
同样还是需要下载frp的文件,解压。不过这次我们配置的文件是frpc.ini
vi frpc.toml (注意哦,不是frps.toml) # 客户端配置 # frpc.toml transport.tls.enable = true # 从 v0.50.0版本开始,transport.tls.enable的默认值为 true serverAddr = "x.x.x.x" serverPort = 7000 # 公网服务端通信端口 auth.token = "public" # 令牌,与公网服务端保持一致 [[proxies]] name = "test-http" type = "tcp" localIP = "127.0.0.1" # 需要暴露的服务的IP localPort = 9000 # 将本地9000端口的服务暴露在公网的6060端口 remotePort = 6060 # 暴露服务的公网入口 [[proxies]] name = "ssh" type = "tcp" localIP = "127.0.0.1" localPort = 22 remotePort = 6000
编辑完成之后,我们同样创建一个frpc的screen然后运行
screen -S frpc
./frpc -c frpc.toml
#CtrlA+D后台挂起
如果提示没有什么关键字啥的,那就把注释去掉,新版的好像不支持注释了。如果提示success那就是部署完成了。
现在我们可以在家里的连接内网的服务器了。
ssh -p 6000 name@xxx.xxx.xxx.xxx
要注意到这的xxx.xxx.xxx.xxx是中介服务器C的公网IP,但是这里的name是被连接服务器A的用户名。这里使用的6000端号是和被连接服务器A中frpc.ini配置文件中的remote_port端口对应的。输入的密码也应该是被连接服务器A的name用户的密码,而并不是中介服务器C的密码。
特别注意:中介服务器B的相关端口一定要开放,不然是无法访问的主要就是6000 7500.
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。