私は現在Ubuntu Mate 32ビットを実行するRaspberry Piプロジェクトを進めています。 RPiは海にあり、4Gルーターを介してインターネットに接続されています。 VPNネットワークを介してHMIを実行している陸上の他のコンピュータにデータを送信します。 VNC接続はVPN接続を介しても機能します。
起動時にVPNサーバーに自動的に接続されます。
私の問題は、システムの電源が入り、RPiとルーターが同時に起動すると、RPiが最初に起動し、ネットワークインターフェイスを介して接続しようとしましたが、ルーターがまだ起動していないため失敗することです。 。
RPi は、ルータが最終的に起動して実行されるまで接続を継続しようとします。ただし、このプロセスはVPN接続に影響し、両方のコンピュータがVPNネットワークに接続されていてもVPNネットワークのRPiからデータを受信できません。
その後、RPiを再起動してルーターを接続して実行すると、正常に機能してデータを受信できます。
解決策として、ルータが正しく起動できるように、接続したいネットワークインターフェイスに30秒の遅延を追加したいと思います。
どうすればいいですか?それとも、この問題を解決する方法についてより良い提案がある人はいますか?
答え1
システムサービスで接続が成功した後にVPNを開始するように設定できます。解決策は、After
ユニットファイルのディレクティブを変更することです。たとえば、sshd
サービスはこのファイルにあり、/etc/systemd/system/multi-user.target.wants/sshd.service
オプションAfter
はネットワークの後にサービスを強制的に開始します。
[Unit]
Description=OpenSSH Daemon
Wants=sshdgenkeys.service
After=network.target
[Service]
ExecStart=/usr/bin/sshd -D
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=always
[Install]
WantedBy=multi-user.target
After
したがって、VPNサービスを変更する必要があります。vpn.service