有料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 ホワイトリスト通信用の明示的ルーティングが必要と言うこと
です。
というわけで、明示的ルーティングを設定すると、ちゃんとホワイトリストが機能するようになりました。
ここにほぼ答えが書いてありましたね。
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 ホワイトリスト通信用の明示的ルーティングが必要と言うこと
です。
というわけで、明示的ルーティングを設定すると、ちゃんとホワイトリストが機能するようになりました。
コメント 0
コメントの受付は締め切りました