Androidから 自宅サーバにアクセス


日経Linux2011年10月号に載っていたのでやってみた。

下準備

http://ieserver.net/ に、登録して、自宅サーバにアクセスできるようにしておく

左側のメニューに便利ツールがあるのでクリック

UNIX版クライアントのIPアドレス更新サンプルスクリプトをクリックすると表示されるのでddns-update.txt

として保存する。こうしないと文字化けしてしまったので、こうしてみた。

ddns-update.txt を書き換える 中程に下記の4行があるので、説明の通りに書き換える

# ieServer.Netにて取得したアカウント(サブドメイン)情報を記入

$ACCOUNT = ” “; # アカウント(サブドメイン)名設定

$DOMAIN = ” “; # ドメイン名設定

$PASSWORD = ” “; # パスワード設定

下記のコマンドを実施

$ sudo mv ddns-update.txt /usr/local/bin/ddns-update.pl

$ sudo chmod 755 /usr/local/bin/ddns-update.pl

$ sudo crontab -e

*/30 * * * * /usr/local/bin/ddns-update.pl #末行に追加して保存する

インストール

$ sudo tasksel

openSSHを選択してインストール

$ sudo apt-get install openswan

証明書を利用するか聞かれるので、No を選択

$ sudo gedit /etc/rc.local

/etc/init.d/ipsec restart # 最終行 exit 0 の前に記述して、Openswanの起動設定の書き込み

$ sudo apt-get install xl2tpd

Openswanの設定

$ sudo gedit /etc/ipsec.conf

# basic configuration

config setup

nat_traversal=yes # 24行目yesを確認

oe=off

protostack=netkey  # 30行目 auto から netkey に変更

include /etc/ipsec.d/l2tp-psk.conf   #31行目に追加 この行は、前を空けない(独立した記述)

$ sudo gedit /etc/ipsec.secrets

: PSK “事前共有鍵にする文字列を入力” # 最後に記述

$ sudo gedit /etc/ipsec.d/l2tp-psk.conf   #確か何も書いてないので,下記の行を記述

conn L2TP-PSK-NAT

rightsubnet=0.0.0.0/0

forceencaps=yes

also=L2TP-PSK-noNAT

conn L2TP-PSK-noNAT

authby=secret

pfs=no

auto=add

keyingtries=3

rekey=no

ikelifetime=8h

keylife=1h

type=transport

left=ここにVPNサーバのIPアドレスを記述

 leftnexthop=%defaultroute

leftprotoport=17/%any

right=%any

rightprotoport=17/%any

dpddelay=5

dpdtimeout=30

dpdaction=clear

xl2tpdの設定

$ sudo gedit /etc/xl2tpd/xl2tpd.conf

たくさん出てくるので、該当する行の;を外して、必要があれば、書き換えた

[global]

[lns default]

ip range = 00.00.00.231-00.00.00.240  VPNに割り当てるIPアドレスの範囲(サーバと同一LAN内)

local ip = サーバのIPアドレスを記述

require chap = yes

refuse pap = yes

require authentication = yes

name = VPNserver

ppp debug = yes

pppoptfile = /etc/ppp/options.l2tpd.lns

length bit = yes #この行は、追加したかも

$ sudo gedit /etc/ppp/chap-secrets

# Secrets for authentication using CHAP

# client server secret IP addresses

“ユーザ名” * “パスワード” *    # この行を記述 Ubuntuのユーザ名とパスワードとは違って良い

$ sudo gedit /etc/ppp/options.l2tpd.lns

asyncmap 0

auth

local

crtscts

debug

lock

proxyarp

refuse-pap

refuse-chap

refuse-mschap

require-mschap-v2

logfile /var/log/xl2tpd.log

lcp-echo-interval 30

lcp-echo-failure 4

$ sudo gedit /etc/sysctl.conf  #カーネル設定用のファイルの末尾に記述

net.ipv4.ip_forward = 1

net.ipv4.conf.all.accept_redirects = 0

net.ipv4.conf.all.send_redirects = 0

net.ipv4.conf.default.accept_redirects = 0

net.ipv4.conf.default.send_redirects = 0

net.ipv4.conf.eth0.accept_redirects = 0

net.ipv4.conf.eth0.send_redirects = 0

net.ipv4.conf.lo.accept_redirects = 0

net.ipv4.conf.lo.send_redirects = 0

確認

$ sudo ipsec verify

Linux Openswan U2.6.28/K3.0.0-15-generic (netkey)

Checking for IPsec support in kernel [OK]

NETKEY detected, testing for disabled ICMP send_redirects [OK]

NETKEY detected, testing for disabled ICMP accept_redirects [OK]

Checking that pluto is running [OK]

Pluto listening for IKE on udp 500 [OK]

Pluto listening for NAT-T on udp 4500 [OK]

Checking for ‘ip’ command [OK]

Checking for ‘iptables’ command [OK]

Opportunistic Encryption Support [DISABLED]

最後の項目以外、OKになれば良い。

sudo sysctl -p #システムにすぐに反映させるコマンド

再起動で設定完了

ルータがVPN通信ができるように、 UDP500番ポートとUDP4500番ポートの転送設定を行う

Ubuntuのポート開放

$ sudo apt-get install nmap

$ sudo ufw allow 500/udp

$ sudo ufw allow 4500/udp

Android端末に SSHクライアントとしてConnectBot を使う

Androidの無線とネットワーク → VPN設定 からメニューを表示し、VPNを追加する

「L2TP/IPSec PSK VPNを追加」 を選択

VPNサーバの設定 : ルータのドメイン名又はIPアドレス

IPSec事前共有鍵の設定

L2TPセキュリティ保護 無効にしておく

接続時は、/etc/ipsec.secrets で設定したユーザ名とパスワードを使用する

接続後、ConnectBot でSSH接続ができればOK

カーネルアップデートしたら

動かなくなるので下記のコマンドを実施

$ sudo service ipsec start

ipsec_setup: Starting Openswan IPsec U2.6.28/K3.0.0-15-generic…

下記のコマンドで確認すると

$ sudo ipsec verify

Version check and ipsec on-path [OK]

Linux Openswan U2.6.28/K3.0.0-15-generic (netkey)

Checking for IPsec support in kernel [OK]

NETKEY detected, testing for disabled ICMP send_redirects [OK]

NETKEY detected, testing for disabled ICMP accept_redirects [OK]

Checking that pluto is running [OK]

Pluto listening for IKE on udp 500 [OK]

Pluto listening for NAT-T on udp 4500 [OK]

Checking for ‘ip’ command [OK]

Checking for ‘iptables’ command [OK]

Opportunistic Encryption Support [DISABLED]

最後の項目以外、OKになれば良いが、カーネルアップデート時は,下記を必ずやる必要がある。

こんな表示が出た場合は

NETKEY detected, testing for disabled ICMP send_redirects [FAILED]

  Please disable /proc/sys/net/ipv4/conf/*/send_redirects

  or NETKEY will cause the sending of bogus ICMP redirects!

NETKEY detected, testing for disabled ICMP accept_redirects [FAILED]

  Please disable /proc/sys/net/ipv4/conf/*/accept_redirects

  or NETKEY will accept bogus ICMP redirects!

下記のコマンドを実施

$ sudo ls /proc/sys/net/ipv4/conf/*/send_redirects #対象のファイルを確認

/proc/sys/net/ipv4/conf/all/send_redirects

/proc/sys/net/ipv4/conf/default/send_redirects

/proc/sys/net/ipv4/conf/eth0/send_redirects

/proc/sys/net/ipv4/conf/lo/send_redirects

$ sudo ls /proc/sys/net/ipv4/conf/*/accept_redirects

/proc/sys/net/ipv4/conf/all/accept_redirects

/proc/sys/net/ipv4/conf/default/accept_redirects

/proc/sys/net/ipv4/conf/eth0/accept_redirects

/proc/sys/net/ipv4/conf/lo/accept_redirects

たぶん、上の水色で示した8行が出るので,これの値を全部0にする。

$ sudo su

# echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects

# echo 0 > /proc/sys/net/ipv4/conf/default/send_redirects

# echo 0 > /proc/sys/net/ipv4/conf/eth0/send_redirects

# echo 0 > /proc/sys/net/ipv4/conf/lo/send_redirects

# echo 0 > /proc/sys/net/ipv4/conf/all/accept_redirects

# echo 0 > /proc/sys/net/ipv4/conf/default/accept_redirects

# echo 0 > /proc/sys/net/ipv4/conf/eth0/accept_redirects

# echo 0 > /proc/sys/net/ipv4/conf/lo/accept_redirects

更にこちらは、値を1にする

$ echo 1 > /proc/sys/net/ipv4/ip_forward

# exit

$ sudo sysctl -p #システムにすぐに反映させるコマンド

$ sudo ipsec verify

再び確認して、正常な表示が出ていればOK

再起動をかけてサーバの再セットアップは完了

1/28 追記

なんか、カーネルバージョンアップのせいなのか再起動するたびにipsecが止まるので追加

$ sudo apt-get install chkconfig

$ sudo chkconfig xl2tpd on

$ sudo chkconfig ipsec on

$ sudo /etc/init.d/xl2tpd start>

$ sudo /etc/init.d/ipsec start

これで、再起動しても起動するようになった。

Leave a comment

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

CAPTCHA


 

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)