AndroidとVPN 3

前回までで、OpenVPN自体の設定まで終わらせた。
今回は、ブリッジの設定からおこなっていく。

ブリッジ設定

bridge-startの変更・追加点

sudo apt-get install bridge-utils
sudo cp /usr/share/doc/openvpn/examples/sample-scripts/bridge-st* /etc/openvpn/

bridge-stopがそのままだとダメだったので、末尾に追加

eth_ip="192.168.1.2" #eth0のIPアドレス
eth_broadcast="192.168.1.255"
gw="192.168.1.1"
route add default gw $gw #最終行に追加
/etc/init.d/networking reload

IP forwardを有効にするために、/etc/sysctl.confに

net.ipv4.ip_forward=1

を追記する。

起動時にブリッジの設定が有効になるようにするため、/etc/init.d/ にスクリプトを作成

/etc/init.d/bridge

#!/bin/sh
 
### BEGIN INIT INFO
# Provides:       bridge
# Required-Start: $network $remote_fs $syslog
# Required-Stop:  $network $remote_fs $syslog
# Default-Start:  2 3 4 5
# Default-Stop:   0 1 6
# Short-Description: Bridge for OpenVPN
### END INIT INFO
 
START_BRIDGE="/etc/openvpn/bridge-start"
STOP_BRIDGE="/etc/openvpn/bridge-stop"
 
case "$1" in
        start)
         echo -n "Starting Bridge"
         $START_BRIDGE
         ;;
        stop)
         echo -n "Stopping Bridge"
         $STOP_BRIDGE
         ;;
        restart)
         $STOP_BRIDGE
         sleep 2
         $START_BRIDGE
         ;;
        *)
         echo "Usage: $0 {start|stop|restart}" > 2
         exit 1
         ;;
esac

また、今作ったbridgeを実行後にOpenVPNを起動したいので、/etc/init.d/openvpnのINIT INFO部分を書き換える。

# Required-Start: bridge $network $remote_fs $syslog
# Required-Stop: bridge $network $remote_fs $syslog

書き換えたら、rc-updateを実行する。

sudo update-rc.d bridge defaults
sudo update-rc.d openvpn defaults

クライアントの鍵作成と証明書発行

cd /usr/share/doc/openvpn/examples/easy-rsa/2.0
./build-key client

これも引数がCommon nameのデフォルト値となるため、今まで入れてきたCommon nameと被らない名前を入力する。

ファイアウォールの設定

ルータのファイアウォールでserver.confで指定したプロトコル(TCP/UDP)とポートをVPNのサーバになるマシンのIPへポートマッピング設定する。

クライアントの設定ファイル

/usr/share/doc/openvpn/examples/sample-config-files/client.conf
にある、設定ファイル例をコピーし、変更する。

dev tap0
;dev tun
remote my-server-1 1234 # VPNサーバのホスト名とポート番号
user nobody
group nogroup
ca ca.crt
cert client.crt
key client.key

my-server-1の部分は自分のホスト名かIPアドレスに書き換える。
caは認証局の作成で作った認証局の証明書。
cert,keyはクライアントの鍵作成と証明書発行で作った証明書ファイルと鍵ファイルのファイル名を指定する。

と、ここまで設定をしてクライアントとなるAndroid側の準備に取り掛かろうとすると、とても悲しいこと気にがついた。
現在のところAndroidではroot化しないとTAPでのOpenVPN接続はできないとい事がわかった。
Androidのフレームワークが対応していないということだ。

そうなると、AndroidのフレームワークがTAPのAPIをサポートし、そのサポートされたバージョンのファームがリリースされないといけない・・・
これはちょっと期待できなそうなので、そっとコマンドを叩いて終了した。

sudo /etc/init.d/openvpn stops
sudo /etc/init.d/bridge stop
sudo update-rc.d openvpn remove
sudo update-rc.d bridge remove

あと、/etc/sysctl.confのip forwardの設定もoffにした。

参考

Howto setup openvpn in bridge mode on debian

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください