• 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

今までのネットワーク接続はeth0でTAP-WIN32のアダプタに接続し、ホストマチン(Windows)のインターネット共有している。この方法で簡単にゲストのLinuxから外部(インターネットなど)に接続することはできるけど、外部(社内ネットワーク)からはゲストので動いているサーバへアクセスできない。社内ネットワークではcoLinuxのインスタンスに勝手にIPアドレスを与えることはできない場合サーバを公開したいならホストからゲストへポートをフォーワードするしかない。

以下の設定はetho0にTAP-WIN32の設定が既にあることを前提としている。

  1. ホスト(Windows)側のcoLinuxの設定ファイルにslirpのインタフェースを追加する:

       1  eth1=slirp,,tcp:22:22/tcp:80:80/tcp:443:443
    

  2. ゲスト(Linux)側の/etc/network/interfacesにeth1を追加:

       1  # secondary network for external network access
       2  iface eth1 inet static
       3     address 10.0.2.15
       4     network 10.0.2.0
       5     broadcast 10.0.2.255
       6     netmask 255.255.255.0
       7     gateway 10.0.2.2
    
    10.0.2.15は適当なアドレスだけど、gatewayの10.0.2.2は特別で、slirpデーモンのデフォルトアドレスだ。

この記事ではcolinux0.7.3のUbuntuで行なったけど、DebianやFedoraでも設定が同じだろう。ちなみに、XAMPPやandLinuxのようなパッケージを使えばこの設定は不要らしい。

注意点

  • windows側のfirewall設定
  • 複数default gatewayのルーティング問題。解決策が二つ:
    1. SLiRPのgatewayのみにする。要するにeth0/tapにgatewayを定義せず、インターネットの通信をslirpに通す。このやりかたがわりと簡単だけど、SLiRPが若干遅いことと10.0.2.2(slirpデーモン)以外のところにpingできない
    2. 複数default gatewayのルーティングの設定をする (iproute2でpolicy routing)
  • SLiRPはIPv6に対応していないため、ゲスト側で効果したいサービスがIPv6のアドレスにバインドしてしまうとうまくいかない。netstat -n --inet6 --listeningなどで確認んできる。たとえば、sshの場合は:
       1      Proto Recv-Q Send-Q Local Address    Foreign Address    State      
       2      tcp6        0      :::22             :::*               LISTEN 
    
    この問題を解決するにはIPv6を無効化にするか、各種サービスを明示的にIPv4のアドレスに設定する。

参考

posted by Face lchin on Thu 27 Nov 2008 at 15:58

先日に参加したRailsイベントfishというものを紹介してもらった。zshbashのようにUnixで使うコマンドシェルですが、fishのフルネーム(Friendly Interactive SHell)からもわかるように、使いやすさと対話的な利用を目的としている。以下の特徴があるらしい:

  • 基本的に色付けをする
    • シンタクスハイライト
    • コマンドやオプションのスペルチェック
  • htmlヘルプ (help打ったらブラウザが起動する)
  • 説付きTAB補完
  • サブシェルがない
  • ミニマルかつシンプルな文法

Mac OS Xでインストールするには:

   1  % sudo port install fish

Mac OS Xでfishchshしたければ、/etc/shellsfishを追加しなければならない。

   1  # List of acceptable shells for chpass(1).
   2  # Ftpd will not allow users to connect who are not using
   3  # one of these shells.
   4  
   5  /bin/bash
   6  /bin/csh
   7  /bin/ksh
   8  /bin/sh
   9  /bin/tcsh
  10  /bin/zsh
  11  /opt/local/bin/fish

使ってみるとこんな感じ:

  • 書きかけのコマンドが赤色 fish01.jpg
  • 存在しているコマンドが緑色 fish02.jpg
  • helpw3mが起動する fish03.jpg
  • funcedでビルトインの実装をみる(インデント、シンタクスハイライトあり) fish04.jpg
  • manもスマートに補完されている fish05.jpg

今までは正直zshbashのほとんどの機能を使っていませんし、しばらくはfishchshしてメインシェルとして使ってみることにする。

posted by Face lchin on Tue 25 Nov 2008 at 19:38

シドニーに帰省するついでに、11月19日に地元のRuby on Railsイベントに参加してきた。参加したというか、LTでRubyKaigi 2009の宣伝してきた。オリジナルな発表ではなく、角谷さんRubyConf 2008のLTスライドを無断に手を加えて再利用した。すみません!ありがとう!

Why You Should Attend RubyKaigi 2009

Slideshare: Why You Should Attend RubyKaigi 2009

他のLTは日本にイベントに鈍れず、クオリティがけっこう高かった。

  • RailsCamp 4のイベントレポートとふりかえり
  • いくつかのライブラリの紹介とデモ:
    • iUi:RailsによるiPhone開発ライブラリ -Prawn: PDF生成ライブラリ
  • デモをいくつ
  • ネタトークをいくつ
    • paml: Passenger+haml
    • C64風プレゼンでView/Controllerのrefactoringを紹介
  • 最後のおまけトークはDr Nictabtabというbashでいろんなコマンドのtab補完拡張を自動生成するプロジェクトだった。

バーで開催したから、ビールを片手に発表した。あ、たのしかった。

posted by Face lchin on Thu 20 Nov 2008 at 01:34

今までMac OS XのTerminal.appでGNU Screenのスクロールバックバッファーをマウスで操作できなかったけど、やっと設定方法がわかった。

.screenrcに下記の設定を追加すればスクロールできるようになる。

   1  termcapinfo xterm* ti@:te@

これでコピーモードを使わなくて済む! 便利。

引用元:Scrolling, copying in Mac OS X

posted by Face lchin on Wed 19 Nov 2008 at 09:28
Contents
SLiRPによって社内ネットワークにcoLinux上のサーバを公開する方法
「fish」(Friendly Interactive SHell)を使ってみる
Oceania RoR November 2008 Sydney MeetupでRubyKaigi 2009を宣伝してきた
Mac OS XのTerminal.appでGNU Screenのバッファーを普通にスクロールしたい
Services from s21g
twpro(ツイプロ)
Twitterプロフィールを快適検索
地価2009
土地の値段を調べてみよう
MyRestaurant
自分だけのレストラン手帳
Formula
ブログに数式を埋め込める数式コミュニティ