2013/07/11

PPTP の接続を維持する

VPSとの間で張っているVPNの接続を維持するために、超安直なスクリプトを作ったんですが、これが可能になったのも 「nmcli」 というコマンドの存在を知ったからなのでした。

nmcli は gnome の network manager を GUI でなく CLI で制御するツールで、先日何かを調べているときに偶然見つけました。 CLI で PPTP の接続を確立するのに pon を使う方法は、これまたずっと以前にどこかで見つけて一応の成功をみました。ところが何か不安定で、しかも VPN のステータスが gnome panel の表示と一致しないのが気持ち悪いなぁと思って使っていませんでした。その点、nmcli なら結果がちゃんと GUI で表示されて便利です。


# nmcli con up id (name) … 接続
# nmcli con down id (name) … 切断

  (name) は、gnome netrwork manager で設定した「名前」そのものを入れればいいそうで、接続を試みている過程はパネル上のアイコンの変化で分かります。うちの環境ではルート権限がないと実行できなかったので、nmcli くらいならいいだろうということで一般ユーザでも実行できるようにしちゃいました。

で、作ったイージーなスクリプトというのは、

(1) VPN 接続してるかどうか確認
(2) 接続確認なら一定時間待機して (1) に戻る
(3) 断線してるなら nmcli con up を実行
(4) 成功しても失敗しても一定時間待機して (1) に戻る

…というものです。

(追記)

で、その後少し内容を変更して、接続のチェックに使うコマンドを ifconfig から nmcli con status に変更したりしました。nmcli の方がややCPUパワーを多く使うような印象です。

#! /bin/sh

# 接続をキープする vpn の id を設定
vpnid="pptphogehoge"

while :
do
    clear
    echo "--------------------------------"
    echo "keeping VPN coneected..."
    echo "--------------------------------"

    echo `date +%F" "%T`

    if nmcli con status  | grep ${vpnid} >/dev/null

    then
        echo "connected."
        echo "--------------------------------"
        echo "sleeping until next check..."
        sleep 60s
    else
        echo "disconected."
        echo "connecting..."
       
        if nmcli con up id ${vpnid}

        then
            echo "connected."
            echo "--------------------------------"
            echo "sleeping until next check..."
            sleep 60s
        else
            echo "disconnected."
            echo "--------------------------------"
            echo "sleeping until next try..."
            sleep 30s
        fi
    fi
done

(追記ここまで)

接続のチェックは VPN サーバから割り当てられたIPアドレスが見えてればいいことにしました。恥部を見られているような感覚です。

■ Creating VPN Connection on Linux (Ubuntu) using command line (PPTP Client for windows VPN Server) … これがきっかけになったページ
http://winlinuxnet.blogspot.jp/2011/07/creating-vpn-connection-on-linux-ubuntu.html

■ Ubuntuでコマンドを使ってVPNクライアント接続する方法
http://netbuffalo.doorblog.jp/archives/4056722.html

■ nmcli from Ubuntu manuals
http://manpages.ubuntu.com/manpages/maverick/man1/nmcli.1.html

■ Gnome NetworkManager を cli から制御する
http://qiita.com/matoken/items/390bf596e0c69810acd9


----
(Jul.11, 2013、 Jul.13, 2013 追記)

0 件のコメント:

楽天モバイルを台湾で使ってみた

GWに、久しぶりに台湾に赴きました。コロナ禍の間に延命していた台湾大哥大と中華電信の回線のうち中華電信の方を失効させてしまい(なぜ中華電信だけ失効したんだろう)、今回の滞在は台湾大哥大と楽天モバイルの2回線で賄うことにしました。テザリングでAndroidスマホ1台とiPad、Ma...