LoginSignup
1
1

More than 3 years have passed since last update.

Tinc VPNで作る簡易的なVirtual Private Network 4/5 (構築編(3) 子ノードの構築 - Linux編)

Last updated at Posted at 2020-06-05

概要

『Tinc VPNで作る簡易的なVirtual Private Network』の分割記事

4/5 構築編(4) 子ノードの構築 Linux編

各記事

構築

構築(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
#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
/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
/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
/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
/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編)

謝辞

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1