文章目录



场景描述


使用校外网络不通过学校VPN直接ssh连接到实验室机器,需要一台VPS,可以使用腾讯云的免费一个月的套餐,其网速为3M,用来作远程桌面就显得不够了,如果想远程桌面,建议购买高带宽的VPS。


  • 所需工具​​开源软件frp​
  • 一台VPS,我这边是centos 7.6系统,腾讯云
  • 实验室机器(我这边是ubuntu,如果是windows,区别在于frp客户端的安装运行,配置文件不变,具体可以参考​​官方文档​

具体步骤


前两步实验室机器和VPS上都一样的


一、golang运行环境


frp依赖golang,可以通过​​go version​​检查是否有go环境,这边安装的是 1.15.7的

wget https:///dl/golang/go1.15.7.linux-amd64.tar.gz
sudo tar -zxf go1.15.7.linux-amd64.tar.gz -C /opt
echo 'PATH=/opt/go/bin:${PATH}' >> ~/.bashrc
source ~/.bashrc
# 确认Go环境
go version


二、获取frp包


这一步在腾讯云服务器上可能太慢,最好下好直接传过去

wget https:///fatedier/frp/releases/download/v0.35.0/frp_0.35.0_linux_amd64.tar.gz
tar -zxf frp_0.35.0_linux_amd64.tar.gz
cd frp_0.35.0_linux_amd64


三、安装frp服务器


  • 前面两步在实验室机器和VPS上都要执行,这一步在VPS上执行
  • 配置默认​​7000​​​端口,就想改可以更改​​frps.ini​​文件对应的端口数字,然后在​腾讯云的控制面板防火墙上打开对应的端口
  • 启动vps上的frps服务,一般情况下,腾讯云的服务器应该不会挂掉,如果想要创建守护进程,使得服务挂了可以自己重启,可以参考后面的客户端安装方法。
nohup ./frps -c ./frps.ini &

在实验室机器上测试是否能连上,这里​​公网ip​​指vps的公网ip,出现以下结果,说明防火墙配置ok

$ telnet 公网ip 7000
Trying 公网ip...
Connected to 公网ip.
Escape character is '^]'.

如果出现失败,则应该是防火墙没整好,可以自行解决。


四、安装frp客户端


这一步在实验室机器上执行

修改​​frpc.ini​​文件

[common]
server_addr = 公网ip
server_port = 7000

[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000

# (optional) windows remote desktop
[rdp]
type = tcp
local_ip = 127.0.0.1
local_port = 3389
remote_port = 3389

# (optional) nomachine
[nx]
type = tcp
local_ip = 127.0.0.1
local_port = 4000
remote_port = 4000

配置文件里面还可以增加其它的,然后要在​VPS上确保对应的​​remote_port​​是对外开放的​。


由于实验室机器可能断电,最好做下双层防护,修改BIOS的power manager功能,使得实验室机器在来电后自动重启。


假如实验室电脑重启或者不明因素服务挂掉,我希望它自己能重启,所以需要创建守护进程,让它自己开机自启、挂掉重启。

sudo vim /etc/systemd/system/frpc.service 
# 内容如下
[Unit]
Description=frpc
After=network.target

[Service]
Type=simple
Restart=always
User=yourusername
Group=yourusername

ExecStart=/yourpath/frpc -c /yourpath/frpc.ini

[Install]
WantedBy=multi-user.target

其中,​​yourpath​​​是指frp加压后的目录全地址,​​yourusername​​是指实验室机器上的用户名

  • 保存好,然后执行​​sudo systemctl daemon-reload​​重新加载配置文件
  • 再执行,​​sudo systemctl enable frpc.service​​设置为开机启动
  • 启动服务​​systemctl start frpc.service​


如果不想创建守护进程,则直接执行 nohup ./frpc -c ./frpc.ini &



五、功能验证


在一台连接外网的机器上,可以是手机热点,ssh到服务器

ssh user@公网ip -p 6000

同理,如果是nomachine或者rdp,也直接填公网ip以及读应端口即可



更多内容详见微信公众号:Python研究所

校园网内网穿透_linux