TailscaleでVPN環境を構築する

Tailscaleとは

TailscaleとはWireguardというVPN技術をベースにつくられたメッシュ型のVPNサービスです。

参考URL 100台まで無料のVPNサービス「tailscale」、リンクだけでマシンのシェアも可能!?【イニシャルB】 - INTERNET Watch

Hamachiに似ていますね。公式サイトもHamachiの置き換えについて言及があります。 Tailscale: A modern replacement for Hamachi · Tailscale

個人的には2014年ごろHamachiを使っていたことがあります。ええ、上記の記事にあるようにゲームのためですが。

Tailscaleで気になっていたのがVPNに参加している端末の中からExitNode(インターネットへの出口)を決められるということ。 自宅PCをExitNodeにするもよし、パブリッククラウド上のサーバをExitNodeにするもよし。

サービス利用開始

サービスの利用申し込みはいたって簡単でした。上記の紹介記事どおりです。 WindowsやAndroid、iOS用のアプリもあるのでそちらの利用もいたって簡単にできるようになりました。

OCI上のインスタンスをTailscaleのVPNに参加させる

通信料に応じた課金額が少ないOCIにインスタンスを立ててTailscaleのExitNodeにしようと思います。 こちらにSSHトンネルでアクセスすることで、VPNに参加したWindowsPCにVNCでアクセスできるようにすることなどを狙っております。 また広告カットのフィルタをこちらのサーバ上に入れることで通信費の節約しようという以前も実施していた試みを別の形で実践しようとも考えております。

yourpalm.jubenoum.com

OS: Ubuntu 22.04 で環境を構築して、SSHでログインできるようにした後、以下のコマンドを実行して完了でした。あっさり。 Setting up Tailscale on Ubuntu 22.04 (jammy) · Tailscale Docs

curl -fsSL https://pkgs.tailscale.com/stable/ubuntu/jammy.noarmor.gpg | sudo tee /usr/share/keyrings/tailscale-archive-keyring.gpg >/dev/null
curl -fsSL https://pkgs.tailscale.com/stable/ubuntu/jammy.tailscale-keyring.list | sudo tee /etc/apt/sources.list.d/tailscale.list
sudo apt-get update
sudo apt-get install tailscale
sudo tailscale up
# 初回起動時にログイン用URLが払出されるのでログインする

To authenticate, visit:

        https://login.tailscale.com/a/XXXXXXXX

tailclace upSuccess.

# いったん停止する
sudo tailscale down

# パケットフォワーディングを許可する
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

# ExitNodeとして起動する
sudo tailscale up --advertise-exit-node

ここまで設定するとTailscaleの管理ページには、ソフトをインストールして接続した機器が見えるようになっています。 ExitNodeを複数設定した上で、その時々で選択できるようですので、AWSなどの海外のリージョンにExitNodeを立てて…なんてこともできるのかな。 設定も簡単なのでいろいろ試してみたいと思います。

n8nをセルフホストする

n8nとは

ZapierやIFTTTなどと同様のノーコード・ローコードで複数の Webサービスを連結したワークフローを作成できるシステムです。 クラウドでも利用できるのですが セルフホストで使うことができるということで、GCP上で稼動させました。 公式サイトにも手順があったDockerイメージを利用する手順としています。

参考URL Docker Compose | n8n Docs

セルフホストに向けた手順

GCPでインスタンスを立ててSSHでアクセスできるようにする

GCPでインスタンスを立てることは問題なくできました。 参考URL Google Compute EngineのインスタンスにSSH接続する | virtualiment

GCP内にDockerイメージをたてて起動する

古いdockerをアンインストールして、新しいdockerをインストールする

Docker Compose | n8n Docs

n8nのサイトで紹介されている手順は「ubuntu」前提だったので、少々はまった。 GCPで起動するLinuxインスタンスは「debian」だったので一部変更する必要あり。

sudo apt-get remove docker docker-engine docker.io containerd runc
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg lsb-release
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

docker用のディレクトリを作成して、必要なファイルを作成し起動

mkdir docker
cd docker
mkdir docker-n8n
cd docker-n8n
vi docker-compose.yml
vi .env
sudo mkdir /root/n8n
sudo chmod 777 /root/n8n
sudo docker compose up -d

docker-compose.yml

version: "3.7"

services:
  traefik:
    image: "traefik"
    restart: always
    command:
      - "--api=true"
      - "--api.insecure=true"
      - "--providers.docker=true"
      - "--providers.docker.exposedbydefault=false"
      - "--entrypoints.web.address=:80"
      - "--entrypoints.web.http.redirections.entryPoint.to=websecure"
      - "--entrypoints.web.http.redirections.entrypoint.scheme=https"
      - "--entrypoints.websecure.address=:443"
      - "--certificatesresolvers.mytlschallenge.acme.tlschallenge=true"
      - "--certificatesresolvers.mytlschallenge.acme.email=${SSL_EMAIL}"
      - "--certificatesresolvers.mytlschallenge.acme.storage=/letsencrypt/acme.json"
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ${DATA_FOLDER}/letsencrypt:/letsencrypt
      - /var/run/docker.sock:/var/run/docker.sock:ro

  n8n:
    image: docker.n8n.io/n8nio/n8n
    restart: always
    ports:
      - "127.0.0.1:5678:5678"
    labels:
      - traefik.enable=true
      - traefik.http.routers.n8n.rule=Host(`${SUBDOMAIN}.${DOMAIN_NAME}`)
      - traefik.http.routers.n8n.tls=true
      - traefik.http.routers.n8n.entrypoints=web,websecure
      - traefik.http.routers.n8n.tls.certresolver=mytlschallenge
      - traefik.http.middlewares.n8n.headers.SSLRedirect=true
      - traefik.http.middlewares.n8n.headers.STSSeconds=315360000
      - traefik.http.middlewares.n8n.headers.browserXSSFilter=true
      - traefik.http.middlewares.n8n.headers.contentTypeNosniff=true
      - traefik.http.middlewares.n8n.headers.forceSTSHeader=true
      - traefik.http.middlewares.n8n.headers.SSLHost=${DOMAIN_NAME}
      - traefik.http.middlewares.n8n.headers.STSIncludeSubdomains=true
      - traefik.http.middlewares.n8n.headers.STSPreload=true
      - traefik.http.routers.n8n.middlewares=n8n@docker
    environment:
      - N8N_HOST=${SUBDOMAIN}.${DOMAIN_NAME}
      - N8N_PORT=5678
      - N8N_PROTOCOL=https
      - NODE_ENV=production
      - WEBHOOK_URL=https://${SUBDOMAIN}.${DOMAIN_NAME}/
      - GENERIC_TIMEZONE=${GENERIC_TIMEZONE}
    volumes:
      - ${DATA_FOLDER}/.n8n:/home/node/.n8n

.env

# Folder where data should be saved
DATA_FOLDER=/root/n8n/

# The top level domain to serve from
DOMAIN_NAME=<your own domain>

# The subdomain to serve from
SUBDOMAIN=n8n

# DOMAIN_NAME and SUBDOMAIN combined decide where n8n will be reachable from
# above example would result in: https://n8n.example.com


# Optional timezone to set which gets used by Cron-Node by default
# If not set New York time will be used
GENERIC_TIMEZONE=Asia/Tokyo

# The email address to use for the SSL certificate creation
SSL_EMAIL=<your email adress>

ドメインを設定する

Type: A
Name: n8n (or the desired subdomain)
IP address: <IP_OF_YOUR_SERVER>

はまったポイント

自分のドメインなのに「偽のサイトにアクセスしようとしています」

参考URL 「偽のサイトにアクセスしようとしています」が自分のサイトで表示されたらすること|SLOPOND

Search Consoleにログインして必要な対応を行なったら問題なくアクセスできました。

3年かけてコツコツ構築してきた在宅ワークスペース

コロナ禍からオフィスに出社せず、自宅からの業務をすることが増えましたが、3年かけた現状ここまで環境が整備されてきました。 現状を残すとともに要件や制約事項を満たすのによりよい方法があれば考えたいと思っているので整理のためにメモを残します。

自宅のワークスペース 2023.08.09

環境整備の要件

  • 仕事、プライベートで用いる複数のマシンがあるため、切り替えを容易にしたい
    • 異なるマシンであるが、用いるキーボードやマウス、ディスプレイ、ヘッドセットなどは同一のものとしたい
    • 各マシンの主な用途は以下の通り。いずれのマシンもType-Cによる映像、音声の出力が可能である。
      • Windows: プライベート → ゲーム、動画視聴など
      • Chromebook: プライベート → 文書作成、Linuxでの作業など
      • Mac: 業務用 → アプリ開発、画像編集など
  • iPhoneやiPadなどのタブレットの充電を容易にしたい
  • 会議出席時にリラックスしたくなる時があるのでケーブルレスのヘッドセットを使いたい
  • ヘッドフォン、ヘッドセットなどの充電は容易にしたい
  • ゲームや動画視聴、Udemyなどの研修を受講するときはヘッドホンよりはスピーカー派なのでスピーカーも置きたい
    • 可能であれば、それなりにいい音で聴きたい
  • 普段はパソコン仕事が多いが、メモやアイデア出しは紙のノートでやっているので、ノートを広げられるスペースは確保したい
  • 作業に必要な明るさは確保したい
  • 飲み物を飲みながら仕事をしたいが机上にこぼす危険度を下げたい
  • 可能であれば、窓から外が見えるとうれしい
  • 可能であれば、エアコンが効く場所で仕事がしたい

環境整備の制約

私のワークスペースを実現するにあたり、同居人たる家族から提示された制約事項(家族の希望なので当然満たしたい)は以下のとおり

  • カメラオンのオンライン会議時には家の様子が見えなくなるようにしてほしい
  • ケーブル類は台所から見たときに目立たないようにしてほしい
  • 大きめのフィギュア類は置かないこと

要件への対応

切り替えを容易にしたい

デスクの裏側 Anker PowerExpand 9-in-1 USB-C PD Dock ドッキングステーション

裏側はごちゃっとしておりますが、こちらのドッキングステーションに、各環境共通して使いたいものを接続しています。

  • キーボード
  • マウス
  • DAC
  • ヘッドセットのコネクタ
  • ディスプレイ

で、一番上に見えるType-CケーブルをWindows、Mac、Chromebookで接続変更すれば、そのまま使えるという算段です。 これで物理的な環境切り替えがグッと楽になりました。

ケーブルレスのヘッドセット

ヘッドフォンホルダーは便利

Logicoolのヘッドセットは非常に軽くて装着感もよいので、会議などで一番よくつかっています。 ケーブルレスなので、会議で自分がしゃべるターンでなければ、ソファに寝転んで対応できるし…。

Logicool 軽い

音楽を聴きたいときにはSonyを、iPadで動画を見たくなったときは、声をかけられても気がつけるように Shokzの骨伝導イヤフォンを使うというのがおおざっぱな使いわけかたです。

それなりにいい音でスピーカー

DACとスピーカー、そして小物

コスパすごいと評判のCreative Pebbleですが、確かにこれ インシュレーターがわりに使っているのは100均で購入した謎の板なのですが、これの本来の用途はなんだろうと思っています。

明るさの確保

夜の状況 Chromebook
BenQ ScreenBar スクリーンバー モニター 掛け式ライト【デスクライト monitor lamp モニターライト 】

夜になっても、手元を明るく照らし、ディスプレイも見やすくしてくれるモニター掛け式ライト。 明るさも自動調整してくれるのでとても快適です。

ノートを広げられるスペースの確保

直接置くとスペースを食うものは浮かせてしまうのがスペース確保につながります。ディスプレイとノートパソコン本体は浮かせてしまうのがよくて、空いた下スペースには物が置けます。

飲み物を飲みたいが机上にこぼす危険度を下げたい

IKEAのコースターを左手に配置しています。 通常のマグカップを置くには少し深すぎるので、同じくIKEAのコルクのコースターを敷いています。

制約への対応

ケーブルを目立たないようにする

テーブルの裏側

大きめのフィギュアは置かないこと

しろたん「シロック」と燭台切光忠こけし

しろたんと燭台切光忠のこけしを配置して癒やしとしています。

自分のアイコンはヘッドフォンなので「シロック」を配置した。 https://item.rakuten.co.jp/sirotan/361-08921s/

刀剣乱舞ONLINE ミニこけし 燭台切光忠 | 刀剣乱舞万屋本舗 https://touken-yorozuya.com/item/minikokeshi_02/

カメラオンのオンライン会議の時に家を見せない

仕切りありの状態

こちらの仕切りをオンライン会議や英会話の際に設置しております。 普段は以下のように目立たない場所に置いています。

仕切り収納

ベースとなる設備と機材

キーボードとマウス

キーボードとマウス

キーボードは家の中で使うことを考慮して、打鍵音がうるさくない軸を選んでいます。 他にiPadのタブレットを同時に使うことを考慮して、マウス・キーボードともBluetoothで接続変更可能なものを選んでいます。 マウスは机の上を広く使いたいために、トラックボールを主に使っています。

ディスプレイ

仕事で使うディスプレイはアンチグレアがよいですね。EIZOのディスプレイはさすがの品質です。 目も疲れづらいです。

デスク

IKEA ローヴァロール コンソールテーブル https://www.ikea.com/jp/ja/newsroom/range-news/20200831-ravaror-pub39d2f927

※テーブル下のワゴンとボックス、デスク左側のライトも同じコレクションから買いましたが、今では入手できない…

以上です。


yourpalm.jubenoum.com

3年前はこんな状態でした。家の中に自分の居場所がある状態というのを強く意識するようになったと思います。

#FGO 無料配布分でどれだけガチャを回せたのか 2020

広く知られている通り、Fate/Grand Orderにおける最高レアリティ「☆5」のガチャの出現確率は1%となっています。

f:id:atauky:20201231162515j:plain
提供割合

私はこのゲーム「福袋以外は無課金」で遊んでいます。プレイ開始は2017年6月22日です。で、今まで弊カルデアに来てくれた☆5サーヴァントのみなさんは以下のとおりです。

f:id:atauky:20201231164037j:plain

f:id:atauky:20201231164102j:plain

2017年 4騎(4回)

サーヴァント クラス 備考
ヴラド三世 バーサーカー 初の☆5
ナイチンゲール バーサーカー
フランシス・ドレイク ライダー
”山の翁” アサシン ピックアップ

2018年 8騎(9回)

サーヴァント クラス 備考
葛飾北斎 フォーリナー ピックアップ 宝具2(2回引けた)
アルジュナ アーチャー すりぬけ
謎のヒロインX アサシン ピックアップ
シャーロック・ホームズ アサシン ピックアップ
沖田総司 セイバー ピックアップ
沖田総司〔オルタ〕 アルターエゴ ピックアップ
シグルド セイバー ピックアップ
項羽 バーサーカー ピックアップ

2019年 10騎(9回)

サーヴァント クラス 備考
スカサハ ランサー 福袋
モードレッド セイバー ピックアップ
女王メイヴ ライダー すりぬけ
諸葛孔明〔エルメロイII世〕 キャスター ピックアップ
魔王信長 アベンジャー ピックアップ
巌窟王 エドモン・ダンテス アベンジャー ピックアップ
シトナイ アルターエゴ ピックアップ
オリオン アーチャー すりぬけ
スペース・イシュタル アベンジャー ピックアップ
スカサハ・スカディ キャスター ピックアップ

2020年 16騎(13回)

サーヴァント クラス 備考
ジャンヌ・ダルク アーチャー 福袋
オジマンティアス ライダー すりぬけ
ロムルス=クィリヌス ランサー ピックアップ
玉藻の前 キャスター 配布
ボイジャー フォーリナー ピックアップ
イスカンダル ライダー 福袋
アルトリア・キャスター キャスター ピックアップ
オデュッセウス ライダー すりぬけ
始皇帝 ルーラー ピックアップ
スカサハ ランサー ピックアップ 宝具2
卑弥呼 ルーラー ピックアップ
玄奘三蔵 キャスター すりぬけ
ネモ ライダー ピックアップ
坂田金時 バーサーカー ピックアップ
伊吹童子 セイバー ピックアップ
ヴリトラ ランサー ピックアップ

  2020年 1年で来てくれた☆5サーヴァントの数が2019年、2018年に比べて明らかに多いのですが、これは運に恵まれたのかどうなのか考えるために、1年間で無料配布でもらえる聖晶片、聖晶石、呼符の数から何回ガチャを回せるのかを割り出し、☆5サーヴァントのヒット率を出していきましょう。

続きを読む

Oracle Cloud Infrastructure (OCI) でSoftEtherを立ち上げてIPsecでVPN接続

f:id:atauky:20190507003936p:plain

VPN接続をしたい

yourpalm.jubenoum.com

などで述べていたとおり、出先での公衆無線LAN接続時にセキュリティを少しでも確保すべく、VPN接続を試みてきました。

歴代の方式を振り返りますと、

  • さくらのVPS上CentOS6.4にL2TP、IPsecのサーバを立てる
  • AWSでインスタンス(Ubuntu)をたててSoftEtherをインストール
  • AWS Lightsail上のUbuntuにSoftEtherをインストール

と進んできました。

LightsailはAWSで提供されるVPSサービスで3.50USDからサーバを使えます。ElasticIPの割当、1TB転送も含めてこのお値段なので、VPN接続を起動しておくにはリーズナブルでしばらくこれで運用していました。

料金 - Amazon Lightsail | AWS

次にやるなら永久無料枠のあるGCP(Google Cloud Platform)かなあと思っていたのですが、OCI(Oracle Cloud Infrastructure)は通信量が破格に安くAlways Free枠でインスタンスを起動できるのでこちらでやってみようと思ってみた次第です。

AWSと比べて低コストのCloud Infrastructure | Oracle 日本

続きを読む

今のところ在宅勤務がうまく行っている理由

新型コロナウィルスの影響で私自身、3月の後半ごろから不要不急の出社を控えるようになりました。7月となった今も、だいたい週1か週2回の出社のペースとなっています。

最近、上司と会話している中で、「テレワーク、在宅勤務が当たり前になり、アウトプットが減る人が多い中、逆に増えているように見える珍しい存在」というコメントをもらいました。

感染者数が4月を上回るなどのニュースが流れる日々、上司から、もっと詳しくうまくやれている理由を聞きたいなどと言われたときに整然と答えられるように、自分なりにうまくいっている理由を考えたいと思います。

まず前提として

  • 仕事:システムエンジニア
  • 家族構成:私、妻(主婦)、息子(大学生)、娘(小学生)

です。どうしても対面で仕事をする必要があるわけではないということですね。

自宅でそこそこ仕事がしやすい

仕事の内容がリモートでも問題が少ない

仕事柄、それほど、対面しなくても業務はできるなという感触はもともと持っていました。 システムエンジニアとして、設計書を作成したり、レビューしたり、ちょっとしたプロトタイプを作って「このやりかたでできるのではないかしら」などと示すのがここ3年位多かったですが、対面でなくとも、リモート会議で十分じゃないかと感じていました。 否応なくリモートで非対面の仕事をするようになって、私のこの感触にケチをつける人がいなくなったのは、やりやすさの根本としてあると思います。

仕事の環境が整っている

20年ほど前は自作パソコンを作るなどする程度にはその手のガジェットが好きなので、職場で提供されるより快適なキーボードとマウスは自宅にあり、家で仕事するほうが気分がいいです。 日中は妻が作業に使っていた環境を間借りして、デュアルディスプレイで仕事をさせてもらっている。椅子もそれなりのものを買っておいて良かったです。

妻の作業環境を間借り

ながら作業がしやすい

(どうでもいい)会議に参加するときに、対面だとながら作業をすると怒る人がいるが、リモート会議ならばれない。これはアウトプット量を増やすのに寄与しています。 あと、オンラインセミナーを片隅で視聴しながら、仕事をすることで、今までになかったインプット量が確保されているように思います。

家族の年齢

例えば5年前の家族の年齢構成で、今の新型コロナウィルス影響による「引きこもり」生活を強いられた場合、未就学児童が家庭にいる状態での在宅勤務は割り込みタスクが頻発して集中力が維持できないと想定されます。 幸い、大学生の息子はリモートで講義を受け、小学生の娘はZoomで塾の授業を受ける…そんな、リモート仲間意識が形成されているようにも感じます。

会社に行って仕事をするのがしんどかった

通勤時間が長い

  • 3月までの勤務地までの通勤時間1時間30分
  • 4月からの勤務地までの通勤時間1時間55分

往復ではなく片道である。4月から電車に乗っている時間は1時間25分程度。 通勤時間を使って、読書をしたり、ゲームの周回をこなしたりというのをしていたが、まあ、通勤だけで疲れますよね。 在宅勤務を決めた日は、食事も準備もゆったりできてよい。睡眠時間も長くなり、家族によるといびきも減っているとか。

メリハリがきかない

テレワークでの作業だと、オンオフのメリハリがつきにくく感じます。1日を通して効率よく作業するために取り組まれている工夫はありますでしょうか。 - サイボウズの「テレワーク」に関する情報を公開します

在宅勤務による、オンオフのメリハリがつきにくい問題については、サイボウズも試行錯誤しております。 始業前に着替える、散歩をしてみるなどそれぞれの社員が自分にあった方法を試しているようです。

と、在宅勤務の場合のオンオフの切り替えについて悩む人が多いようですが、私はその点ではそれほど悩んでいません。(それはそれでなぜかを自分でも知りたくは思いますが)

会社に行っただけで、仕事をした気になるよりは、ずっと良いかなと。

では出社した場合、何に悩んでいたかというと、 * 1時間 案件1 開発者ミーティング * 2時間 案件1 作業 * 1時間 昼休み休憩 * 2時間 案件2 作業 * 1時間 案件2 お客様と会議 * ....

…などのように、案件ごとに頭の中身のスイッチや、うまくいかなかったときのしょんぼり感を解消するのが職場だと難しいという感触です。

自宅だと「やっほ~い!今の会議はうまくいったぜ!」とクルクル回っても、家族から見られるだけですし(そしてそんな私を家族は見慣れている)、「うわーん!お客さん怖いよう(泣)」とか、「うへえ、作業思ったより進まねえ(ベッドにごろり)」といったように、気持ちを吐き出して次の作業に向かいやすいです。

職場だとトイレの個室で泣くくらいしかできねえ…

話しかけられたくない

一緒に仕事をする人から、「ちょっといいですか」と作業中割り込まれて質問をされるのが嫌だったというのに気がつきました。つい、すぐ「はいはい」と反応してしまうのですが、これがリモートだとチャットで 同僚「質問あるんだけど会話してもいい?」 私「15分後ならOKよ」 同僚「じゃあ15分後つなぐね」 と、こちらの都合のよいタイミングでコミュニケーションが取りやすいです。

対面でも「15分後でお願い」をやってもいいと思うのですけど、実際にやると「あの人には話しかけづらい」となってしまうみたいなんですよね。

もちろん、経験が浅い人からの「困っている」に対応するのは必要ですけれども、時間を決めて毎日会話をする時間を設けるなど、コントロールしやすい方法をとればいいのかなと思っています。

まとめ

個人的な向き不向きと、環境の影響それぞれあると思います。在宅勤務前提なのに、変わらない押印手続きなど苛立ちのポイントはあるのですが、それはそれで別途整理したいと思います。


以前買っていたキーボードとトラックボール、ノートPCスタンド…あってよかったと思います。


yourpalm.jubenoum.com

3年経過して、現在のワークスペースはこのような状態となりました。

AWS EC2を用いて必要な時だけ立ち上げるVPN環境

f:id:atauky:20190507003936p:plain

以前よりセキュアな接続環境を構築するべく、様々戦ってきたわけですが、 VPNを使うタイミングというのはかなり限られたタイミングなのであります。

  • 出先でFreeなWifiのサービスを使うとき
  • 中国出張時、ホテルからWifiをつないだ時の金盾越え

yourpalm.jubenoum.com yourpalm.jubenoum.com

そこで、AWS EC2でサービスを立ち上げt2.nanoの一番安い環境を 必要な時だけ立ち上げるという手法はとれないかと考え構築しました。 参考にしたURLを並べつつ、まとめておきます。

  • AWSのアカウントは持っている
  • SoftEtherを使ったことがある

ことを前提とします。

EC2のインスタンスは、起動するごとにPublicなIPアドレスが変わるので、その対策として無料ドメインを取得し、Route 53に登録したAレコードを起動する都度、更新する仕組みとしました。

サーバの構築

EC2の起動

docs.aws.amazon.com

  • 無料枠はすでに使い切っているので、Instance Typeはt2.nano
  • 使用するAMIイメージはAWS CLIが最初から入っていることからAmazon Linux AMI

L2TP環境の構築

SoftEtherを使います。下記URLの7章がServerのインストール手順になります。 その後、vpncmdやWindowsのサーバ管理ツールから、事前共有鍵およびユーザの設定を行います。

ja.softether.org

Shadowsocksサーバ環境の構築

L2TP自体は仕組み的に規制しやすいということで、数年前からShadowsocksが重宝されており、いくつかの有料含むVPNサービスではサービスが提供されているようです。 下記記事の後半部分「BBRの導入」以降を参考にBBRおよびShadowsocks環境をEC2上に起動します。

qiita.com

クライアントからの接続確認

ここまでのところで、クライアントとなる、Android/iOSからの接続を確認しておきましょう。

L2TP

OSの設定から行います。下記を参考にします。

ja.softether.org

ja.softether.org

Shadowsocks

下記のクライアントアプリを導入し、サーバ側のIPアドレス、ポート番号、パスワード、暗号化方式を合わせた設定を行い、接続を確認します。

play.google.com

RyoSS Lite

RyoSS Lite

  • Generate Line Inc.
  • Utilities
  • Free

EC2起動時のDNS自動更新

無料ドメインの取得/Route53への登録

Freenomというサービスで無料ドメインを取得し、 Route53に登録を行います。 dev.classmethod.jp

AWS CLIを用いた自動更新

Route53を更新できる権限を付与したうえで、AWS CLIを用いてDNS更新用のJSONを自動生成し、EC2起動時に自動でIPアドレスを更新できるようにします。

qiita.com

出先からAWSコンソールを操作する

スマートフォンアプリを導入します。 不要な時は停止すれば課金は発生しません。

aws.amazon.com

成果は...

1か月使ってみて、料金を確認してみたいと思います。