VPN接続が切れまくる
コロナの影響でリモートワークになって3ヶ月。
序盤からイライラはしていたのだが、この日は我慢がピークを迎えた。
GitHubでPR作ろうとブラウザをポチポチしていたら、1クリックする度にVPNが切断される。
GitHubはエンタープライズ版を利用しておりVPN接続が必須、VPNはFortiClientというクライアントを使用しており、OneLoginによる管理なので、毎回2段解認証のアクセスコードを入力しなくてはならない。
原因
なるほど。確かにこの日は裏でXcodeビルドをぶん回していた。どうやらCPU負荷が高いと、VPN接続のバックグランドプロセスが蔑ろにされてしまうことが原因らしい。
デザイナーとかはAdobe製品が足枷になることがあるだろうか。
対策
VPN接続のプロセスを探す
ps
コマンドでプロセスを一覧、VPNクライアントの FortiClient
で grep
してみる。
$ ps alxww | grep -i FortiClient
502 587 1 0 31 0 5995936 12328 - S ?? 0:05.24 /Library/Application Support/Fortinet/FortiClient/bin/CredentialStore
502 661 1 0 46 0 6626232 56360 - S ?? 7:47.69 /Applications/FortiClient.app/Contents/Resources/runtime.helper/FortiClientAgent.app/Contents/MacOS/FortiClientAgent
0 730 1 0 20 0 5996320 9860 - Ss ?? 0:08.35 /Library/Application Support/Fortinet/FortiClient/bin/fctservctl
502 773 1 0 46 0 6545264 22888 - S ?? 2:58.96 /Applications/FortiClient.app/Contents/Resources/runtime.helper/FortiClientAgent.app/Contents/Resources/runtime.helper/FctMiscAgent.app/Contents/MacOS/FctMiscAgent
0 14216 1 0 20 0 5997792 19772 - Ss ?? 2:53.84 /Library/Application Support/Fortinet/FortiClient/bin/fcconfig
0 75603 1 0 20 0 4865952 6772 - Ss ?? 0:00.31 /Library/Application Support/Fortinet/FortiClient/bin/fctctld
0 75613 75603 0 20 0 4927400 13204 - S< ?? 0:16.76 /Library/Application Support/Fortinet/FortiClient/bin/sslvpnd connect -s {ip_address} -o 20443 -b -i {your_domain}
502 80355 1379 0 31 0 4409328 884 - R+ s001 0:00.01 grep --color=auto --exclude-dir=.bzr --exclude-dir=CVS --exclude-dir=.git --exclude-dir=.hg --exclude-dir=.svn --exclude-dir=.idea --exclude-dir=.tox -i FortiClient
なんかいろいろ出てきたが、7行目の sslvpnd
のプロセスがそれだろう。
2列目の 75613
がプロセスIDで、6列目の 0
が優先度である。
優先度は -20 ~ 20
の範囲を取り、数が小さいほど優先度が高い。-20
が最高優先度、0
がデフォルトで 20
が最低。
デフォルトの優先度になっていたので、上げてみよう。
プロセスの優先度を変更する
renice
コマンドを使って優先度を変更する。おそらく sudo
が必要。
テキトーに最大値との間をとって -10
にしてみる。
# sudo renice {priority} {process_id}
$ sudo renice -10 75613
変更されたことを確認する
もう一度 ps
を叩いて、優先度が変更されたことを確認する。
# ps alxww | grep -i {process_id}
$ ps alxww | grep -i 75613
0 75613 75603 0 20 -10 4927400 13204 - S< ?? 0:15.98 /Library/Application Support/Fortinet/FortiClient/bin/sslvpnd connect -s 39.110.207.155 -o 20443 -b -i {your_domain}
結果: 切れにくくなった
日に何度も再接続を余儀なくされていたが、「1日に1度切れるかどうか」程度まで減少した。
成功である。
これでVPNの再接続に煩わされることなく作業ができるようになった。
課題
しかし、課題も残っている。
たまに ps
コマンドを叩いてみると、優先度が 0
に戻っていることがある。というか、プロセスIDが変わっている。
どうやら、何かの拍子に接続が切れると自動で再接続を試みてくれているらしく、それで回復できたとしても別プロセスなので優先度が戻ってしまうのだ。
あとはPCを再起動する度に設定しなければいけない点だ。
切れにくくなったとは言え、この状態では煩わしさは完全には排除できない。
まだ改善の余地が残されている。