EdgeRouter X – 9. 海外から見られないサイトを見る1 ( Policy Based Routing )

さてこの項では、せっかく設定した拠点間 VPN を活用して、海外から見られないサイト等を自動的に VPN トンネル経由でアクセスするよう Policy Based Routing の設定します。 対象ファームウェアは 1.9.1 です。

Policy Based Routing とは

目的のサイトや LAN 内の端末の IP アドレス、ポート番号等に応じて、インターネットにアクセスする際の経路を制御するやり方です。今回は、海外から見られないサイトを、前回設定した拠点間 VPN 経由でルーティングするよう設定してみます。これにより、設定したサイトに自宅からアクセスすると、自動的に VPN トンネル通って実家経由でアクセスするようになり、海外からでも見られるようになります。

海外から見られないサイトを見る際は、 L2TP などのリモートアクセス VPN でその地域のサーバーに一旦接続しておいて見るのが主流ですが、 L2TP はすべてのインターネットアクセスを VPN 経由にしてしまうので、接続中は関係ないサイトを見る際にもスピードが遅くなってしまいます。また、使う時には毎回接続・切断をしなければならないこと、 L2TP を使う端末全てであらかじめ L2TP の設定をしておかないと使えないのが面倒です。

一方、 Policy Based Routing をルーターで設定してしまえば、こんなメリットがあります。

L2TP の接続切断が不要
一度設定してしまえば、ルーターが自動的にそのサイトを VPN トンネル経由でルーティングするので、リモートアクセス VPN の接続・切断が不要です
LAN 内の端末に設定不要
ルーターが自動的にルーティングするので、 LAN 内の端末に L2TP の設定等をする必要がありません
Apple TV や PS4 でも使える
L2TP の設定ができない Apple TV や PS4 などの端末でもサイトに VPN 経由でアクセスできるようになります
スピードが落ちない
全ての通信が VPN 経由になってしまい、他のサイトを見るときもスピードが遅くなってしまう L2TP でのリモートアクセス VPN に対し、他のサイトにアクセスする際は VPN 経由でないのでスピードの低下がありません

ちなみにこれらすべてはあくまで ER-X の潜在能力の高さを示す設定例であって、実際の使用を推奨しているわけではありません。地域制限のかかっているサイトは、その地域内で見ましょう。

今回はこのような作業になります。

  1. 対象となるサイトの IP アドレスを調べる
  2. その IP アドレスで Policy Based Routing を設定する

今回は私の大好きな radiko.jp を例として設定してみようと思います。繰り返しますがこれは設定例であって、実際の使用を推奨しているわけではありません。

radiko


対象となるサイトの IP アドレスを調べる

まずは Mac の「ネットワークユーテリティ」を使って、対象となるサイトの IP アドレスを調べます。

Mac 画面右上の虫眼鏡マークから「ネットワークユーテリティ」を検索
Lookup タブをクリック
"radiko.jp" を入力
Lookup ボタンをクリック

screen-shot-2016-10-08-at-9-03-48-pm

これで 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 » EdgeRouter X – 9. 海外から見られないサイトを見る1 ( Policy Based Routing )