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)
- Amazon Linux2,Arch,Cent7~9,Debian9~12,
上記のように多種類のOSをサポートします。
しかし、Centがstream系に移行してから派生で出たalmaやlockey linux が残念ながら上記のサポート欄に無いので、今回はUbuntuで行こうと思います。
作り方
まずは、アカウント作成から
Tailscaleを使うには、メールアドレスを使ったアカウントもしくはSSOでログインすることで使うことができます。
ちなみに、Sign in with Microsoft を選択して、@会社のメアド のアカウントでTailscaleを利用することは出来ませんでした。
なので、"Sign with Google" で、アカウントを紐づけました。
環境
OS: Ubuntu Server 22.04LTS
ディスク: 40GB
vCPU: 2
メモリ: 2GB
構築手順
-
ubuntu serverが起動しましたら、下記のコマンドを sudo で実行します。
curl -fsSL https://tailscale.com/install.sh | sh
-
ubuntuの場合、初手で root でのログインができないため、手順1 で自動的に走った処理が終わり、コンソールが戻ってきたら下記のコマンドを sudo で実行します。
sudo tailscale up
-
手順2のコマンドを実行すると、下図のように表示されているURLにアクセスするように指示されます。
表示されている https://login.tailscale.com/a/ユニークID をコピーして、手元のPCもしくは携帯からブラウザでアクセスしてください。
認証に成功すると、画像のように Success. と表示されます。
-
続いて、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
-
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
私の場合は、今動いているセグメントを上記のように登録しました。
-
手順5のコマンドを実行後、webブラウザで、"https://login.tailscale.com/admin/machines" へログインします。
下図のようになります。私の場合、赤枠のtailscaleをクリックします。
そのあと、下図のような画面となります。上記の画面右上に、"Review" というボタンが表示されていると思います。
"Review" のボタンを選択すると、さらにポップアップが表示され手順5で設定したサブネットアドレスが表示されていると思います。
今回は、Approve all を選択して、表示されているアドレス範囲全てにアクセスできるようにします。
全てのアドレス範囲に、青色でチェックがつきましたら、右上のバツを選択してポップアップを消します。
- 外部から宅内へ接続する際に使う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を選択します。
そのあと、画面上部の "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利用中も使えること といった多数の前提を叶えられるものが見つかりましたので情報共有としてまとめました。
さ、今日も適度に頑張りましょう。
では~!