LoginSignup
0
0

踏み台サーバに NordVPN Mesh Network を導入

Last updated at Posted at 2024-01-05

概要

NordVPN の Mesh Network 機能を用いて、外部のネットワークからホームネットワーク内のデバイスに踏み台サーバ経由でアクセスできるようにする。
さらに Traffic Routing を用いて、クライアントからホームネットワーク内のデバイスに LAN の IP を使用してアクセスできるようにする。

meshnet.drawio.png

Bastion 側の設定

NordVPN クライアントのインストール

NordVPN クライアントをインストールする:

sh <(curl -sSf https://downloads.nordcdn.com/apps/linux/install.sh)
sudo usermod -aG nordvpn $USER
nordvpn login

(参考:https://nordvpn.com/ja/download/linux/

初期設定

ホームネットワーク内における接続に VPN が適用されないようにする (例:subnet が 192.168.8.0/24 の場合):

$ nordvpn allowlist add subnet 192.168.8.0/24

NordVPN に接続する

$ nordvpn connect

メッシュネットワークを有効化する。

$ nordvpn set meshnet on

# Check peer list
$ nordvpn mesh peer list

Mesh Network に登録した Peer ノードには、<username>-<moutnain>.nord のようなドメインが自動で割り当てられる。

(参考:- https://meshnet.nordvpn.com/getting-started/how-to-start-using-meshnet/using-meshnet-on-linux)

NordVPN Token を作成

NordVPN Dashboard ページ内にある NordVPN を手動で設定 のリンク先よりアクセストークンを発行する。

Crontab で NordVPN へのログインを自動化する

Bastion 側を常に NordVPN に接続したままにするため、crontab -e を実行し、crontab に次のコマンドを登録する。次の例では 半日に1回 NordVPN にログインする。

0 0,12 * * * nordvpn login --token <nordvpn_token> && nordvpn connect

<nordvpn_token> には上の手順で作成したトークンを用いる。

Traffic routing の許可

手順は https://meshnet.nordvpn.com/features/routing-traffic-in-meshnet に従う。

ピアのホスト名は nordvpn mesh peer list から確認する。

$ nordvpn mesh peer routing allow <peer_host>
$ nordvpn mesh peer local allow <peer_host>
$ nordvpn set lan-discovery enable

Laptop 側の設定

NordVPN クライアントをインストール

https://nordvpn.com/ja/download に従って、ラップトップに NordVPN クライアントをインストールする(本記事では Macbook を使用する)。

NordVPN クライアントを起動およびログインし、クイック接続ボタンを押すか地図上の地域を選択して NordVPN サーバに接続する。

connect.png

Mesh Network の有効化

次の手順により Traffic routing を有効化する。

  1. 左メニューの Mesh Network 設定のアイコンを選択する
  2. メッシュネットワークを有効化する
  3. すべてのトラフィックをルーティング をクリックする

console.png

SSH 設定

~/.ssh/config に踏み台の情報を追加する。

~/.ssh/config
Host bastion
  User <bastion-user>
  Hostname <username>-alps.nord

Host server
  ProxyCommand ssh <bastion-host> -W %h:%p
  User <server-user>
  Hostname 192.168.8.20

次のコマンドを実行し、別ネットワーク上のクライアントから、ホームネットワーク上のデバイスに LAN 内の IP に SSH でログインできることを確認する。

ssh server

まとめ・感想

ラップトップと踏み台サーバからなる Mesh Network を作成し、外部ネットワークからホームネットワークにリモート接続できること、および Traffic Routing で LAN の IP を用いてホストが解決できることを確認した。
Mesh Network では NordVPN を仲介し、クライアント同士で VPN を確立するため、踏み台サーバを外部ネットワークに公開する必要がない利点がある。

一方、筆者の環境だけかもしれないが、クライアント側 (Macbook Pro M2) から Mesh Network へに再接続しようとすると失敗したり、Traffic Routing を適用して SSH ログインすると通信が非常に低速になるなど、不安定さが気になる場面がいくつかあった。このあたりで改善できる部分があれば、後に追記する予定...。

0
0
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
0
0