
Ubuntu 18.04デスクトップ機から NetworkManager のGUI版 OpenConnect クライアントで接続すると、その間ずっと DTLSエラー がSyslogへ出力され続けます。通信に支障は有りませんがこのままではログが肥大するので、 NetworkManager 版でも有効な解決策を模索します。
Syslogに毎分挙がるDTLSエラー
GL-iNet GL-AR750S OpenWRTルータに以前構築(記事はこちら)したOpenConnect VPNへ、Ubuntu 18.04デスクトップ機からGUIベースのNetworkManager版のOpenConnectクライアントで接続すると、通信に実害はないものの、接続中は次のエラーがクライアント側のSyslogへ毎分出力され続けます。
1 2 |
09:45:10 openconnect[27785]: DTLS handshake failed: Error in the push function. 09:45:10 openconnect[27785]: (Is a firewall preventing you from sending UDP packets?) |
尚、クライアント側Ubuntuのファイアウォールは、無効にしてあります。
サーバ側)OpenWRTのUDP設定
VPNのサーバサイドであるOpenWRTのOpenConnect VPNには、UDPの有効・無効のオプションがあります。一般的にUDPを使った方が速度は高くなることから、デフォルトでUDPは有効になっているはずです。これを無効にしてみるも、クライアント側のDTLSエラーは止まりません。
クライアント側)NetworkManagerの接続設定
クライアント側のNetworkManager OpenConnectのGUIウィンドウには、UDPやDTLSに関したオプションは見当たりません。
解決策
実はこのエラーはOpenConnectを使い始めた頃から確認しており、日頃から調べていたのですが今回、症状は多少異なるものの、ようやく解決策を見つけました(Great Tnx!!)。
/usr/sbin/ にあるOpenConnectのバイナリをシェルスクリプトにすり替え、その中で openconnect --no-dtls を付与すると言うもの。
1 2 3 4 5 6 7 8 9 10 |
$ sudo mv /usr/sbin/openconnect /usr/sbin/openconnect.bin $ sudo vi /usr/sbin/openconnect $ sudo chmod 755 /usr/sbin/openconnect $ ls -l /usr/sbin/openconnect* -rwxr-xr-x 1 root root 53 Aug 15 11:06 /usr/sbin/openconnect -rwxr-xr-x 1 root root 55384 Sep 30 2020 /usr/sbin/openconnect.bin $ cat /usr/sbin/openconnect #!/bin/bash /usr/sbin/openconnect.bin --no-dtls "$@" |
実際に試してみたところ、毎分出ていたDTLSエラーは確かに無くなりました。念のため、iPerfで転送速度を計測してみましたが、DTLS無効による速度低下は無いように思えました。
実は数年前、NetworkManager Openconnectパッケージにこの no-dtls オプションを追加しよう、と言うリクエスト・提案がなされていますが、実現には至っていないようです。
今回のトリッキーな解決策は、Openconnectパッケージが更新されてしまうと元に戻ってしまうので、恒久的とは言えませんが、まだしばらくは使い続ける必要がありそうです。