咳といいます。

>  drubyでスクリプトを書いたのですが,client.rbを動かすと
> 
> /usr/lib/ruby/1.4/site_ruby/drb.rb:115:in `_id2ref': 0x40187388 is 
> recycled object (IndexError)
> 
> と弾かれます。どうすれば回避できるでしょうか?

server.rb, client.rb のポート番号が0になっているのが
直接の原因です。
それぞれを以下のように 7642, 7643 に変更すると動きました。

% diff client.rb client.rb-org
26c26
<   DRb.start_service("druby://#{`hostname`.chomp}:7643", nil)
---
>   DRb.start_service("druby://#{`hostname`.chomp}:0", nil)


% diff server.rb server.rb-org 
48c48
<   DRb.start_service("druby://#{`hostname`.chomp}:7642", nil)
---
>   DRb.start_service("druby://#{`hostname`.chomp}:0", nil)


が、これでは不十分でserver.rb でGCがおきるとnaming.bind()で
登録したオブジェクトがなくなってしまいます。

-- server.rb の最後を変更してGCさせてみる --
  naming.bind("q.Counter.1", Counter.new)
  naming.bind("q.ReverseCounter.1", ReverseCounter.new)

  ObjectSpace.garbage_collect	# GC

  DRb.thread.join
-- 


それで変数で参照するなどしてGCされないようにしてあげないと
だめです。# ちょっと面倒ですね。

-- GCされないように‥ --
  naming.bind("q.Counter.1", nc = Counter.new)
  naming.bind("q.ReverseCounter.1", rc = ReverseCounter.new)

  ObjectSpace.garbage_collect

  DRb.thread.join
-- 

nc, rc とかじゃなくて $shared とかそれっぽい変数で参照した方が
いいやもしれません。