0x00 写在前面
物理机携带不方便怎么办?买云服务器!
云服务器配置不够怎么办?加钱!
钱不够怎么办?搞机!
简单记录一下笔者使用 云服务器 + frp + mini 主机 搭建高配置 “云” 服务器的过程。
0x01 前置条件
首先随便去某个云服务商处购买一个带有公网 IP 的云服务器,配置随意,最低配都行,搞活动的时候挺便宜的。按照网上的说法,也可以去找网络运营商要一个公网 IP ,但是因为笔者有一个现成的带公网 IP 云服务器,所以没走这条路,以后有需要了再探再报。
然后就是准备一个物理机,mini主机也好,常规主机也罢,甚至你可以手搓一个:)
0x02 frp 的安装及配置
frp 是我们用来穿透的工具,胜在轻便、好用、开源、免费 。项目地址:frp github
0x021安装
首先用 uname -m
看一下自己的架构是什么类型的,然后按照对应的类型去下载对应版本的 frp 即可。例:
uname -m
x86_64
// 比如我这里是 Linux 64 位的,那就下载如下的版本
wget https://github.com/fatedier/frp/releases/download/v0.59.0/frp_0.59.0_linux_amd64.tar.gz
// 解压
tar -xzvf frp_0.59.0_linux_amd64.tar.gz
frp_0.59.0_linux_amd64/
frp_0.59.0_linux_amd64/frpc // 客户端程序
frp_0.59.0_linux_amd64/LICENSE
frp_0.59.0_linux_amd64/frpc.toml // 客户端配置文件
frp_0.59.0_linux_amd64/frps.toml // 服务端配置文件
frp_0.59.0_linux_amd64/frps // 服务端程序
// 以上是解压获得的文件
解压出来的就已经是可执行程序了,也不需要额外进行安装。
0x022 使用
完整的官方文档可参见 使用说明
这里我选择的是 xtcp 模式,所以接下来也就以这个为例进行介绍。选用 xtcp 的好处就是建立的是 p2p 连接,双方的通讯不需要依赖服务器转发,上下的带宽也就不会收到公网服务器的影响,不然就现在云服务提供商的小水管可有的我们受的了。
-
首先是在公网服务器上部署 frp 的服务端,虽然是 p2p 模式,但是最开始的连接建立还是要依赖公网服务器做下转发。
// frps.toml bindPort = 7000 // 部署命令 frps -c frps.toml // 添加到服务开机自启 vim /etc/systemd/system/frps.service [Unit] # 服务名称 Description = frp xtcp server After = network.target syslog.target Wants = networl.tatget [Service] Type=simple #启动命令 ExecStart=your_dir/frps -c your_dir/frps.toml [Install] WantedBy=multi-user.target // 启动/开机自启命令 systemctl start frps systemctl restart frps systemctl enable frps // 查看当前服务状态 systemctl status frps
-
在内网物理机上部署 frp 的客户端
// frpc.toml serverAddr = "公网服务器ip" serverPort = 7000 [[proxies]] name = "p2p_ssh" type = "xtcp" secretKey="test_p2p_ssh_xftp" localIP = "127.0.0.1" localPort = 22 // 开机自启,这里刚开机时可能因为网络问题导致服务启动失败,所以要使用强制重启选项 Restart=always vim /etc/systemd/system/frpc.service [Unit] # 服务名称 Description = frp xtcp client After = network.target syslog.target Wants = networl.tatget [Service] Type=simple #启动命令 ExecStart=your_dir/frpc -c your_dir/frpc.toml Restart=always [Install] WantedBy=multi-user.target
-
在任意机器上部署另一端 frp 客户端, 注意:secretKey 要与 serverName 所指定的客户端密钥保持一致
// frpc.toml serverAddr = "公网服务器ip" serverPort = 7000 [[visitors]] name = "p2p_ssh_visitor" type = "xtcp" serverName = "p2p_ssh" secretKey="test_p2p_ssh_xftp" bindAddr = "127.0.0.1" bindPort = 6000 keepTunnelOpen=true // 开机自启,这个看个人需求,一般来说外网的机子都是拿在自己手里的,完全可以需要的时候手动启动一下
至此,简单的穿透环境就已经搭建好了,只需要在外网机使用 ssh 内网用户名@127.0.0.1 -p 6000
访问即可。按照官方文档所说,xtcp 可能会在某些网络情况下无法正常连接,可以换用 stcp 方式使用,这种方式笔者没试过,如果需要使用请参见本节开头的官方文档。
0x03 写在后面
这里笔者只是简单搭建了一个穿透环境来使用 ssh,其他的待我研究研究。不管从配置还是价钱上来讲,都比买服务器要更为划算,前提是那个迷你主机能多撑两年:>