Manjaro的开机启动设置和利用frp配置网络穿透
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添加开机启动脚本
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以其他方式联系。