筆者について
FreeBSDを通じてOSSにささかな貢献を。
- 日本xrdpユーザ会発起人
- xrdp developer
- FreeBSD developer
OSS活動をご支援いただける方を募集しています
2010-12-04 PortForwarding for radiko.jp
■ radiko.jp を地域外で聴くためのトンネリング (12月1日のリニューアルに対応)
2010年12月1日のradikoのリニューアルで、フォワーディングの設定変更が必要になりました。
radiko.jp のAレコードが変更になったためです。以前は3つのIPアドレスがDNSラウンドロビンで運用されていました。
;; 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
12月1日より下記のように変更されています。
;; ANSWER SECTION: radiko.jp. 194 IN A 219.103.34.226
変更点は 210.172.41.80/28 に転送していたパケットの転送先が 219.103.3.226 になった点だけのようです。
これをふまえて、SSHポートフォワーディングのスクリプトは以下のように変更になりました。
--- radiko.sh 2010-12-04 03:37:13.000000000 +0900 +++ radiko.sh.old 2010-12-04 03:32:43.000000000 +0900 @@ -2,9 +2,9 @@ if [ `ps xwww|grep radiko_tunnnel|wc -l` -eq 0 ]; then echo -n 'Making Radiko Tunnel...' ssh chiba.example.jp -N -f \ - -L10080:219.103.34.226:80 \ + -L10080:210.172.41.88:80 \ -L11935:219.103.32.110:1935 \ - -L18935:219.103.34.226:8935 \ + -L18935:210.172.41.88:8935 \ -i /path/to/.ssh/radiko_tunnel \ && echo 'OK!' else
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 219.103.34.226 dst-port 80 ipfw add 40000 fwd 127.0.0.1,18935 tcp from any to 219.103.34.226 dst-port 8935
以前の radiko.jp 地域外聴取についての記事はこちらです。
2010-12-10 ruby19-iconv
■ lang/ruby19 と converters/ruby-iconv の関係
FreeBSDでTwiProwlなどのruby1.9を必要とするソフトウェアを実行しようとすると、以下のようなエラーが出る場合があります。
<internal:lib/rubygems/custom_require>:29:in `require': no such file to load -- iconv (LoadError) from <internal:lib/rubygems/custom_require>:29:in `require' from /usr/local/lib/ruby/1.9/json/common.rb:2:in `<top (required)>' from <internal:lib/rubygems/custom_require>:29:in `require' from <internal:lib/rubygems/custom_require>:29:in `require' from /usr/local/lib/ruby/1.9/json.rb:1:in `<top (required)>' from <internal:lib/rubygems/custom_require>:29:in `require' from <internal:lib/rubygems/custom_require>:29:in `require' from twiprowl:16:in `<main>'
見ての通りiconvのロードに失敗しているだけなので、本来はportsからconverters/ruby-iconvをインストールすればOKなはずです。しかし、単に
cd /usr/ports/converters/ruby-iconv && make install
としたのでは下記のようにruby1.8用のものがインストールされてしまいます。
$ sudo make install ===> License check disabled, port has not defined LICENSE ===> Extracting for ruby18-iconv-1.8.7.302,1 ===> ruby18-iconv-1.8.7.302,1 depends on file: /usr/local/bin/ruby18 - found /bin/mkdir -p /usr/ports/converters/ruby-iconv/work /bin/ln -sf /usr/ports/lang/ruby18/work/iconv /usr/ports/converters/ruby-iconv/work/ ===> Patching for ruby18-iconv-1.8.7.302,1
直接extconfなどを実行してruby1.9用のiconvをインストールしている記事もありますが、これは正攻法ではありません。RUBY_DEFAULT_VER環境変数をセットして以下のようにビルドするのが正解です。
cd /usr/ports/converters/ruby-iconv && make RUBY_DEFAULT_VER=1.9 install
とするとruby1.8用のiconvとruby1.9用のiconvを別々のパッケージとして共存させてインストールすることが可能です。
$ pkg_info| grep iconv | grep ruby ruby18-iconv-1.8.7.302,1 An iconv wrapper class for Ruby ruby19-iconv-1.9.2.0,1 An iconv wrapper class for Ruby
どうしてこうなるのかの秘密は、ruby-iconvのMakefileと8-12行目あたりと、/usr/ports/Mk/bsd.ruby.mkの139-142行目にあります。
これは他の多くの ruby-* というportに対しても有効です。
2010-12-20 PortForwarding for radiko.jp
■ radiko.jp を地域外で聴くためのトンネリング (2010年12月のリニューアル rev.2)
12月4日の日記で2010年12月1日に行われたradikoのリニューアルに対応しましたが、対応が不完全でしたので訂正します。
12月1日にリニューアルが行われ、この記事を書いている現在ではradikowを聴くために必要なサーバは以下の2つのようです。前者が主にWebページを配信し、後者が音声ストリームを配信するサーバです。再生中の通信を監視したところ、転送すべきポートは以下のようでした。
- 219.103.34.226 (radiko.jp)
- 80/tcp
- 443/tcp
- 8935/tcp
- 8936/tcp
- 8937/tcp
- 219.103.34.224 (radiko.smartstream.ne.jp)
- 80/tcp
- 1935/tcp
Webブラウザ、radiko_player_air、radikker、ラジ朗など、聴取に利用するアプリによって必要なポートが異なる(全てのポートを転送しなくても聴ける)ようですが、ひとまずこれだけ転送しておけばどの環境でも聴けるようです。
SSH用のシェルスクリプトとipfw用のルールは気が向いたら更新します。
■ radiko SSHポート転送用シェルスクリプト & ipfw 用ルール
いずれも一例です。
SSH用シェルスクリプト
#!/usr/local/bin/bash if [ `ps xwww|grep radiko_autologin|wc -l` -eq 0 ]; then echo "Making Radiko Tunnel..." ssh chiba.example.jp -l user -N -f \ -L10080:219.103.34.226:80 \ -L10443:219.103.34.226:443 \ -L18935:219.103.34.226:8935 \ -L18936:219.103.34.226:8936 \ -L18937:219.103.34.226:8937 \ -L10081:219.103.34.224:80 \ -L21935:219.103.34.224:1935 \ -i /path/to/.ssh/radiko_autologin else echo "Radiko Tunnel is alive." fi
ipfw 用フォワーディングルール
40000 fwd 127.0.0.1,10080 tcp from ${inet}:${imask} to 219.103.34.226 dst-port 80 40000 fwd 127.0.0.1,10443 tcp from ${inet}:${imask} to 219.103.34.226 dst-port 443 40000 fwd 127.0.0.1,18935 tcp from ${inet}:${imask} to 219.103.34.226 dst-port 8935 40000 fwd 127.0.0.1,18936 tcp from ${inet}:${imask} to 219.103.34.226 dst-port 8936 40000 fwd 127.0.0.1,18937 tcp from ${inet}:${imask} to 219.103.34.226 dst-port 8937 40000 fwd 127.0.0.1,10081 tcp from ${inet}:${imask} to 219.103.34.224 dst-port 80 40000 fwd 127.0.0.1,21935 tcp from ${inet}:${imask} to 219.103.34.224 dst-port 1935
Σ ひで [PortForwarderの設定例も書いてください。お願いします。]