Tailscaleの使用するIPアドレス

TailscaleのVPNに参加すると、その仮想的なNICに割り当てられるIPアドレスは100.*.*.*と言ったものになる。これについて、以下のドキュメントがある。

Tailscale側の説明

What are these 100.x.y.z addresses?

Tailscaleは、ネットワーク上の各ノードに一意の100.x.y.zアドレスを割り当てる。このアドレスは、各ノード(デバイスまたはサーバー)に対して安定した状態を保つ。つまり、デバイスが物理世界のどこに移動しても、変更されることはない。

具体的には、100.64.0.0/10サブネット(100.64.0.0から100.127.255.255まで)のアドレスを割り当てている。これは「キャリアグレードNAT」(CGNAT)アドレス空間と呼ばれ、RFC6598「IANA-Reserved IPv4 Prefix for Shared Address Space」によって予約されている。

特にこのアドレス空間を使用する理由はいくつかある。

  • ネットワークがすでに使用している一般的なプライベートアドレス(10.0.0.0/8、192.168.0.0/16など)と競合しない点
  • このアドレスは、あなたのLAN上でも公衆インターネット上でもない、NATされた中間トラフィックに使用されることが意図されている。このネットワーク上のデバイスがパブリック・インターネットにアクセスしたい場合、もう一度NATされることが想定されている。これは、Tailscaleのアドレスの使用方法と一致している。
  • このアドレスは、プライベートネットワークではなく、インターネットサービスプロバイダ(ISP)での使用が想定されている。Tailscaleは、通常のインターネットの上に共有ネットワークを構築するサービス・プロバイダーなのである。パケットがTailscaleのネットワークから出るとき、常に異なるアドレスが使われる。

我々は、0.x.y.z (x.y.z != 0.0.0) サブネットなど、他の未使用アドレス範囲を使用することを検討しているところだ。今のところ、これが古いオペレーティングシステムで問題を起こすかどうかは不明である。

キャリアグレードNAT

Wikipediaに説明がある。

現在のところ、このキャリアグレードNATは、NTTドコモ、KDDI、 Softbank、UQコミュニケーションズなどで使われているという。その意味としては、これらのプロバイダとインターネット接続契約をし、御家庭用のルータなり、スマフォで接続するとする。

この場合、従来であれば、そのルータやスマフォには、インターネットのグローバルIPアドレスが割り当てられていた。しかし、このIPアドレスが枯渇しているというので、プロバイダ側では、各契約者に100...*等のキャリアグレードNATアドレスを割り当てる。

これはこれで特に問題は無いのだが、唯一問題となるのは、例えば、自宅でウェブサーバを立ち上げて、それをネット側に公開したいなどという用途だろう。この方式では上は絶対に不可能になる。ユーザからネットへの通信はできるが、不特定多数が外からユーザに通信することは不可能になる。

このキャリアグレードNATアドレスが割り当てられているか否かは、御家庭であれば、実際にルータにどんなIPアドレスが割当てられているかを調べる必要がある。スマフォであれば、おそらく設定などで現在のIPアドレス割り当てが見れることだろう。

これが、TailscaleのVPN接続にどう影響するかは私はわからない。スマフォに対してプロバイダから割当てられた100.*.*.*のアドレスと、そのスマフォのVPNアドレスが競合してしまう可能性は確かにあるが、かなりの低確率だ。おそらくは問題にはならないのではないか?