@
Tink @
wwqgtxx 狗洞断线重连后端口已占用这个 bug 确实挺难受的
下午尝试了一下用 systemd 管理狗洞,用两个脚本分别控制狗洞的启动和停止
直接运行两个脚本可以正常启停,不过到了 systemd 里一启动就退了,也没看到什么报错
下面两个脚本分别是启动和停止狗洞的,为了防止出现端口已占用的情况,启动前先把 server 上之前的狗洞给停了再启动,停止的脚本也是把 server 和 client 都停了
```
pi@raspberrypi:~ $ cat /usr/local/bin/
dtunnel-up.sh #!/bin/bash
ssh -f -i /home/pi/.ssh/$SERVER_SSH_KEY root@$SERVER_IP -p $SERVER_SSH_PORT sudo systemctl stop dtunnel-server
sleep 3
ssh -f -i /home/pi/.ssh/$SERVER_SSH_KEY root@$SERVER_IP -p $SERVER_SSH_PORT sudo systemctl start dtunnel-server
/usr/bin/screen -dmS dtunnel /usr/local/bin/dog-tunnel -service $SERVER_IP:1234 -v -action 127.0.0.1:80 -encrypt -xor $XOR -local :80 -pipe 5 -r
```
```
pi@raspberrypi:~ $ cat /usr/local/bin/
dtunnel-down.sh #!/bin/bash
#set -e
/usr/bin/screen -S dtunnel -X quit
ssh -f -i /home/pi/.ssh/$SERVER_SSH_KEY root@$SERVER_IP -p $SERVER_SSH_PORT sudo systemctl stop dtunnel-server
```
下面是 client 上狗洞的 systemd,启动和停止分别执行上面两个脚本,可惜用 systemd 运行就不行了,运行 sudo systemctl start http-dtunnel 后查看也没开 screen 会话,直接运行 sudo /usr/local/bin/
dtunnel-up.sh 的话会建立一个名为 dtunnel 的会话,然后在会话里连接 server
```
pi@raspberrypi:~ $ cat /etc/systemd/system/http-dtunnel.service
[Unit]
Description=Dog tunnel for http
After=network.target
[Service]
ExecStart=/usr/local/bin/
dtunnel-up.shExecStop=/usr/local/bin/
dtunnel-down.shRestart=always
RestartSec=60
[Install]
WantedBy=multi-user.target
```