Met de volgende stap kun je Knockd handmatig starten:
sudo service knockd stop
sudo knockd -D -v
De beloning voor de moeite is een nieuw exemplaar van Knockd in een terminalvenster. Dat is verantwoordelijk voor de activering en geeft daar ook statusinformatie door. Het afvuren van Knockd-commando’s op het werkstation levert nu het gewenste resultaat op.
Voor foutanalyse kun je ook kijken naar de inhoud van het systemd-logboek met het commando:
sudo systemctl status knockd
Een foutmelding daarbij laat zien dat het doel network-online.target op de Raspberry Pi niet betrouwbaar werkt. Systemd gebruikt dat meestal om programma’s of daemons te activeren die afhankelijk zijn van de netwerkstack. Een handige oplossing is eenvoudig de servicedefinitie aanpassen met het commando:
sudo nano /lib/systemd/system/knockd.service
[Unit]
Description=Port-Knock Daemon
After=network-online.target
Wants=network-online.target
Requires=network-online.target
Before=sshd.service
Documentation=man:knockd(1)
[Service]
Restart=on-failure
RestartSec=5s
EnvironmentFile=-/etc/default/knockd
ExecStart=/usr/sbin/knockd $KNOCKD_OPTS
ExecReload=/bin/kill -HUP $MAINPID
KillMode=mixed
SuccessExitStatus=0 2 15
ProtectSystem=full
CapabilityBoundingSet=CAP_NET_RAW CAP_NET_ADMIN
[Install]
WantedBy=multi-user.target
Alias=knockd.service
De attributen Restart en RestartSec geven aan systemd aan dat de service altijd opnieuw moet worden gestart in geval van een fout. Dit is ook logisch als het om de een of andere reden mogelijk zou zijn om Knockd te misleiden. Last but not least is dan een update van de Knockd-status vereist die je kunt uitvoeren met het commando:
sudo systemctl enable knockd.service
sudo service knockd start
Vanaf dit moment kun je de Raspberry Pi opnieuw starten zoals je wilt. Knockd zal nu zichtbaar zijn in de uitvoer van het commando “ps aux” met een filter.