Mythologyli / zju-connect

ZJU RVPN 客户端的 Go 语言实现
GNU Affero General Public License v3.0
313 stars 20 forks source link

希望能加入自动重拨的功能 #12

Closed OctoberCK closed 1 year ago

OctoberCK commented 1 year ago

我把zju-connect挂到nas里了,但现在每隔6-8小时会断线,断线后就没法自动重拨,总是要手动去重新拨号,不知道有没有可能解决这个问题,之前用docker-easyconnect的时候是可以自动重拨的。

Mythologyli commented 1 year ago

感谢反馈!计划在后续版本添加此功能。

你可以先编写一个脚本来自动重启 zju-connect:

#!/usr/bin/bash
while true
do
  /opt/zju-connect -username xxx -password xxx
done
OctoberCK commented 1 year ago

我现在暂时是在系统进程里加上了重启参数,试试看能不能做到守护进程。

[Unit] Description=ZJU Connect After=network.target [Service] Restart=always ExecStart=/opt/zju-connect -config /etc/zju-connect/config.toml [Install] WantedBy=multi-user.target

如果没有问题的话可以再readme.md中做个说明,应该会对大家有帮助

OctoberCK commented 1 year ago

我现在暂时是在系统进程里加上了重启参数,试试看能不能做到守护进程。

[Unit] Description=ZJU Connect After=network.target [Service] Restart=always ExecStart=/opt/zju-connect -config /etc/zju-connect/config.toml [Install] WantedBy=multi-user.target

如果没有问题的话可以再readme.md中做个说明,应该会对大家有帮助

经过我一天的尝试,这个方案是可行的,大家可以参考一下

wjfu99 commented 1 year ago

由于systemctl仅对linux用户有效,mac下对应的为launchctl,且server配置文件为plist格式。

目前我这边经过半天的尝试,参考上述给出了mac下的对应方案,具体如下:

  1. 参考apple 开发者文档新建一个plist文件,示例如下:

    image
  2. 移到系统 /Libaray/LaunchDaemons/目录下,并将所有者设为root:wheel

  3. 执行sudo launchctl load com.zju.connect.plist添加系统守护进程即可。

经多次测试,手动kill进程,均可自动重拨,并且plist中可新增mac下开机自启动选项。

如有需要,我这边可以提交一个pull request。

Mythologyli commented 1 year ago

由于systemctl仅对linux用户有效,mac下对应的为launchctl,且server配置文件为plist格式。

目前我这边经过半天的尝试,参考上述给出了mac下的对应方案,具体如下:

  1. 参考apple 开发者文档新建一个plist文件,示例如下:
image
  1. 移到系统 /Libaray/LaunchDaemons/目录下,并将所有者设为root:wheel
  2. 执行sudo launchctl load com.zju.connect.plist添加系统守护进程即可。

经多次测试,手动kill进程,均可自动重拨,并且plist中可新增mac下开机自启动选项。

如有需要,我这边可以提交一个pull request。

欢迎 PR,在 README.md 中说明

wjfu99 commented 1 year ago

已提交PR

Mythologyli commented 1 year ago

已提交PR

已合并,感谢贡献!

bestucan commented 1 year ago

感觉要在说明里写清楚。或者默认推荐的设置先别 Restart=always。 添加说明,测试成功后,如果希望自动重启,可以添加这句。

我第一次创建服务的时候应该是没设置对,然后服务重启失败次数太多,学校把我IP禁了。等了一会儿才放出来

Mythologyli commented 1 year ago

感觉要在说明里写清楚。或者默认推荐的设置先别 Restart=always。 添加说明,测试成功后,如果希望自动重启,可以添加这句。

我第一次创建服务的时候应该是没设置对,然后服务重启失败次数太多,学校把我IP禁了。等了一会儿才放出来

感谢反馈!已添加

zjuyk commented 1 year ago

我现在暂时是在系统进程里加上了重启参数,试试看能不能做到守护进程。

[Unit] Description=ZJU Connect After=network.target [Service] Restart=always ExecStart=/opt/zju-connect -config /etc/zju-connect/config.toml [Install] WantedBy=multi-user.target

如果没有问题的话可以再readme.md中做个说明,应该会对大家有帮助

建议对这个服务作适当修正,等待 network online 后再启动,这样可以有效规避部分需要登陆认证的网络开机服务运行失败的问题。以及建议使用 on-failure 为 Restart 条件并设置较长的重启间隔规避短时间内的多次服务重启尝试(当然 systemd 默认最大限制是 5 次)

zjuyk commented 1 year ago
[Unit]
Description=ZJU Connect
After=network-online.target
Wants=network-online.target

[Service]
Restart=on-failure
RestartSec=5s
ExecStart=/usr/bin/zju-connect -config /etc/zju-connect/config.toml

[Install]
WantedBy=multi-user.target

这是我在 Arch 上的配置,Arch 系的用户可以看看 zju-connect-bin,已加入 cn 源。

Mythologyli commented 1 year ago

我现在暂时是在系统进程里加上了重启参数,试试看能不能做到守护进程。

[Unit] Description=ZJU Connect After=network.target [Service] Restart=always ExecStart=/opt/zju-connect -config /etc/zju-connect/config.toml [Install] WantedBy=multi-user.target

如果没有问题的话可以再readme.md中做个说明,应该会对大家有帮助

建议对这个服务作适当修正,等待 network online 后再启动,这样可以有效规避部分需要登陆认证的网络开机服务运行失败的问题。以及建议使用 on-failure 为 Restart 条件并设置较长的重启间隔规避短时间内的多次服务重启尝试(当然 systemd 默认最大限制是 5 次)

感谢反馈,已更改!