no config VPN -Tailscale- の作り方 (社外用)

no config VPN -Tailscale- の作り方 (社外用)

Contents

no config VPN -Tailscale- の作り方 (社外用)

みなさん、おはこんばんちわ。
長らくぶりです。
ちょっと業務上、多忙に多忙を極めておりブログの更新とか全くできていませんでした。

あと、直近で初めてコロナにかかりまして..
発熱も最高で40度越えと流石にヤバかったですが、自治体の支援も有り何とか乗り切りました。

一応生きてます。w
というわけで、下記本題です。

超絶簡単に構築できるVPNって無いだろうか。...

前置き

つまるところ、外出先、会社からIPsecみたくVPNで自宅に接続したいということでずっとサービスを探していました。
しかし、昨今宅内の環境に変化があり、友人のサーバー受け入れも行ったことからゼロトラストだの~、SSOだの~とすごい言われようでした。

正直、私としては宅内AD(ActiveDirectory)での一括管理ができなくなることからサービス自体をクラウドに移行させるのはあまり気が進まなかったのですが、新規に契約した回線が "MAP-E" であることから回線種別に関わらず何らかの方式で外部と宅内とで繋げる手段を見つけるようにしました。

サービスを見つけた

そして、ついにサービスを見つけました。!
以前から、WireguardというVPNは気になっていたのですが、管理が煩雑ということからあまり世間でも使われていなかったかと思いますが、クラウド上のGUIから操作できるサービスがありました。

それが "Tailscale" となります。

下記Tailscaleがインストール出来るOSの種類になります。

  • Windows 7以降
  • macOS 10.13 High Sierra 以降
  • Linux
    • Amazon Linux2,Arch,Cent7~9,Debian9~12,
      Fedora,Nix,openSUSE Thumbleweed (Leap 15.1 15.2は保守切れ),Oracle Linux7~8,RHEL8,ラズパイ,Ubuntu16.04LTS,18.04LTS,19.10,20.04LTS,20.10,21.04,21.10,22,04LTS)

上記のように多種類のOSをサポートします。
しかし、Centがstream系に移行してから派生で出たalmaやlockey linux が残念ながら上記のサポート欄に無いので、今回はUbuntuで行こうと思います。

作り方

まずは、アカウント作成から

Tailscaleを使うには、メールアドレスを使ったアカウントもしくはSSOでログインすることで使うことができます。

ちなみに、Sign in with Microsoft を選択して、@会社のメアド のアカウントでTailscaleを利用することは出来ませんでした。

なので、"Sign with Google" で、アカウントを紐づけました。

image

環境

OS: Ubuntu Server 22.04LTS
ディスク: 40GB
vCPU: 2
メモリ: 2GB

構築手順

  1. ubuntu serverが起動しましたら、下記のコマンドを sudo で実行します。

    curl -fsSL https://tailscale.com/install.sh | sh

    参照先: https://tailscale.com/download/linux/ubuntu-2204

  2. ubuntuの場合、初手で root でのログインができないため、手順1 で自動的に走った処理が終わり、コンソールが戻ってきたら下記のコマンドを sudo で実行します。

    sudo tailscale up
  3. 手順2のコマンドを実行すると、下図のように表示されているURLにアクセスするように指示されます。

    image

    表示されている https://login.tailscale.com/a/ユニークID をコピーして、手元のPCもしくは携帯からブラウザでアクセスしてください。

    認証に成功すると、画像のように Success. と表示されます。

  4. 続いて、Tailscaleをインストールしたubuntu serverを経由して家のネットワークにアクセスできるようにしていきます。

    家のネットワークのアドレス範囲は下記のとおりです。

    192.168.2.0/24 (OpenWRT Router)
    172.16.2.0/24 (Arista L2SW , default vlan)
    10.98.10.0/24 (Arista L2SW , VLAN10)
    10.98.20.0/24 (Arista L2SW , VLAN20)
    10.98.30.0/24 (Arista L2SW , VLAN30)
    10.98.40.0/24 (Arista L2SW , VLAN40)
    10.98.50.0/24 (Arista L2SW , VLAN50)

    VLAN10~50 はトランク

    今回、TailscaleをインストールしたUbuntu Serverは、10.98.20.0/24 に構築しています。

    まずは、Ubuntu Server に下記のようなコマンドを実行していきます。

    echo 'net.ipv4.ip_forward = 1' | sudo tee -a /etc/sysctl.conf  
    
    echo 'net.ipv6.conf.all.forwarding = 1' | sudo tee -a /etc/sysctl.conf  
    
    sudo sysctl -p /etc/sysctl.conf
  5. Tailscale をインストールしたマシン以外のネットワークにも接続できるようにサブネットルーターモードに設定します。

    sudo tailscale up --advertise-routes=10.98.10.0/24,10.98.20.0/24,10.98.30.0/24,10.98.40.0/24,10.98.50.0/24,192.168.2.0/24

    私の場合は、今動いているセグメントを上記のように登録しました。

  6. 手順5のコマンドを実行後、webブラウザで、"https://login.tailscale.com/admin/machines" へログインします。
    下図のようになります。

    image

    私の場合、赤枠のtailscaleをクリックします。
    そのあと、下図のような画面となります。

    image

    上記の画面右上に、"Review" というボタンが表示されていると思います。

    "Review" のボタンを選択すると、さらにポップアップが表示され手順5で設定したサブネットアドレスが表示されていると思います。

    image

今回は、Approve all を選択して、表示されているアドレス範囲全てにアクセスできるようにします。
全てのアドレス範囲に、青色でチェックがつきましたら、右上のバツを選択してポップアップを消します。

image

  1. 外部から宅内へ接続する際に使うPCにtailscaleのソフトウェアをインストールします。

"https://tailscale.com/download" より、接続元のOSを選び、インストールしてください。

tailscaleをインストールしましたら、接続元のtailscaleソフトウェアでもログインします。

あとは、ブラウザでIP叩くと親の顔より見た画面が出てきます。

しかし、FQDNでアクセスしたい、というかFQDNじゃないとアクセス出来ないみたいなこともあるかと思います。
そのため、TailscaleのMagicDNSという機能を利用すると、VPN的な接続の仕方で、FQDNで叩くということもできるようになります。

まずは、webブラウザで、"https://login.tailscale.com/admin/dns" にアクセスしてください。

その後、 Add nameserverをクリックします。

Google, Cloudflare, Quad9のPublic DNSがデフォルトで選択できます。

ここでは、Google Public DNSを選択します。

image

そのあと、画面上部の "Enable MagicDNS" をクリックします。

ここまで、実施手順終わりましたら、vCenterもHorizonのConnection Serverも、NSX Managerも、ブラウザからFQDNでアクセスできるようになります。

総括

サービスの構築の仕方も簡単で非常に簡単ですし、何より社給PCで試したところ宅内に接続しながらbugzillaとかopengrockなどの完全社内ページにも接続できるというのが良いなと思いました。

従来のVPNだと、当然経路が切り替わるので社内ページに接続出来ないというのは当たり前の話だったのですが、今回のTailscaleはWireGuardベースのサービスのためpeer to peer で宅内へ接続出来るためある程度通信スピードが出るというのも良いと思いました。

下記、iperf3による速度計測の結果となります。


測定環境
場所: アパホテル山手大塚駅前
時間: 7/18 0:51 (深夜)

自宅
NTTフレッツクロス (10G)
収容: OpenWRT(SFP+)
仮想基盤: SR-IOV なし


PS C:\Users\test\Desktop\iperf-3.1.3-win64> .\iperf3.exe -c 10.98.40.20
Connecting to host 10.98.40.20, port 5201
[  4] local 100.100.x.xx port 50946 connected to 10.98.40.20 port 5201
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-1.00   sec  10.6 MBytes  89.1 Mbits/sec
[  4]   1.00-2.01   sec  10.5 MBytes  87.6 Mbits/sec
[  4]   2.01-3.01   sec  10.8 MBytes  89.8 Mbits/sec
[  4]   3.01-4.00   sec  10.1 MBytes  85.5 Mbits/sec
[  4]   4.00-5.00   sec  10.6 MBytes  89.4 Mbits/sec
[  4]   5.00-6.00   sec  10.8 MBytes  90.0 Mbits/sec
[  4]   6.00-7.01   sec  10.8 MBytes  89.6 Mbits/sec
[  4]   7.01-8.00   sec  10.5 MBytes  88.9 Mbits/sec
[  4]   8.00-9.01   sec  10.9 MBytes  90.5 Mbits/sec
[  4]   9.01-10.00  sec  10.6 MBytes  89.6 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-10.00  sec   106 MBytes  89.0 Mbits/sec                  sender
[  4]   0.00-10.00  sec   106 MBytes  89.0 Mbits/sec                  receiver

iperf Done.

このように、簡単に構築できかつ速度もある程度期待出来ること、接続元から社内サイトなども問題なく見れることから、都度VPNのオン・オフをする必要が無くネットワーク的な制約をあまり受けないというところがメリットになります。

しかしながら、peer to peer を利用するうえで、回線契約上 peer to peer を利用していることがプロパイダ側で判断された場合、警告文書を送ってくることもごく稀に存在はするらしいです。

これは、一時期peer to peerが正しく利用されなかったことがあったために警告文書が送られるようになったという背景があるようです。
しかし、昨今リモートワークなどの普及でVPN通信なども多くなってきたことから、通信内容においても寛容になぅて来ているように感じられます。

そのため、今後も快適にリモートワークをする上で、社用VPN + 社給PC + 社内サイトがVPN利用中も使えること といった多数の前提を叶えられるものが見つかりましたので情報共有としてまとめました。

さ、今日も適度に頑張りましょう。
では~!