AquaNet IT Business
One stop shopping for the business
SECOND DECADE

from 2010 when it's begining Smartphone age.

Raspberry PiにOpenVPNでリモートアクセス

12月
11
2013
Back
HOME


友人のアマチュア無線用ノードをサポートするため,ノード用ラズベリーパイ(Raspberry Pi=Debian系Linux)にリモートアクセスする必要に迫られ,VPNサーバーをインストールしました。 ほとんど100% Raspberry Pi OpenVPN Server Tutorial の焼き直しです。ちょっと迷ったところなどを加味して今後のために残します。

OpenVPN Server のセットアップ


  1. su にならず,sudo を使って試したのですがいくつか実行できないフレーズがありました。取りあえずsu になっておきます。

  2. $ sudo su

  3. アップデートをして,関連ファイルをインストールします。

  4. # apt-get update
    # apt-get upgrade
    # apt-get install openvpn openssl

  5. フォルダ /etc/openvpn の中に入り,/usr/share/doc/openvpn/examples/easy-rsa/2.0 というフォルダを丸ごとeasy-rsa という名前に変えて /etc/openvpn の直下にコピーします。

  6. # cd /etc/openvpn
    # cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0 ./easy-rsa

  7. そのフォルダ内の「vars」というファイルを編集します。

  8. # nano easy-rsa/vars
     GNU nano 2.2.6          File: easy-rsa/vars
    # easy-rsa parameter settings
    # NOTE: If you installed from an RPM,
    # don’t edit this file in place in
    # /usr/share/openvpn/easy-rsa —
    # instead, you should copy the whole
    # easy-rsa directory to another location
    # (such as /etc/openvpn) so that your
    # edits will not be wiped out by a future
    # OpenVPN package upgrade.
    # This variable should point to
    # the top level of the easy-rsa
    # tree.
    export EASY_RSA=”/etc/openvpn/easy-rsa”
    #
    # This variable should point to
    # the requested executables
    #
    export OPENSSL=”openssl”
    export PKCS11TOOL=”pkcs11-tool”
    export GREP=”grep”
    青文字で記した部分(元の記述 export EASY_RSA=”‘pwd'”)を変更します。([Ctrl]+ O, [Enter], [Ctrl]+ x で保存)

    # . ./easy-rsa/vars
    # ./easy-rsa/clean-all
    # cd easy-rsa
    # ln -s openssl-1.0.0.cnf openssl.cnf
    # cd ..

  9. 最初の2行で初期化します。さらに east-rsa フォルダに入って OpenSSL のリンクを張り, フォルダから出ます。

  10. # ./easy-rsa/build-ca OpenVPN

  11. 各項目にデータを入力し認証用のファイルを作成します。

  12. []内は米国での例ですので[JP][SHIGA][OmiHachiman]などのように質問に答えます。 空欄にしないようにとのメッセージが出ますので失敗しないためにも最初はメッセージに従った方が無難です。

    # ./easy-rsa/build-key-server server
    # ./easy-rsa/build-key client1
    # ./easy-rsa/build-dh

  13. 同様にサーバ/クライアント向けにキーファイルを生成します。特に build-dh コマンドは数分かかる場合があります。

  14. # nano openvpn.conf

  15. 新規ファイルに次の内容をコピーする。

  16.  GNU nano 2.2.6          File: openvpn.conf
    dev tun
    proto udp
    port 1194
    ca /etc/openvpn/easy-rsa/keys/ca.crt
    cert /etc/openvpn/easy-rsa/keys/server.crt
    key /etc/openvpn/easy-rsa/keys/server.key
    dh /etc/openvpn/easy-rsa/keys/dh1024.pem
    user nobody
    group nogroup
    server 10.0.0.0 255.255.255.0
    persist-key
    persist-tun
    status /var/log/openvpn-status.log
    verb 3
    client-to-client
    push “redirect-gateway def1”
    #set the dns servers
    push “dhcp-option DNS 8.8.8.8”
    push “dhcp-option DNS 8.8.4.4”
    log-append /var/log/openvpn
    comp-lzo
    青文字の部分は環境に合わせて,server 192.168.100.0 255.255.255.0 などと変更します。 また赤文字の部分は必ずダブルクォーテーション「”」に囲まれている必要があります。([Ctrl]+ O, [Enter], [Ctrl]+ x で保存)

  17. これは,/proc/sys/net/ipv4/フォルダ内の ip_forward ファイルの中に「1」という値を書き込みます。

  18. # echo 1 > /proc/sys/net/ipv4/ip_forward

  19. /etc の中で sysctl.conf を開き,# net.ipv4.ip_forward = 1 の「#」を消してその行を有効(アンコメント)にする。 ([Ctrl]+ O, [Enter], [Ctrl]+ x で保存)

  20. # cd /etc
    # nano sysctl.conf

  21. openvpn フォルダに入り,新規ファイル「newvpn.ovpn」を開き上記内容をコピーします。青文字部分は通常VPNサーバーが属する LAN のゲートウェイ(ルータ)の外側,グローバルアドレス(固定又はダイナミックDNS)となります。([Ctrl]+ O, [Enter], [Ctrl]+ x で保存)

  22. # cd openvpn
    # nano newvpn.ovpn
     GNU nano 2.2.6          File: newvpn.ovpn
    dev tun
    client
    proto udp
    remote username.dynamicdns.org 1194
    resolv-retry infinite
    nobind
    persist-key
    persist-tun
    ca ca.crt
    cert client1.crt
    key client1.key
    comp-lzo
    verb 3

  23. 通常 eth0 の IPアドレスがこのラズベリーパイのアドレスです。これを確認しておき次の設定で使用します。

  24. # ifconfig

  25. /etc/rc.local というファイルを開き,スクリプト最後の exit 0 より上に上記2行を追加します。

  26. # nano /etc/rc.local
     GNU nano 2.2.6          File: /etc/rc.local
        : 省略
    iptables -t nat -A INPUT -i eth0 -p udp -m udp –dport 1194 -j ACCEPT
    iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o eth0 -j SNAT –to-source 10.0.0.xxx
    exit 0
    
    =MEMO= 2 行目末尾は –to-source 10.0.0.xxx まで1行です。 今までに作成した次のファイルをクライアント側で使用しますので確認してまとめておきましょう。

    /etc/openvpn/easy-rsa/keys/ca.crt, client1.crt, client1.key
    /etc/openvpn/newvpn.ovpn

    特に,認証用ファイルは root権限でないとアクセスできません。コピー先でも重要なファイルですので権限を変更しておきます。

    # chmod -R 777 .

  27. もしも認証用ファイルを複数アカウント作成したいと思った場合は,次のように繰り返します。

  28. $ sudo su
    # cd /etc/openvpn
    # . ./easy-rsa/vars
    # ./easy-rsa/build-key client2(又は client3, その他適当な認証用名前)
    

  29. 最後に,

  30. # reboot
    又は
    $ sudo reboot
    することによって rc.local に記述した内容も反映された環境で立ち上げます。

    $ sudo /etc/init.d/openvpn start
    で動作を確認。OKならば次のように自動起動登録します。

    $ sudo chkconfig –add openvpn


    OpenVPN Client のセットアップ



    OpenVPN.JPというサイトがとても参考になります。

    [ダウンロード]をクリックすると最新版の OpenVPN が掲載されています。 今回は自分の Windows 8 デスクトップパソコンから,遠隔の Raspberry Pi をメンテナンスしますので「Windowsインストーラ(64ビット版)」をクリックします。

    ダウンロードが完了しましたら,ダブルクリックしてインストールを開始します。途中コンポーネントを選択する画面がありますが,そのままで問題ありません。 ここで,デスクトップ上に出来たアイコンをダブルクリックすると,すぐにエラーメッセージが表示されます。 「権限」が無いため失敗しているだけなので,マウスで右クリックしたメニューから「管理者として実行」を選択してください。
    これで正常にタスクバーにアイコンが現れ起動したことが確認できます。ただそのアイコンをクリックしても何も起こりません。 また右クリックしても[設定]と[終了]しか見当たりません。この設定はプロキシの設定なので普通はしなくても大丈夫です。

    さて,なぜ立ち上げらないかというとサーバーの設定で生成した各ファイルが無いためです。
    そこで,上記 4ファイルを C:Program FilesOpenVPNconfig に格納します。

    もう一度管理者権限で立ち上げて,タスクバーのアイコンを右クリックすると,図のようにメニューが無事表示されます。 切断状態では図のようにアイコンのパソコン画面が赤い色をしています。

    [接続]をクリックしてステータス画面が表示され無事接続すると,画面の部分が緑色に変化します。

    また[設定の編集]を選択すると,標準でメモ帳が開きますが編集後保存できません。 また,動作には支障ないのですがメモ帳では設定項目が改行されておらず改行して成型すると[CR]+[LF]が挿入され, 別のエディターで見たときに一行飛ばしになっているのが確認できることがあります。

    面倒なかたは,terapad などを使用し直接編集保存した方が簡単です。また xxx.ovpn ファイルの xxx の部分を接続先名にしておくと増えたとき選択しやすくなります。

    Back
    HOME