radikoだけPPPoEを通して地元のラジオを聞きたい
要約
IPv4 over IPv6環境でのradikoの地域判定問題を回避するために、
-
radiko.jp
へのパケットをPPPoEセッションに流す - 宛先FQDN指定で静的ルーティングできない端末(Google Home)は、DHCPの配布アドレスを固定して発信元IPアドレスで静的ルーティング
をやりましたという話です。対象はYAMAHAルータ。
背景
IPv4 over IPv6が流行ってますね。DS-LiteとかMAP-Eとか。
しかし、IPアドレスで地域を判定するradikoは東京/大阪扱いになってしまい、地方民には都会のラジオが聴けて便利地元局が聴けなくて不便です。
DS-LiteとPPPoEのマルチホームできればいいのだけど、手持ちの家庭用ルータでは不可能だったので、スマホのradikoアプリを使ったりしてました。
そこにYAMAHAルータを入れたので静的ルーティングを設定してみたという次第。
環境
- IIJmioひかり+IPoEオプション (DS-LiteとIPv4 PPPoEの同時利用が可能)
- YAMAHA RTX810
静的ルーティング設定
pp 1
にPPPoEセッション、tunnel 1
にDS-Liteトンネルの設定がされているものとします。
# IPフィルタ9000番にマッチしたパケットは pp 1 へ流す。その他は tunnel 1 へ。
ip route default gateway pp 1 filter 9000 gateway tunnel 1
# radiko.jp へのアクセスを捕捉する
ip filter 9000 pass * radiko.jp * * *
音声ストリームは別ドメインから来るようですが、地域判定自体はradiko.jp
にアクセスした時点で決まるので、これで大丈夫そうです。
インターフェース切り替えを楽にする
試行錯誤するときには片方のインターフェースの有効/無効を切り替えたくなるので、実際には'ip route'コマンドを以下のようにしています。
ip route default gateway pp 1 filter 9000 hide gateway tunnel 1 weight 0 hide gateway pp 1 hide
こうしておくと、tunnel disable 1
とするだけで全部のIPv4パケットがpp 1
へ流れるようになります。逆にpp disable 1
としてPPPoEを切断すれば、tunnel 1
が使われます。
hide
はインターフェースが無効の時に無視させる指定、weight 0
は両方のインターフェースが有効な時に片方を優先させるための指定です。weight 0
を外すと両方のインターフェースにパケットが分散されます。
DNSはNGNのIPv6 DNSを使っていれば何もしなくて大丈夫。
FQDN指定の罠
FQDNでのマッチングでは、ルータが実際のIPアドレスを知るためにDNSクエリをルータに処理させる必要があります。わざとルータのDNSキャッシュサーバ機能をスルーするような設定をしない限りは普通に動きます。
だがしかし、DHCPで配布されるDNSサーバアドレスを無視するGoogle Home miniってのがありまして。
こいつはGoogle Public DNS(8.8.8.8
)に直接DNSクエリを投げてます。YAMAHAルータであればshow ip connection
とかshow nat descriptor address detail
で確認できます。1
> show ip connection
(中略)
58784 4300 domain U 192.168.0.xxx:38782 > 8.8.8.8:53
ルータのDNSサーバ機能をスルーされるので、静的ルーティングのFQDN指定がマッチしなくなり、Google Homeに
(ラジオ局名)はお住まいの地域では利用できません
と言われてしまいます。
他の端末でradikoにアクセスしてからGoogle Homeに話しかければ回避できるけど面倒です。2
DNSサーバを変更する設定はなさそうなので、DHCPサーバから配布するIPv4アドレスを固定して、送信元IPアドレスを条件に静的ルーティングします。
対象のMACアドレスはGoogle Homeアプリか、show status dhcp summary
で調べましょう。
設定はこんな感じ。
# 追加するフィルタ番号を入れておく
ip route default gateway pp 1 filter 9000 9001 hide gateway tunnel 1 weight 0 hide gateway pp 1 hide
# ここは変わらず
ip filter 9000 pass * radiko.jp * * *
# 固定したIPアドレスを条件とするフィルタ
ip filter 9001 pass 192.168.0.199 * * * *
# DHCPのスコープ内からIPアドレスを選んで設定
dhcp scope bind 1 192.168.0.199 11:22:33:44:55:66
これでGoogle Homeに怒られずに済みます。
めでたしめでたし。
マニュアル等
- フィルタ型ルーティング
- ip route コマンド ※上記のページはweightキーワードの説明がない
- dhcp scope bind コマンド
Author And Source
この問題について(radikoだけPPPoEを通して地元のラジオを聞きたい), 我々は、より多くの情報をここで見つけました https://qiita.com/ykatombn/items/129d6e680d5e707ed20e著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .