本記事はプロモーションを含みます
NordVPNにはOnion over VPNという匿名化機能があります。NordVPNの公式サイトを見ると、いわゆる「Tor over VPN」として動作すると解説されています。
なるほど、これを見るとTor経由で送信先に到達するように見えますね。NordVPNを紹介しているブログ記事を見ても、大抵はOnion over VPNについて『Torを経由するので匿名性が高い』と解説しています。
でもそれ本当ですか?
Contents
NordVPNのOnion over VPN通信をキャプチャする
確かめる方法は簡単です。実際にOnion over VPNで通信し、通信先でパケットキャプチャして送信元IPアドレスを確認します。Torの出口ノードのIPアドレスは公開されていますから、キャプチャした際の送信元IPアドレスがTorの出口ノードのIPアドレスリストに含まれているのか確認すれば良いでしょう。
参考:check.torproject.org/exit-addresses
Onion over VPNは次のように接続しています。赤枠の箇所をクリックしてOnion over VPNで接続しました。Netherlands Onion #6というサーバーを使っているようです。
パケットキャプチャするサーバーは手頃な価格で利用できるVPSを使うことにしました。幸いなことにConoHa VPSには1時間プランがあるので、メモリーを1GB搭載しているUbuntu Linuxが動作するVPSを契約しました。
HTTP/HTTPSがTor経由で通信するか確認する
Onion over VPNでもっとも利用されていると思われるHTTP/HTTPSを確認します。HTTP/HTTPSとはWEB通信です。皆さんが今ご覧になっているこのページもHTTPSで通信しています。
まず最初にVPSで次のコマンドを実行してパケットキャプチャを開始します。ポート番号はHTTPの80番とHTTPSの443番を指定します。
tcpdump -i eth0 -tttt -nn tcp and port 80 or 443
次にNordVPNを実行しているWindows端末でPowerShellを立ち上げ次のコマンドを実行します。IPアドレス(160.251.15.172)は今回利用しているVPSのグローバルIPアドレスです。
Test-NetConnection 160.251.15.172 -P 80
Test-NetConnection 160.251.15.172 -P 443
パケットキャプチャの結果は次のとおりです。上がHTTPで下がHTTPSです。
2023-08-11 18:36:52.442188 IP 192.42.116.200.15009 > 160.251.15.172.80: Flags [S], seq 4011548622, win 65535, options [mss 1460,nop,wscale 6,sackOK,TS val 3686880582 ecr 0], length 0
2023-08-11 18:37:20.843815 IP 185.220.101.20.25136 > 160.251.15.172.443: Flags [S], seq 3873586014, win 65535, options [mss 1460,sackOK,TS val 3532875786 ecr 0,nop,wscale 9], length 0
送信元IPアドレスは「192.42.116.200」と「185.220.101.20」です。
Torの出口ノードのIPアドレスリストを確認すると、どちらのIPアドレスもリストに含まれていました。つまり、Tor経由の通信であるということです。
ExitAddress 192.42.116.200 2023-08-11 08:04:33 ExitNode 8E1CB2E2467989A9369284E09669AD0FD691075E Published 2023-08-10 19:57:56 LastStatus 2023-08-11 07:00:00
ExitAddress 185.220.101.20 2023-08-11 08:28:29 ExitNode 82CD1F493545A0FA89EC05593B64B6B628DEADB7 Published 2023-08-10 22:01:25 LastStatus 2023-08-11 08:00:00
この結果からHTTP/HTTPSはTorを経由する「Tor over VPN」で通信していることが分かります。
SSHがTor経由で通信するか確認する
次にSSHを確認することにしました。SSHはリモートログインで使われる通信です。
まず最初にVPSで次のコマンドを実行してパケットキャプチャを開始します。ポート番号は22番を指定します。
tcpdump -i eth0 -tttt -nn tcp and port 22
次にNordVPNを実行しているWindows端末でPowerShellを立ち上げ次のコマンドを実行します。前回のHTTP/HTTPS通信のときと異なるのはポート番号だけです。
Test-NetConnection 160.251.15.172 -P 22
パケットキャプチャの結果は次のとおりです。
2023-08-11 18:42:34.349405 IP 213.232.87.219.50341 > 160.251.15.172.22: Flags [S], seq 903778852, win 64860, options [mss 1380,nop,wscale 8,nop,nop,sackOK], length 0
送信元IPアドレスは「213.232.87.219」です。
Torの出口ノードのIPアドレスリストを確認すると、このIPアドレスは見当たりません。つまり「Tor経由ではない」ということです。
では、このIPアドレスは何でしょうか?IPアドレスをWHOISで調べてみると次の回答がありました。
inetnum: 213.232.87.0 - 213.232.87.255 netname: NORDVPN-L20190921 descr: Packethub S.A. country: NL org: ORG-PS409-RIPE admin-c: AG25300-RIPE tech-c: AG25300-RIPE status: ASSIGNED PA mnt-by: de-tt1data-1-mnt mnt-routes: de-tt1data-1-mnt created: 2019-09-21T12:49:37Z last-modified: 2020-12-19T11:43:54Z source: RIPE
「213.232.87.219」はNordVPNが所有するIPアドレスのようです。
あれれ?ちょっと待ってください。気になる箇所があります。countryが「NL」となっています。つまり、Netherland(オランダ)のIPアドレスということです。
うーん…この国の名前、どこかで見たような気がします。
思い出しました!わたしが接続しているVPNサーバーは「Netherlands Onion #6」というサーバーです。
もしかして「213.232.87.219」は、わたしが接続している「Netherlands Onion #6」のIPアドレスではないでしょうか?確認するためにOnion over VPNで接続中のWindows端末でWiresharkというパケットキャプチャツールを実行してみました。
以下のキャプチャはそのときのものです。WireGuardで「213.232.87.219」と通信しています。予想通り、これは「Netherlands Onion #6」のIPアドレスです。
つまり、Onion over VPNで接続中にSSH接続するとTorを経由せずVPNサーバーが直接アクセスするということです。
RDPがTor経由で通信するか確認する
もう結果は分かっていますがRDP(Remote Desktop Protocol)も確認してみましょう。RDPはWindowsマシンにリモートアクセスする際に利用されるリモートデスクトップ通信です。
VPSで次のコマンドを実行して着信を待ちます。
tcpdump -i eth0 -tttt -nn tcp and port 3389
次にNordVPNを実行しているWindows端末でPowerShellを立ち上げ次のコマンドを実行します。IPアドレスは今回利用しているVPSのグローバルIPアドレスです。
Test-NetConnection 160.251.15.172 -P 3389
結果は次のとおりです。
2023-08-11 19:08:09.082695 IP 213.232.87.219.50567 > 160.251.15.172.3389: Flags [S], seq 2307983898, win 64860, options [mss 1380,nop,wscale 8,nop,nop,sackOK], length 0
送信元IPアドレスは「213.232.87.219」です。やはりRDPもTorを経由していません。このあとFTPなど別のポート番号も試してみましたがやはり送信元IPアドレスは「213.232.87.219」でした。
まとめ
まとめると、NordVPNのOnion over VPNはHTTP/HTTPSについてはTor経由で接続する「Tor over VPN」で通信しますが、それ以外のプロトコルについてはVPNサーバーが直接接続しているようです(全ポートを確認したわけではないですが、おそらくHTTP/HTTPSだけ)。
実はこの結果は最初から予想していました。というのも、いまのところTorはTCPのみサポートしているためICMPやUDPは「Tor over VPN」で通信できません。ですからOnion over VPNを使ったとしても、すべての通信がTorを経由するというのは無理筋な話というわけです。
SSHについてはTorを経由させる方法があるのですが、それはクライアント側(接続元)でプロキシ設定する必要があるので、Onion over VPNを使っているからといってSSH接続がTor経由になるはずがないんです。
普通に考えればTor経由になる通信は限定されるというのは当然なのですが、公式サイトでも詳しく解説していないので全ての通信がTor経由になるものと誤解されている方が多いのではないでしょうか。
ですから、Onion over VPNは仕様をよく理解した上で利用されることをおすすめします。
Tor経由でSSH接続したいという方は次の記事で詳しく方法を解説しています。興味のある方はご覧ください。
いつも勉強させてもらってます。TorについてですがAppStore のアプリにTorがあるのですがこれはパソコンのTorと同じ機能でしょうか。もしご存知でしたら教えて下さい。
コメントありがとうございます。
Onion Browserを指していらっしゃるかと思います。
こちらはiOSの制限などにより、現時点ではパソコンのTor Browserと同じ機能は提供されません。