Manjaro的开机启动设置和利用frp配置网络穿透

  1. 随桌面启动而启动
  2. 开机启动服务
  3. frp网络穿透配置:
    1. 内网服务器配置
    2. 外网服务器配置
    3. 内网穿透使用
  4. Reference

  Linux开机启动始终是一个很棒的功能,倘若配合frp的设置,就可以在计算机开机时默认连接到远程服务器,这样就可以始终让设备可以在远程被访问到,今天就记录一下在Manjaro系统中,如何设置开机启动项。全文以frp服务为例,其他服务同理。

  先说结论,archlinux现在主要有两种设置办法,一是设置systemd的service,将脚本作为一个服务,在开机的时候被执行;二是设置一个桌面启动项,随着桌面启动而自动执行我们的脚本。前者执行脚本时间在开机时,但是问题在于frp启动之前需要网络依赖,虽然我设置了在NetworkManager之后启动frp服务,但是依然没有连接上网络(可能是因为连接有线网的时候就是在桌面启动时才会连接,桌面未启动,所以即使网络管理启动了,有线网络也没有加载,所以不成功),因此最终利用随着桌面启动而启动解决了这个问题。但是这种启动办法的缺陷在于,开机后必须利用用户登陆一次,manjaro才会启动桌面,这个启动项才会被执行。之后有时间我再研究一下怎么在桌面启动之前联网,解决这个最后的问题,暂时先利用桌面启动项。

随桌面启动而启动

  • 进入~/.config/autostart/目录下,并创建相应的桌面项。

      cd ~/.config/autostart
      vim frp.desktop
  • 在frp.desktop中写入如下内容:

      [Desktop Entry]
      Type=Application
      Exec="/etc/Frp_run.sh"
      Terminal=yes
      Name=AutoExec
      X-GNOME-Autostart-enabled=true
  • 在/etc/目录下创建frp启动脚本,其中的文件位置和自己frp设置的位置相同即可,这里是我的位置:

      sudo vim /etc/Frp_run.sh
    
      #写入以下内容:
      #!/bin/bash
      cd /usr/local/frp/frp_0.33.0_linux_amd64/
      echo "frp is starting ..."
      ./frpc -c frpc.ini
  • 创建完成后利用chmod赋予执行权限:

      chmod +x Frp_run.sh
  • 以上就完成了所有内容,可以实现Frp_run.sh脚本随manjaro桌面启动而自动运行。

开机启动服务

  相比桌面自动启动项,开机服务要稍微难理解一点,核心可以参考后续的引用3,之后就用我自己的frp服务为例讲述整个设置过程,注意部分文件夹修改和创建文件/文件夹都需要root权限,之后的说明不对这个做特殊说明。

  • 首先,创建一个服务frp.service

      cd /etc/systemd/system/
      vim frp.service
      # frp.service内容:
      [Unit]
      Description="/etc/frp.local Compatibility"
      After=ModemManager.service
    
      [Service]
      Type=oneshot
      ExecStart=/etc/frp.local start
      TimeoutSec=0
      StandardInput=tty
      RemainAfterExit=yes
      SysVStartPriority=99
    
      [Install]
      WantedBy=Multi-user.target
  • 创建服务的运行文件:

      cd /etc/
      vim frp.local
      # frp.local内容:
      #!/bin/sh
      if test -d /etc/frp.local.d; then
          for rcscript in /etc/frp.local.d/*.sh; do
              test -r "${rcscript}" && sh ${rcscript}
          done
          unset rcscript
      fi
  • 利用chmod赋予文件执行权限:

      chmod a+x frp.local
  • 创建frp.local.d文件夹

      mkdir frp.local.d
  • 将脚本移动到frp.local.d文件夹内,并设置开机启动该服务:

      systemctl enable frp.service

  此时就可以重启系统测试你的开机服务有无配置好。

frp网络穿透配置:

  其实开机启动的根本目的是为了自动启动frp进行网络穿透,这也是在假期使用学校服务器的必备配置了。这部分就是讲解这个配置的,非常简单。

  配置以下过程需要的设备:内网下的服务器一台(linux系统并联网)、公网下的服务器一台(我用的是阿里云的,非常好用),其余无。

内网服务器配置

  在内网服务器上下载frp,注意服务器的版本选择合适的即可。下载并解压之后得到以下文件:frpc, frpc.ini, frps, frps.ini和LICENSE等。

  其中的frpc是指frp-client,是在内网服务器上使用的,frps是指frp-server是在公网服务器上用的,这里我们选择内网服务器的frpc来配置:

vim frpc.ini

# 修改其中内容为:
[common]
server_addr = 公网IP
server_port = 7000 #这个端口可以自己设置,并在自己的公网服务器上把这个端口开启即可

[ssh]
type=tcp
local_ip = 内网服务器的IP  #利用ipconfig查看以下自己内网服务器ip是多少,配置在这里即可
local_port = 22       #也可以修改,或者默认22端口即可
remote_port = 6000   #自定义的一个访问端口号,可以修改

  保存上述文件之后,利用以下命令启动:

./frpc -c frpc.ini  #也可以利用nohup和&来使其后台运行

外网服务器配置

  只需要把你上面配置的端口开放即可(我这里是7000端口),阿里云可以在服务器控制台设置端口开放,其他平台应该也是同理。

  另外,需要在外网服务器上配置好frps的部分:

vim frps.ini

# 修改其中内容为:
[common]
bind_port = 7000

  保存上述文件之后,利用以下命令启动:

./frps -c frps.ini  #也可以利用nohup和&来使其后台运行

  因为需要保证长期连接,因此可以把上面这条端口的语句利用screen始终挂在后台或者利用nohup后台运行。

内网穿透使用

  可以使用Xshell、MobaXterm,或者直接利用ssh命令均可登陆到该内网服务器,ip和端口,账户密码如下:

ip:公网服务器IP  port:6000   用户名:内网服务器的用户名  密码:内网服务器的密码

  以上就是本期的全部讲解,希望大家配置好内网穿透不要乱用,可以用来假期在家里访问学校实验室的服务器,好好学习,不要让算力和环境成为假期努力学习的阻碍。

Reference

[1] archlinux/manjaro添加开机启动脚本, 亲测

[2] Manjaro添加开机启动脚本

[3] Archlinux:systemd


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以其他方式联系。

💰

×

Help us with donation