«前の日記(2010-03-16) 最新 次の日記(2010-06-07)» 編集

meta's blog - The Power To Serve

筆者について

FreeBSDを通じてOSSにささかな貢献を。

OSS活動をご支援いただける方を募集しています


2010-04-05 IPサイマルラジオ放送 radiko.jp

radiko.jp を地域外で聴く方法 (トンネリング編)

この記事は最新でない情報を含んでいます。最新の情報は2010年9月21日の記事を参照してください。

radiko.jp はIPアドレスベースで聴取地域の制限を行っているので、エリア内にトンネリングすればエリア外からでも聴取することができます。今回は SSH Port Forwarding によるradikoのトンネリング方法を解説します。 聴取可能地域と判定されるIPアドレスを持つサーバへSSHでログイン可能なことが前提です。

radiko.jp のDNSレコードは4月5日現在、次のようになっていて、こちらが radiko.jp の Web ページ (HTTP) の接続先です。

 ;; ANSWER SECTION:
radiko.jp.		264	IN	A	210.172.41.85
radiko.jp.		264	IN	A	210.172.41.88
radiko.jp.		264	IN	A	210.172.41.91

また、これとは別の音声のストリーミング再生(RTMP)の接続先があり、以下の

  • 219.103.32.110

はじめに、聴取可能地域に設置したサーバ (例: 千葉) に SSH Port Forwarding でトンネルを確保します。

$ ssh chiba.example.jp -N -f -L 10080:210.172.41.88:80 -L 11935:219.103.32.110:1935

radiko.jp の A レコードには IPアドレスが3つありますが、単なる DNS ラウンドロビンなのでどれか1つにのみトンネルを作れば OK です。

トンネルを確保したら、radiko 宛へ出て行くパケットをトンネルを通るようにフォワードしてやります。今回は FreeBSD なので ipfw を使いました。 ipfw で IPフォワーディングを使用するには IPFIREWALL_FORWARD オプションを有効にしてカーネルを再構築する必要があります。

ipfw に以下のようなルールを設定します。

ipfw add fwd 127.0.0.1,10080 tcp from any to  210.172.41.80/28{85,88,91} dst-port 80
ipfw add fwd 127.0.0.1,11935 tcp from any to 219.103.32.110 dst-port 1935

以上で地域外でも radiko.jp を聴取できるようになります。 クライアントPCで設定すればそのPCでのみ、ルータで設定すればそのルータを通るLAN内のPCすべてから聴取可能です。

イメージ図はこんな感じ。

この記事は最新でない情報を含んでいます。最新の情報は2010年9月21日の記事を参照してください。

本日のツッコミ(全3件) [ツッコミを入れる]
Σ 河内 賢二 (2012-05-24 16:47)

鹿児島にいる友人にRadikoを聞かせてあげようとして本サイトを基に設定をしましたが、つまづいています。有料でも構いませんのでご教授いただけないでしょうか。<br>固定のIPを振っているFreeBSDが一台ありこれを利用しようとしています。バージョンはちょっと古くFreeBSD4.10で、固定IPは61.117.236.195 pro600.nas.ne.jpです。<br>まず、optionsにIPFIREWALL_FORWARDを記入しカーネルを再構築しました。<br>次にssh pro600.nas.ne.jp -N -f -L 10080:219.103.34.226:80 -L 11935:219.103.32.110:1935としたところ。<br>ssh_exchange_identification: Connection closed by remote hostとなりました。<br><br>Radiko.shは以下でよろしいでしょうか<br>#!/bin/sh<br>if[`ps xwww|grep radiko_tunnnel|wc -l ` -eq 0 ]; then<br>echo -n 'Making Radiko Tunnel...'<br>ssh pro600.nas.ne.jp -N -f \<br> -L10080:219.103.34.226:80 \<br> -L10080:210.172.41.88:80 \<br> -L11935:219.103.32.110:1935 \<br> -L18935:219.103.34.226:8935 \<br> -L18935:210.172.41.88:8935 \<br> -i /usr/etc/.ssh/radiko_tunnel \<br> && echo 'OK!'<br>else<br> echo "Radiko Tunnel is alive."<br>fi<br><br>あと/etc/rc.confに<br>ipfw=/etc/ipfw<br>として<br>/etc/ipfwに<br>ipfwのルールを書いてファイルを置けばいいのでしょうか?。<br><br>FreeBSDは初心者です。<br>よろしくお願いいたします。<br><br>k.kawachi@nasuinfo.or.jp

Σ meta (2012-05-24 20:24)

ipfw 以前の問題として、ssh が繋がっていませんのでまずそちらを解決してください。

Σ 河内 賢二 (2012-05-25 09:42)

了解いたしました。<br>以前の文を削除していただけますか。<br>具体的なIPなどが記載しており、攻撃の対象になる恐れがあります。<br>よろしくお願いいたします。