前にSoftEther VPN Client を設定したが、起動時に毎回手動で接続するのは面倒なので、自動でVPN接続を行うようにしたい。
環境
・Ubuntu Server 18.04
・VPN Client設定済み
以下公式を参考にしようとしたが、これはRedhat系のものであり、checkcfgが最近のUbuntuには無いようなので、却下。
https://ja.softether.org/4-docs/1-manual/7/7.3
で、色々調べて作成。systemdでも出来るが、init.dを使うことにした。
私の環境による条件は以下の通り。
・VPN接続後、DHCPでIPを取得。
・VPN接続先からでしかアクセスできないファイルサーバがあるので、VPN接続後にスタティックルートを設定する。
同じような環境の方がいるかわからないが、メモに残しておく。
sudo vi /etc/init.d/vpnclient
#! /bin/sh # description: SoftEther VPN Client (DHCP & Static route) # VPN Client Path COMMAND="/usr/local/vpnclient/vpnclient" # VPN name VPNNAME="vpn_dev" # fileserver ip FILESV="(ファイルサーバIP)" # gateway ip to fileserver GW="(ファイルサーバへ経由するゲートウェイIP)" case "$1" in start) $COMMAND start sleep 3 dhclient -e IF_METRIC=10000 $VPNNAME route add $FILESV gw $GW ;; stop) route del $FILESV $COMMAND stop ;; restart) $0 stop sleep 3 $0 start ;; *) echo "Usage: $0 {start|stop|restart}" exit 1 ;; esac exit 0
普段のインターネットはVPN経由にしたくないので、DHCPのメトリックを下げた。
これだけだと再起動時に自動でVPN接続されない。
パーミッションを変更し、update-rc.dで自動起動の登録を行う。
$ sudo chown root:root /etc/init.d/vpnclient $ sudo chmod 755 /etc/init.d/vpnclient $ sudo update-rc.d vpnclient defaults 99 ※以下のようにパスを書くとエラーになるので注意。 $ sudo update-rc.d /etc/init.d/vpnclient defaults 99 update-rc.d: error: unable to read /etc/init.d//etc/init.d/vpnclient
再起動して確認。
$ ifconfig $ route
参考: