概要
『Tinc VPNで作る簡易的なVirtual Private Network』の分割記事
5/5 構築編(4) 子ノードの構築 Android編
各記事
- Tinc VPNで作る簡易的なVirtual Private Network 1/5 (概要編)
- Tinc VPNで作る簡易的なVirtual Private Network 2/5 (構築編(1) ルートノードの構築 - Linux編)
- Tinc VPNで作る簡易的なVirtual Private Network 3/5 (構築編(2) 子ノードの構築 - Windows編)
- Tinc VPNで作る簡易的なVirtual Private Network 4/5 (構築編(3) 子ノードの構築 - Linux編)
- Tinc VPNで作る簡易的なVirtual Private Network 5/5 (構築編(4) 子ノードの構築 - Android編)
構築
構築(0)トポロジー (共通記載)
以下のトポロジーで記載を行う。
- ネットワーク名 - myvpn #設定ファイル群を置くフォルダ名になる
- VPNのIPセグメント - 192.168.15.0/24
Node | Name | OS | Architecture | Mode | Global IP port Domain |
VPN IP |
---|---|---|---|---|---|---|
root | server | CentOS 7 | x68_64 | router | available 10655 mydomain.org |
192.168.15.1 |
child | client1 | Windows 10 | x64 | router | 192.168.15.2 | |
child | client2 | CentOS 7 | armv7 (Raspberry Pi3) |
router | 192.168.15.3 | |
child | client3 | Android | arm | router | 192.168.15.4 |
構築(1) ルートノードの構築 - Linux
⇒ Tinc VPNで作る簡易的なVirtual Private Network 2/5 (構築編(1) ルートノードの構築 - Linux編)
構築(2) 子ノードの構築 - Windows
⇒ Tinc VPNで作る簡易的なVirtual Private Network 3/5 (構築編(2) 子ノードの構築 - Windows編)
構築(3) 子ノードの構築 - Linux]
⇒ Tinc VPNで作る簡易的なVirtual Private Network 4/5 (構築編(3) 子ノードの構築 - Linux編)
構築(4) 子ノードの構築 - Android ★本稿
手順(0) ファイル構成
基本的には他のプラットフォームと一緒。ネットワーク設定はスクリプトではなく、 network.conf
に記載する。
鍵の生成などもあるため、PCでファイル群を作ってそのまま端末にコピーする。
[/本体/Android/data/org.pacien.tincapp]
├ [cache]
│ ├ tinc.myvpn.log #アプリを実行すると生成されるログ
│ └ tincapp.log #アプリを実行すると生成されるログ
├ [files]
│ └ [myvpn]
│ ├ [hosts]
│ │ ├ server
│ │ └ client3
│ ├ network.conf
│ ├ rsa_key.priv
│ └ tinc.conf
手順(1) tinc.conf作成 (※PCで作業。Linux例)
Andsoidで作成は出来ないので、PCで作業。
ネットワーク名は作業にダミーのフォルダを作って行う。
mkdir -p /etc/tinc/dummy_vpn
touch /etc/tinc/dummy_vpn/tinc.conf
#tinc.conf
Name = client3
AutoConnect = yes
Mode = router
ConnectTo = server
手順(2) 自身のホストファイルを作成 (※PCで作業。Linux例)
hostsフォルダ内に、
tinc.confのNameで指定した名前と同じ名前でファイルを作成する。
mkdir -p /etc/tinc/dummy_vpn/hosts
touch /etc/tinc/dummy_vpn/hosts/client3
vi /etc/tinc/dummy_vpn/hosts/client3
Subnet = 192.168.15.4/32
Port = 0
手順(3) キーの作成 (※PCで作業。Linux例)
tincd -n myvpn_tmp -K4096
# 秘密鍵が生成されているのを確認する。
less /etc/tinc/dummy_vpn/rsa_key.priv
# 公開鍵が追記されているのを確認する。
less /etc/tinc/dummy_vpn/hosts/server
※公開鍵が追記された自身のホスト ファイルは後で他のノードに配布する。
手順(4) ホスト情報の交換 (※PCで作業。Linux例)
serverとclient3、それぞれのhostsに入っている自身の情報をお互いに交換する。
-
server
の/etc/tinc/myvpn/hosts/server
=>client3
の/etc/tinc/dummy_vpn/hosts/
へ
(client3にとって接続先情報) -
client3
の/etc/tinc/dummy_vpn/hosts/client3
=>server
の/etc/tinc/myvpn/hosts/
へ
(Serverにとっては接続元情報)
※サーバーの接続先情報を持っていても、サーバーに公開鍵が登録されていないと接続は拒否される。
手順(5) ネットワーク設定ファイルの作成 (※PCで作業。Linux例)
touch /etc/tinc/dummy_vpn/network.conf
vi /etc/tinc/dummy_vpn/tinc-up
# VPN上でのIPを記載
Address = 192.168.15.4/32
Route = 192.168.15.0/24
AllowBypass = on
手順(6) Android端末にTincAppのインストール
入手先
- TincApp APK配布あり
- F-Droid
- Google Play (donate)
手順(7) Android端末に設定ファイルをコピー
PCで作業したファイル・フォルダ構成をAndroid端末にコピーする。
-
/etc/tinc/dummy_vpn/*
=>Android端末
の/本体/Android/data/org.pacien.tincapp/files/myvpn/*
へ
※フォルダが無ければ作成する。
手順(8) 起動
Tinc Appアプリを起動すると、コピーしたフォルダ名が一覧にあるので、タップすると接続される。接続後にNODESタブで他のノードも認識され、IPでアクセス可能になる。
補足
VPNが有効になっているとGoogle Playがダウンロードの待機から先に進まなくなるっぽい
なのでandroidでの常時VPN有効化は割と課題がありそうです。
(OS視点では『盗聴されている可能性がある』扱いですし、なんぞー)
謝辞
- TincVPN (official)
https://www.tinc-vpn.org/ - Tinc 1.0 documentation
https://www.tinc-vpn.org/documentation/ - Tinc 1.0 documentation - tincd(8)
https://www.tinc-vpn.org/documentation/tincd.8 - Tinc 1.0 documentation - tinc.conf(5)
https://www.tinc-vpn.org/documentation/tinc.conf.5 - TincApp (android client)
https://tincapp.pacien.org/ - Tinc - ArchWiki
https://wiki.archlinux.org/index.php/Tinc - How to automatically start tinc on Fedora 17 | John's 'blog'
https://leesjohn.wordpress.com/2013/03/13/how-to-automatically-start-tinc-on-fedora-17/