tinc VPNを試す
闇ネットの拠点間接続用にtincのswitchモードを試してみる
switchモード = L2でつながる
つまり、IPパケットではなく、Ethernetフレームを転送するVPN
tincは、
UDPベースだから
TCPベースのVPNみたいに
輻輳制御が二重に走ったりしない
基本的にtincは拠点間
VPNなのでサーバ/クライアントの区別がないけど、この記事中では便宜上VPNのセッションを開始する側(NATの内側にいるホスト)をクライアント、VPNのセッションを受け付ける側(NATの外側にいるホスト)をサーバと呼ぶ
サーバ側
さくらVPSにUbuntu 20.04をインストールする
ホスト名を gsngw01
とする
この名前はtincのノード名としても使う
グローバル側IPアドレスは 203.0.113.1/24
VPN側のIPアドレスは 10.0.0.1/8
作成するネットワーク名を gsn
とする
以下のコマンドを実行して設定用ディレクトリをつくる
shsudo mkdir /etc/tinc/gsn
sudo mkdir /etc/tinc/gsn/hosts
以下のファイルを作成する
/etc/tinc/gsn/tinc-up#!/bin/sh
ip link set $INTERFACE up
ip link set dev $INTERFACE master br0
ip addr add 10.0.0.1/8 dev br0
/etc/tinc/gsn/tinc-down#!/bin/sh
ip link set dev $INTERFACE nomaster
ip link set $INTERFACE down
以下のコマンドを実行して、鍵ペアを生成する
公開鍵が /etc/tinc/gsn/hosts/gsngw01
に書き込まれる
秘密鍵が /etc/tinc/gsn/rsa_key.priv
に書き込まれる
/etc/tinc
が以下のような感じになってれば設定は完了
sh$ tree /etc/tinc/
/etc/tinc/
├── gsn
│ ├── hosts
│ │ ├── gsngw01
│ │ └── gsngw02
│ ├── rsa_key.priv
│ ├── tinc-down
│ ├── tinc-up
│ └── tinc.conf
└── nets.boot
2 directories, 7 files
/etc/tinc/gsn/hosts/gsngw01-----BEGIN RSA PUBLIC KEY-----
MIIBCgKCXXXXXXXXXXXXXXXRptqA/I6gzpvLL8DEG20pJYSMx6xcPunfazBnKb3w
ctz5xwJqTMpYzUQwTs0aIVqF/Rf3+yAIs/UPA1ToX3q3Lq588wIeIJ9R2jr9LOpU
o7dgDrE3GDdhOXXXXXXXXXXsXlYVfQ1OLQtZFkyAJU5teK++cWmqpL15liZ+JxrI
Gkh+NnUVR1DJMh1eEWg/sZMYzIFKZ71BBduhDPo1vYzL83iqwB8LoKDNehd/zzSK
mBcxFLb8Bf2ob6c13cyISeFhuWVQMvV0HLDdddHUgBZqhPj9qmUSlXXXXXXXXXXX
2DkrYX2zMIQ+FP0WCT9BdjVA/ZKnX72dtwIDAQAB
-----END RSA PUBLIC KEY-----
クライント側
RaspberryPi4にRaspberryPi OSをセットアップする
ホスト名を gsngw02
とする
この名前はtincのノード名としても使う
VPN側のIPアドレスは 10.0.0.1/8
普通のご家庭のNATの内側に設置されている
/etc/tinc/gsn/tinc-up#!/bin/sh
ip link add br0 type bridge
ip link set br0 up
ip link set $INTERFACE up
ip link set dev $INTERFACE master br0
ip addr add 10.0.0.2/8 dev br0
/etc/tinc/gsn/tinc-down#!/bin/sh
ip link set dev $INTERFACE nomaster
ip link set dev $INTERFACE down
ip link set dev br0 down
ip link del dev br0
shsudo systemctl enable tinc@gsn.service