SSブログ

有料VPN(NordVPN)のホワイトリスト設定 その3(2023/01/08) [Linux]

そもそもNordVPNがどうやってVPN通信を実現しているのか謎です。まあ私、Linux全く詳しくなく素人ですし。そんな変な作り込みはやってないとは思うのですが、、、

ここにほぼ答えが書いてありましたね。
https://ro-che.info/articles/2021-02-27-linux-routing

すごく簡単に説明すると、iptables、ip rule(ポリシルーティング)、ip route(宛先ルーティング)の複合的要素で構成されていて、原理原則として、ip rule → iptables → ip routeの順に評価されます。各エントリの中身も若いものから順に評価されていきます。

■ip rule
 a1.明示的ルーティングが設定されているもの → 通常(main)ルーティングテーブル参照
 a2.「0xe1f1」とタグが付いていない通信 → VPN用ルーティングテーブル参照
 a3.通常(main)ルーティングテーブル参照

■iptables
 b1. NordVPNのホワイトリスト通信を:許可
 b2.任意の通信を「0xe1f1」とタグ付け(CONNMARK)
 b3.任意の通信を許可

■ip route(main)
 c1.通常ルーティングテーブル

■ip route(VPN用)
 c2.nordlynxトンネルへ投げる

以下は私の理解および個人的な解釈ですが、VPN対象通信はどのように評価(マッチ)されるかと言うと、
 a { a2 } → b { b2, b3 } → c { c2 } →
  → VPNカプセル化され再評価 → a { a3 } → b { b2, b3 } → c { c1 }
という動きに見えます。

一方、NordVPNホワイトリストの非VPN通信はどのように評価(マッチ)されるかと言うと、
 a { a2 } → b { b1 } → c { c2 } → ?
となり、非VPN通信にも関わらず、nordlynxトンネルへ投げられてしまいます。実際にtcpdumpでパケットキャプチャをすると、非VPN通信がトンネルインタフェース側で観測されました。

この理解だと、非VPN通信は「a2」の評価をされてしまってはダメなので、「a1」でip ruleの評価を終わらせてあげる必要があるようです。つまり、

NordVPN ホワイトリスト通信用の明示的ルーティングが必要と言うこと

です。
というわけで、明示的ルーティングを設定すると、ちゃんとホワイトリストが機能するようになりました。



タグ:VPN NordVPN
nice!(0)  コメント(0) 
共通テーマ:日記・雑感

nice! 0

コメント 0

コメントの受付は締め切りました