概要
『Tinc VPNで作る簡易的なVirtual Private Network』の分割記事
4/5 構築編(4) 子ノードの構築 Linux編
各記事
- 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 ★本稿
基本はserverと一緒。Raspberry Pi(armv7hl)の例として、yumリポジトリでTincが見つからなかったケースでの、SRPMからのビルド手順で記載。
尚SRPMビルド環境の構築手順も記載しているが。全体的には数年前に行ったためメモをもとに記載しているため、
手順不足があるかもしれないので、うまく補完してほしい。
手順(0) ファイル構成
[etc]
├ [tinc]
│ └ [myvpn]
│ ├ [hosts]
│ │ ├ server
│ │ └ client2
│ ├ rsa_key.priv
│ ├ tinc.conf
│ ├ tinc-down
│ └ tinc-up
│
├ [systemd]
│ ├ [system]
│ │ ├ tincd.seervice
手順(1) SRPMビルド環境の構築
※ 不足事項はうまく補完してください。
- 対話ユーザー:root
# ユーザー追加
useradd mockbuild
passwd mockbuild
# パスワードを入力
gpasswd -a mockbuild wheel
# rpm-build
yum install rpm-build
# rpmdevtools
yum install rpmdevtools
# yum-utils
yum install yum-utils
- 対話ユーザー:mockbuild
rpmdev-setuptree
# rpmmacrosの修正
echo "%debug_package %{nil}" >> ~/.rpmmacros
echo "%dist .el7" >> ~/.rpmmacros
echo "%_unpackaged_files_terminate_build 0" >> ~/.rpmmacros
echo "%__isa_name armv7hl" >> ~/.rpmmacros
手順(2) TincVPNのビルド・インストール
- 対話ユーザー:root
# install of libraries
yum install openssl-devel lzo-devel mock
- 対話ユーザー:mockbuild
# build
cd ~/rpmbuild/SRPMS
wget http://ftp.riken.jp/Linux/fedora/epel/7/SRPMS/Packages/t/tinc-1.0.35-1.el7.src.rpm
rpmbuild --rebuild tinc-1.0.35-1.el7.src.rpm
- 対話ユーザー:root
# install
rpm -ivh /home/rpmbuild/RPMS/armv7hl/tinc-1.0.35-1.el7.armv7hl.rpm
手順(3) tinc.conf作成
mkdir -p /etc/tinc/myvpn
touch /etc/tinc/myvpn/tinc.conf
#tinc.conf
Name = client2
AutoConnect = yes
Mode = router
ConnectTo = server
手順(4) 自身のホストファイルを作成
hostsフォルダ内に、
tinc.confのNameで指定した名前と同じ名前でファイルを作成する。
mkdir -p /etc/tinc/myvpn/hosts
touch /etc/tinc/myvpn/hosts/client2
vi /etc/tinc/myvpn/hosts/client2
Subnet = 192.168.15.3/32
Port = 0
手順(5) キーの作成
tincd -n myvpn -K4096
# 秘密鍵が生成されているのを確認する。
less /etc/tinc/myvpn/rsa_key.priv
# 公開鍵が追記されているのを確認する。
less /etc/tinc/myvpn/hosts/server
※公開鍵が追記された自身のホスト ファイルは後で他のノードに配布する。
手順(6) ホスト情報の交換
serverとclient2、それぞれのhostsに入っている自身の情報をお互いに交換する。
-
/etc/tinc/myvpn/hosts/server
=>client2
へ
(client2にとって接続先情報) -
/etc/tinc/myvpn/hosts/client2
=>server
へ
(Serverにとっては接続元情報)
※サーバーの接続先情報を持っていても、サーバーに公開鍵が登録されていないと接続は拒否される。
手順(7) 起動スクリプトの作成
実行権限も忘れずに。
touch /etc/tinc/myvpn/tinc-up
chmod +100 /etc/tinc/myvpn/tinc-up
vi /etc/tinc/myvpn/tinc-up
#!/bin/sh
# VPN上でのIPをセットする。
ifconfig $INTERFACE 192.168.15.3 netmask 255.255.255.0
手順(8) 終了スクリプトの作成
実行権限も忘れずに。
touch /etc/tinc/myvpn/tinc-down
chmod +100 /etc/tinc/myvpn/tinc-down
vi /etc/tinc/myvpn/tinc-down
#!/bin/sh
ifconfig $INTERFACE down
手順(9) 起動テスト
tincd -n myvpn -d3 -D
手順(10) サービス作成・登録・実行
touch /etc/systemd/system/tincd.service
vi /etc/systemd/system/tincd.service
[Unit]
Description=tinc myvpn
After=network.target
[Service]
Type=simple
ExecStart=/usr/sbin/tincd -n myvpn -d3 -D
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
systemctl enable tincd.service
systemctl start tincd.service
# 確認
systemctl status tincd.service
# ログをリアルタイムに確認
journalctl -f -u tincd.service
構築(4) 子ノードの構築 - Android
⇒ Tinc VPNで作る簡易的なVirtual Private Network 5/5 (構築編(4) 子ノードの構築 - Android編)
謝辞
- 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/ - SRPMを使ったパッケージのインストール - 祈れ、そして働け ~ Ora et labora
http://tetsuyai.hatenablog.com/entry/20120106/1325839318 - いまさら聞けないrpmbuildことはじめ - hack in 3 minutes
https://blog.tnmt.info/2011/04/29/rpmbuild-for-beginner/ - warning: user mockbuild does not exist – using root というエラーが出た場合の対処方法 | ウェブル
http://weble.org/2012/05/25/warning-user-mockbuild-does-not-exist-using-root