さてこの項では、せっかく設定した拠点間 VPN を活用して、海外から見られないサイト等を自動的に VPN トンネル経由でアクセスするよう Policy Based Routing の設定します。 対象ファームウェアは 1.9.1 です。
Policy Based Routing とは
目的のサイトや LAN 内の端末の IP アドレス、ポート番号等に応じて、インターネットにアクセスする際の経路を制御するやり方です。今回は、海外から見られないサイトを、前回設定した拠点間 VPN 経由でルーティングするよう設定してみます。これにより、設定したサイトに自宅からアクセスすると、自動的に VPN トンネル通って実家経由でアクセスするようになり、海外からでも見られるようになります。
海外から見られないサイトを見る際は、 L2TP などのリモートアクセス VPN でその地域のサーバーに一旦接続しておいて見るのが主流ですが、 L2TP はすべてのインターネットアクセスを VPN 経由にしてしまうので、接続中は関係ないサイトを見る際にもスピードが遅くなってしまいます。また、使う時には毎回接続・切断をしなければならないこと、 L2TP を使う端末全てであらかじめ L2TP の設定をしておかないと使えないのが面倒です。
一方、 Policy Based Routing をルーターで設定してしまえば、こんなメリットがあります。
ちなみにこれらすべてはあくまで ER-X の潜在能力の高さを示す設定例であって、実際の使用を推奨しているわけではありません。地域制限のかかっているサイトは、その地域内で見ましょう。
今回はこのような作業になります。
- 対象となるサイトの IP アドレスを調べる
- その IP アドレスで Policy Based Routing を設定する
今回は私の大好きな radiko.jp を例として設定してみようと思います。繰り返しますがこれは設定例であって、実際の使用を推奨しているわけではありません。
対象となるサイトの IP アドレスを調べる
まずは Mac の「ネットワークユーテリティ」を使って、対象となるサイトの IP アドレスを調べます。
Mac 画面右上の虫眼鏡マークから「ネットワークユーテリティ」を検索 Lookup タブをクリック "radiko.jp" を入力 Lookup ボタンをクリック
これで radiko.jp
の IP アドレスが 203.211.199.120
だとわかりました。
Policy Based Routing を設定する
続いて、この IP アドレスで Policy Based Routing を設定してみます。使うのは Firewall の modify
コマンドです。
## 設定モードに入る configure ## Firewall のアドレスグループ "radiko" を作成 set firewall group address-group radiko set firewall group address-group radiko address 203.211.199.120 set firewall group address-group radiko description radiko.jp ## 実家経由 ( tun0 もしくは vtun0 ) でルーティングするルーティングテーブルを作成 set protocols static table 1 set protocols static table 1 interface-route 0.0.0.0/0 set protocols static table 1 interface-route 0.0.0.0/0 next-hop-interface tun0 ## Firewall のルールセット "route_tun0" を作成 set firewall modify route_tun0 ## "radiko" のアドレスグループが目的地の時ルーティングテーブル 1 を使うルールを設定 set firewall modify route_tun0 rule 10 set firewall modify route_tun0 rule 10 action modiofy set firewall modify route_tun0 rule 10 description radiko.jp set firewall modify route_tun0 rule 10 destination group address-group radiko set firewall modify route_tun0 rule 10 modify set firewall modify route_tun0 rule 10 modify table 1 ## LAN 側インターフェース switch0 の FireWall の入力側に modify ルールの route-tun0 を設定 set interfaces switch switch0 firewall in modify route_tun0 ## 設定を有効化、保存 commit save
これで Policy Based Routing の設定完了です。設定が完了した瞬間から radiko.jp には tun0
経由でアクセスするようになり、結果的にサイトに日本経由でアクセスしていることになるので、内容が見られるようになります。もちろん LAN 内の端末なら iPhone からでも Mac からでも見られるようになります。
また対象となるサイトに関係なく、 Apple TV や PS4 等 L2TP の設定ができない端末をいつも強制的に tun0
経由でアクセスさせるようにするには、下記のようなルールを追加します。
ここでは例として PS4 に割り当てた固定アドレスを 192.168.1.51
とします。
configure set firewall group address-group PS4 set firewall group address-group PS4 address 192.168.1.51 set firewall group address-group PS4 description PS4 set firewall modify route_tun0 rule 20 set firewall modify route_tun0 rule 20 action modiofy set firewall modify route_tun0 rule 20 description PS4 set firewall modify route_tun0 rule 20 source group address-group PS4 set firewall modify route_tun0 rule 20 modify set firewall modify route_tun0 rule 20 modify table 1 commit save
つまり、アクセス元の IP アドレスによって tun0
にルーテイングされるよう Firewall の modify
の条件を設定する、というわけです。
しかしこの方法は万能ではなく、例えば radiko.jp の IP アドレスが変わってしまうとまた見られなくなっていまいます。もちろん変わるたびにその IP アドレスを先ほどのアドレスグループに追加すればいいのですが、あまりにその頻度が多かったり、変わる IP アドレスが大量だったりすると少々大変です。
そういう場合、 L2TP を使うのも一つの解決策で、この場合すべての通信が L2TP サーバーの置いてある国経由になるので、日本のサーバー経由でアクセスすれば IP アドレスが変わろうがなんだろうが常にきちんとアクセスできます。ただし関係のない他のサイトもすべて速度の遅い L2TP VPN 経由になってしまうのがネックですが。というわけで IP アドレスを調べたり云々がめんどい、という人は素直に L2TP を使った方が楽かもしれません。
しかし実は EdgeRouter には、このような場合に便利な、 Dnsmasq を用いた IP アドレスでなくドメイン名ベースでルーティングする機能があります。これはヤマハやシスコのルーターにもない素晴らしい機能です。次回はその Domain Based Routing を設定してみます。
以上、お疲れ様でした。
yabe.jp » Gadgets »