VPN接続した状態でSSH等を行わずに放置していると、自動的にセッションが閉じられてしまいます。
それだと不便なので、VPN接続が切れないようにします。
・環境
Ubuntu 12.04
1. /etc/NetworkManager/dispatcher.d/ にシェルスクリプトを作成します。
sudo vi /etc/NetworkManager/dispatcher.d/03vpnkeepalive
#!/bin/bash # ping 送信先 PING_HOST= # 送信間隔 INTERVAL=300 if [ "$2" = "vpn-up" ]; then ping -W 1 -i ${INTERVAL} ${PING_HOST} & fi if [ "$2" = "vpn-down" ]; then kill $(ps aux | grep "ping -W 1 -i ${INTERVAL} ${PING_HOST}" | \ grep -v grep | awk -F " " '{print $2}') fi
2. 作成したシェルスクリプトに実行権限を付与します。
sudo chmod a+x /etc/NetworkManager/dispatcher.d/03vpnkeepalive
pingの送信先には、VPN接続時にSSHでつなぐホストなどを指定して下さい。
定期的に通信が発生することで、そのセッションが有効だと認識させます。
なので、送信間隔はデフォルト5分(300秒)にしていますが、環境に依っては調整が必要かもしれません。
可能であれば送信間隔を長めにした方が、余計な通信が発生しなくなります。
関連:
VPN接続でmtuを自動設定する