筆者について
FreeBSDを通じてOSSにささかな貢献を。
- 日本xrdpユーザ会発起人
- xrdp developer
- FreeBSD developer
OSS活動をご支援いただける方を募集しています
2010-09-21 PortForwarding for radiko.jp
■ radiko.jp を地域外で聴くためのトンネリング(改)
この記事は最新でない情報を含んでいます。最新の情報は2010年12月4日の記事を参照してください。
radiko.jpを地域外で聴取するためのトンネリングについては4月5日のエントリで紹介しましたが、度重なる仕様変更で新たにトンネリングすべきポートが現れました。 PCのブラウザでFlashを使用して聴取する分には問題ありませんが、iPhoneアプリの「ラジ朗」で聴取する際には8935番ポートもフォワードしなければいけないようです。
これをふまえてポートフォワーディングの設定を見直すと、
$ ssh chiba.example.jp -N -f \ -L 10080:210.172.41.88:80 \ -L 11935:219.103.32.110:1935 \ -L 18935:210.172.41.88:8935
SSHのポートフォワーディングの設定は上記のように、ipfwのIPフォワーディングの設定は、
ipfw add 40000 fwd 127.0.0.1,11935 tcp from any to 219.103.32.110 dst-port 1935 ipfw add 40000 fwd 127.0.0.1,10080 tcp from any to 210.172.41.80/28 dst-port 80 ipfw add 40000 fwd 127.0.0.1,18935 tcp from any to 210.172.41.80/28 dst-port 8935
上記のようになります。ルール番号はそれぞれの環境にあわせて修正してください。
また、トンネリングの為のSSH接続が切れた際に再接続するために以下のようなシェルスクリプトを作成しました。使用するにはパスワード入力なしでログインするためにパスフレーズなしの鍵でログインするように準備しておく必要があります。この例の場合は radiko_tunnel,radiko_tunnel.pub という鍵ペアを使用しています。
radiko.sh: #!/usr/local/bin/bash if [ `ps xwww|grep radiko_tunnnel|wc -l` -eq 0 ]; then echo -n 'Making Radiko Tunnel...' ssh chiba.example.jp -N -f \ -L10080:210.172.41.88:80 \ -L11935:219.103.32.110:1935 \ -L18935:210.172.41.88:8935 \ -i /path/to/.ssh/radiko_tunnel \ && echo 'OK!' else echo "Radiko Tunnel is alive." fi
そしてこのスクリプトを5分毎に実行するようにcrontabに
*/5 * * * * /path/to/radiko.sh
とでも書いておけば5分毎にSSH接続を監視し、切れていれば再接続してくれます。