coLinux(0.7.x)のインストール [TAP-Win32でのルータ接続]

この方法の目標は下図のネットワークを構築することです。 設定は4段階あります。

  1. coLinux設定ファイルの修正
  2. Host PCの設定
  3. coLinux内の設定
  4. LAN上の他の機器の設定

network-router

coLinux設定ファイルの修正

TAP-Win32の確認

インストール時に TAP-Win32をインストールするように選択しておくと、 「ネットワークとダイヤルアップ接続」に アイコンが一つ増えているはずです (coLinuxが起動していない状態では×印がついています)。 プロパティを見ると接続の方法のところに 「TAP-Win32 Adapter V8 (coLinux)」と表示されるので判別できるはずです。

network-property

TAP-Win32のアイコンが一つだけの人は、 coLinuxの設定ファイルを特にいじる必要はありません。 設定ファイルに以下の様な行があればOKです。 coLinuxが自動的にTAP-Win32を認識します。

[plain]
eth0=tuntap
[/plain]

TAP-Win32のアイコンが2個ある人(coLinuxを同時に複数立ち上げる場合等)はちょっと注意が必要です。 coLinuxの設定ファイルに使用するTAP-Win32を指定しなければなりません。 これはcoLinuxの設定ファイルで行うのですが、 TAP-Win32のアイコンの名前が日本語だとうまくいきません。 まず、アイコンの名前を半角英数字に変えます(例えば、"coLinux Network"とします)。

coLinux 0.7.1(20051013)では、この接続の名前にスペースが入っているとエラーがでるようです。スペースが含まれない名前にしておくことをお勧めします。

次に、coLinuxの設定ファイルのtuntapの部分を 以下のように書き換えます。

[plain]
eth0=tuntap,”coLinux Network”
[/plain]

このようにすると、coLinuxが使用するTAP-Win32を指定することができます。

設定ファイル例

この方法の場合の私のcoLinux設定ファイルは以下の通りです。 必要に応じてtuntapの部分を書き換えてください。

[plain]
kernel=vmlinux
cobd0=c:\coLinux\root.img
cobd1=c:\coLinux\swap.img
root=/dev/cobd0
ro
initrd=initrd.gz
mem=128
eth0=tuntap
[/plain]

Host PCの設定

TAP-Win32の設定

NAT接続の設定をしてしまった人は、 Host PCのインターネットの共有の設定を必ずオフにしておいてください。

まず、仮想ネットワークデバイスのTAP-Win32のアドレスを 192.168.11.1に設定します。

TAP-Win32のアドレスの設定は簡単です。 「コントロールパネル」→「ネットワークとダイアルアップの設定」と 開いて、 「ローカル エリアの接続 (デバイス名がTAP-Win32 Adapterのもの)」を 右クリックしてプロパティを表示させます。

tap-property

さらに、「インターネット プロトコル(TCP/IP)」を選んで 「プロパティボタン」を押します。 すると、IPアドレスが設定できるので、「次のIPアドレスを使う」を選んで

  • IPアドレス: 192.168.11.1
  • サブネットマスク: 255.255.255.0
  • デフォルトゲートウェイ: (空欄)
  • 優先DNSサーバ: (空欄)
  • 代替DNSサーバ: (空欄)

とします。

tap-address2

ルータ機能の設定

次に、Windows2000のルータ機能をオンにします。 これにはまず、 「コントロールパネル」→「管理ツール」→「サービス」を開きます。 このウィンドウの右側にいろいろなサービスの名前がありますので 「Routing and Remote Access」を見つけてダブルクリックします。

そして表示されたウィンドウの 「スタートアップの種類」を「自動」にして「適用」ボタンを押します。 そうすると「開始」ボタンが有効になるのでこのボタンを押します。 ちょっとだけメッセージ用のウィンドウが表示されますので、 それが消えたら「OK」ボタンを押してこのウィンドウを閉じます。

tap-routing

もう一度「サービス」を開いて、 「Routing and Remote Access」の「状態」が「開始」に、 「スタートアップの設定」が「自動」になっていることを 確認しておきましょう。

service

hostsファイルの修正

最後に、Host PCのhostsファイルを修正して、 coLinxのホスト名とIPアドレスを追加しておきましょう。 hostsファイルはC:WINNTsystem32driversetcにあります (Windowsのフォルダがc:WINNTの場合)。 メモ帳で開いて、以下の行を追加しておきましょう。

[plain]
192.168.11.2 colinux
[/plain]

以上で、host PC側の設定は完了です。

coLinux側の設定

colinux-consoleからrootでログインします。 以降はcolinux-consoleから操作します。

coLinuxのIPアドレスを変更するには、 /etc/network/interfaceを変更します。 変更する為のエディタコマンドはviかeditorが良いでしょう。

[plain toolbar=false gutter=false highlight_lines=”1,2″]
# cd /etc/network
# editor interface
[/plain]

変更する内容は次のようにします。 IPアドレスをこれ以外にしたい人はaddressとgatewayのところを 書き換えてください。

[plain]
auto lo eth0

iface eth0 inet static
address 192.168.11.2
gateway 192.168.11.1
netmask 255.255.255.0

iface lo inet loopback
[/plain]

/etc/network/interfaceの書き換えが完了したら、 以下のコマンドでそれを反映させます。

[plain toolbar=false gutter=false highlight_lines=”1″]
# /etc/init.d/networking restart
Setting up IP spoofing protection: rp_filter
Reconfiguring network interface…done.
[/plain]

確認にはifconfigコマンドを使います。次のように表示されればOKです。

[plain toolbar=false gutter=false highlight_lines=”1″]
# ifconfig
eth0 Link encap:Ethernet HWaddr XX:XX:XX:XX:XX:XX
inet addr:192.168.11.2 Bcast:192.168.11.255 Mask:255.255.255.0
—- 省略 —-

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
—- 省略 —-
[/plain]

細かな数字は違うかもしれませんが、eth0とloの2つ出力があることと、 eth0のinet addrが192.168.11.2であればOKです。 またゲートウェイの設定は以下のコマンドで確認します。

[plain toolbar=false gutter=false highlight_lines=”1″]
# route
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.11.0 * 255.255.255.0 U 0 0 0 eth0
default 192.168.11.1 0.0.0.0 UG 0 0 0 eth0
[/plain]

ここではdefaultで始まる行のGatewayの列が192.168.11.1であればOKです。

colinux自身のホスト名はデフォルトではdebianとなっています。これを変えるには/etc/hostnameファイルを変更します。ここではホスト名をcolinuxにするために/etc/hostnameを以下の様にします。

[plain]
colinux
[/plain]

変更したら以下の様に反映と確認を行います。

[plain toolbar=false gutter=false highlight_lines=”1,2″]
# /etc/init.d/hostname.sh
# uname -n
colinux
[/plain]

次に、/etc/hostsファイルを作成しcolinux自身とhost PCの名前を追加しておきましょう。 Host PCの名前をwin2kの場合は、/etc/hostsを以下のようにすればOKです。

[plain]
127.0.0.1 localhost
192.168.11.1 win2k
192.168.11.2 colinux
[/plain]

次に、最後に/etc/resolv.confを編集して、 自分のプロバイダのDNSサーバのアドレスを記入します。 例えば、 DNSサーバのアドレスが123.123.123.123と123.123.123.124の場合は、 /etc/resolv.confの内容を次のようにします。

[plain]
nameserver 123.123.123.123
nameserver 123.123.123.124
search
[/plain]

動作確認(その1)

ここまできたら、host PCとcoLinuxが通信できるかテストしてみましょう。

まずはhost PC→coLinuxです。pingコマンドで調べましょう。 host PCのコマンドプロンプトで以下のコマンドを実行して 返事が返ってくることを確認しましょう。

[plain toolbar=false gutter=false highlight_lines=”1″]
> ping 192.168.11.2

Pinging 192.168.11.2 with 32 bytes of data:

Reply from 192.168.11.2: bytes=32 time<10ms TTL=64
Reply from 192.168.11.2: bytes=32 time<10ms TTL=64
Reply from 192.168.11.2: bytes=32 time<10ms TTL=64
Reply from 192.168.11.2: bytes=32 time<10ms TTL=64

Ping statistics for 192.168.11.2:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms
[/plain]

うまくいったら、 「ping colinux」でもうまく動くことも確認しておきましょう。

次はcoLinux→host PCの確認です。 まあ、host PC→coLinuxが大丈夫なら問題ないと思いますが 念のためやっておきます。 colinux-consoleで次のコマンドを打ちましょう。

[plain toolbar=false gutter=false highlight_lines=”1″]
# ping -c 4 192.168.11.1
[/plain]

こちらも、「ping -c 4 win2k」ででもうまく動くことも確認しておきます。

LAN上の他の機器設定

LAN上のPCの設定変更

(以下はcoLinuxと通信したいPCのみに行えばOKです。 LAN上の全てのPCに設定する必要はありません。)

ここまでの設定でcoLinux⇔host PC、 coLinux⇔インターネットの通信ができるようになりました。 しかし、coLinux⇔LAN上の他のPCとの通信は完全にはできません。 例えば、私の場合ではcoLinuxから192.168.10.1のLinux Serverに pingは通るのですが、 逆にLinux ServerからcoLinuxにpingを通すことができません。

これは、Linux ServerはLAN上(192.168.10.0/24)以外のホストへの通信は、 全てデフォルトのゲートウェイ(私の場合は192.168.10.254のADSLモデム)に 中継をお願いしてしまうからです。

これを直すためには、Linux Serverに新しいゲートウェイの設定を追加して、 仮想LAN上(192.168.11.0/24)のホストへの通信は、 host PC(192.168.10.3)にお願いするようにします。 この設定はOSによって違うと思いますので、あまり詳しく解説しませんが、 私の場合は192.168.10.1のLinux ServerはDebian GNU/Linuxなので、 以下のように/etc/network/interfaceを編集して 「/etc/inet.d/networking restart」を実行すればOKでした。

[plain]
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
address 192.168.10.1
network 192.168.10.0
netmask 255.255.255.0
broadcast 192.168.10.255
up route add -net 192.168.11.0 netmask 255.255.255.0 gw 192.168.10.3
gateway 192.168.10.254
[/plain]

ついでに、Linux Serverの/etc/hostsファイルにも 以下の行を追加しておきます

[plain]
192.168.11.2 colinux
[/plain]

ブロードバンドルーター(ADSLモデム等)の設定

さらに困ったことに、このままではcoLinuxからインターネットに接続することができません。それはブロードバンドルーター(ADSLモデム等)が仮想ネットワークがHost PCの先に存在していることを知らないからです。そこで、ブロードバンドルーターの設定を変更して、それを教えてあげます。

具体的にはブロードバンドルーターのルーティングテーブルに、ネットワークアドレス192.168.11.0/24のデータは、Host PC(192.168.10.3)に転送する」という情報を追加します。

設定例1: NEC社ADSLモデムの場合

以下は私のADSLモデム(NEC Aterm DR204C)での設定方法です。

まず、ADSLモデムにブラウザで接続して、左側メニューの「詳細設定」から「静的ルーティング設定」を選択します。

adsl-1

すると右下側に「静的ルーティングエントリ編集」が表示されますので、以下のように各項目を入力して「編集ボタン」を押します。

adsl-2

  • エントリ番号: 1
  • あて先IPアドレス: 192.168.11.0
  • ネットマスク: 255.255.255.0
  • インターフェース: LAN側
  • ゲートウェイ: 192.168.10.3 (Host PCのIPアドレス)

つまり、あて先IPアドレスとネットマスクで表現するのは仮想ネットワークのアドレスとして、ゲートウェイはHost PCのIPアドレスとします。

その後は、右上の「最新の状態に更新ボタン」を押すと静的ルーティングエントリに先ほど入力した設定が表示されるので、エントリ番号の左側のチェックボックスをオンにして「適用ボタン」を押します。

最後に左側メニューの下にある「登録ボタン」を押して、ADSLモデムを再起動させましょう。

設定例2: バッファロー社 無線LANブロードバンドルータの場合

以下は私の無線LANブロードバンドルータ(BUFFALO AirStation WHR-G54S)での設定方法です。

まず、ブロードバンドルータににブラウザで接続して、右上の「詳細設定ボタンで」表示された画面の左側で、「経路情報」を選択します。

whr-g54s-1.jpg

「経路情報の編集」ボタンを押すとルーティング情報を入力する画面が表示されますので、以下の様に横目を入力して「新規追加ボタン」を押します。

whr-g54s-2.jpg

  • IPアドレス: 192.168.11.0
  • ネットマスク: 255.255.255.0
  • ゲートウェイ: 192.168.10.3 (Host PCのIPアドレス)
  • 目トリック: 1

新規追加ボタンを押すと設定が反映されます。

動作確認(その2)

はじめにcoLinuxとLAN上のPC(私の場合はLinux Server)で 通信ができるかどうかを確認します。

まずは、colinux-consoleで、 Linux Serverに向かってpingをして返事が返ってくることを確認します。

[plain toolbar=false gutter=false highlight_lines=”1″]
# ping -c 4 192.168.10.1
PING 192.168.10.1 (192.168.10.1): 56 data bytes
64 bytes from 192.168.10.1: icmp_seq=0 ttl=63 time=0.8 ms
64 bytes from 192.168.10.1: icmp_seq=1 ttl=63 time=0.3 ms
64 bytes from 192.168.10.1: icmp_seq=2 ttl=63 time=0.5 ms
64 bytes from 192.168.10.1: icmp_seq=3 ttl=63 time=0.4 ms

— 192.168.10.1 ping statistics —
4 packets transmitted, 4 packets received, 0% packets loss
rount-trip min/avg/max = 0.3/0.5/0.8 ms
[/plain]

また逆に、Linux Serverからcolinuxに向かってpingをして 返事が返ってくることも確認します。

[plain toolbar=false gutter=false highlight_lines=”1″]
$ ping -c 4 192.168.11.2
PING 192.168.11.2 (192.168.11.2): 56 data bytes
64 bytes from 192.168.11.2: icmp_seq=0 ttl=63 time=0.9 ms
64 bytes from 192.168.11.2: icmp_seq=1 ttl=63 time=0.6 ms
64 bytes from 192.168.11.2: icmp_seq=2 ttl=63 time=0.5 ms
64 bytes from 192.168.11.2: icmp_seq=3 ttl=63 time=0.5 ms

— 192.168.11.2 ping statistics —
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max = 0.5/0.6/0.9 ms
[/plain]

以上がうまくいったら、IPアドレスではなくホスト名でお互いにpingをして、 hostsファイルが正しいかどうかも確認しておきましょう。

ここまでで失敗している場合は、 Host PCで「Routing and Remote Accessサービス」が起動していないか、 Linux Serverの設定変更に失敗しているかのどちらかだと思われます。

次に、coLinuxからブロードバンドルータにpingしてみましょう。 ちゃんとブロードバンドルータのルーティングテーブルが修正できていれば 成功するはずです。

[plain toolbar=false gutter=false highlight_lines=”1″]
# ping -c 4 192.168.10.254
PING 192.168.10.254 (192.168.10.254): 56 data bytes
64 bytes from 192.168.10.254: icmp_seq=0 ttl=62 time=1.9 ms
64 bytes from 192.168.10.254: icmp_seq=1 ttl=62 time=0.5 ms
64 bytes from 192.168.10.254: icmp_seq=2 ttl=62 time=0.6 ms
64 bytes from 192.168.10.254: icmp_seq=3 ttl=62 time=0.8 ms

— 192.168.10.254 ping statistics —
4 packets transmitted, 4 packets received, 0% packets loss
rount-trip min/avg/max = 0.5/0.9/1.9 ms
[/plain]

ここまでうまくいったら、 最後にインターネットに出れるかどうかを確認しましょう。 colinux-consoleで自分のプロバイダのサイトにpingしてみて、 返事が返ってくることを確認します。

[plain toolbar=false gutter=false highlight_lines=”1″]
# ping -c 4 scratchpad.f2c.com
PING scratchpad.f2c.com (69.25.27.171): 56 data bytes
64 bytes from 69.25.27.171: icmp_seq=0 ttl=243 time=18.7 ms
64 bytes from 69.25.27.171: icmp_seq=1 ttl=243 time=20.1 ms
64 bytes from 69.25.27.171: icmp_seq=2 ttl=243 time=15.5 ms
64 bytes from 69.25.27.171: icmp_seq=3 ttl=243 time=17.6 ms

— scratchpad.f2c.com ping statistics —
4 packets transmitted, 4 packets received, 0% packets loss
rount-trip min/avg/max = 15.5/17.9/20.1 ms
[/plain]

以上で、この方法の設定はおしまいです。

フォローする