HOME LAN 内のマシンから CATV LAN を利用する方法
〜 Linux + IP Masquerade 〜

1998.01.07 Umetsu

はじめに

NCV の地域イントラネットには1契約で1台しか接続できません。 しかし この NCVに接続するマシンを router としてやれば HOME LAN 内のどのマシンからも CATV LAN を利用する事ができます。 この文書では PC/AT + Linux + IP Masquerade を利用して router とする場合について述べます。

使用するもの

当サイトの LAN (一部)

                10.162.1.20
       ┏━━━━━━━━━━┓ ┏━━━━━━┓ │
NCVへ←……┨CableModem┠─┨supper┠─┤133.168.63.99
       ┗━━━━━━━━━━┛ ┗━━━━━━┛ │
                             │
              ┏━━━┓ ┏━━━━━━┓ │
アマチュア無線LANへ←……┨TNC┠─┨dinner┠─┤133.168.63.1
              ┗━━━┛ ┗━━━━━━┛ │
                             │
                    ┏━━━━━━┓ │
                    ┃lunch ┠─┤133.168.63.2
                    ┗━━━━━━┛ │
supper が今回 IP Masquerade を設定するマシンです。 当サイトでは 133.168.63.* というアドレスを使っているのですが、 本当はここは 192.168.*.* 等のプライベート IPアドレスにするべきでしょう。

カーネルの準備

まずは IP Masquerade に対応したカーネルを準備します。 以下の項目を Y にして、いつものように make します。

2枚の LAN カードの認識

2枚の LAN カードは当然 IRQ,I/Oアドレスが重ならないように 設定しておきます。今回は HOME LAN につなぐ側の LAN カードを IRQ9,I/Oアドレス0x300に、 CATV LAN につなぐ側の LAN カードを IRQ5,I/Oアドレス0x340に 設定します。

普通 Linux はブート時には LANカードを 1枚しか認識してくれませんので、 2枚とも認識するようにします。私の場合は MS-DOS から LOADLIN.EXE を 使ってブートをしているので、以下のような CONFIG.SYS になります。


[MENU]
MENUITEM=DOS,MS-DOS6.2/V
MENUITEM=LINUX2033,Debian GNU/Linux 1.3.1 (Linux2.0.33,IP_Masquerade)
MENUCOLOR=15,1
MENUDEFAULT=LINUX2033,5

[LINUX2033]
shell=c:\linux\loadlin.exe c:\linux\zimage20.33 root=/dev/hda5 ro ether=9,0x300
,eth0 ether=5,0x340,eth1 

[DOS]
device=c:\dos\pcdos\himem.sys
 :(以下は普通の DOS の CONFIG)

LOADLIN.EXE の行で ether= オプションを使って 2枚の LANカードの パラメータと名前を Linux カーネルに教えてあげています。
このカーネルでブートすれば以下のようなメッセージが出ます。


NE*000 ethercard probe at 0x300: 00 80 ad 15 a8 4c
eth0: NE2000 found at 0x300, using IRQ 9.
NE*000 ethercard probe at 0x340: 00 80 ad 1a 31 24
eth1: NE2000 found at 0x340, using IRQ 5.

network の設定

Debian の場合は /etc/init.d/networkファイルに以下のような行を 追加します。Slackware なら /etc/rc.d/rc.inet1 でしょうか。 あとはこのファイルを実行するなりリブートするなりして、内容を 反映させれば もうおしまいです。


# HOME LAN
ifconfig eth0 inet 133.168.63.99 netmask 255.255.255.0 broadcast 133.168.63.255
route add -net 133.168.63.0 netmask 255.255.255.0 dev eth0
# CATV LAN
ifconfig eth1 inet 10.162.1.20
route add -net 10.0.0.0 netmask 255.0.0.0 dev eth1
route add default gw 10.224.10.10
# IP Masquerade
ipfwadm -F -a m -S 133.168.63.0/24 -D 0.0.0.0/0
ipfwadm -F -p deny
/sbin/modprobe ip_masq_raudio.o
/sbin/modprobe ip_masq_ftp.o

ipfwadm の1行目は「133.168.63.* から発信され、IP Masquerade による gateway を通るために supper に来たパケット」は全て(0.0.0.0/0) 中継する という意味です。 ipfwadm の2行目はそれ以外のパケットは通さないという意味です。

これで routing table を見るとこうなります。


umetsu@supper:~> netstat -r
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
133.168.63.0    *               255.255.255.0   U      1500 0          0 eth0
127.0.0.0       *               255.0.0.0       U      3584 0          0 lo
10.0.0.0        *               255.0.0.0       U      1500 0          0 eth1
default         10.224.10.10    0.0.0.0         UG     1500 0          0 eth1

他のマシンの設定

dinner や lunch では以下のような設定をします。


route add default gw 133.168.63.99 metric 1

これで HOME LAN 以外へのパケットは default gateway である supper へ 送られる事になります。さあ、いよいよ外に向けて何かやってみましょう。

何ができるか

dinner や lunch の方で以下の物が動作する事を確認しました。

Linux Windows95 備考
http Netscape Navigator Netscape Navigator  
ftp ftp ftp(Win95附属), matuftp  
telnet telnet telnet(Win95附属), TeraTerm Pro  
nntp mnews, INN+suck Netscape Collabra  
smtp mnews, sendmail Netscape Messenger  
pop popclient Netscape Messenger  
NN plugin   vdoliveplayer, realplayer, ipix, acrobatreader, shockwave flash, cosmo player, live audio, quicktime, vivo active あまり関係ないのもふくんでます
icmp ping ping(Win95附属)  

delegate などの http proxy server を supper で動かさなくても 直接 NCV の proxy server (10.224.10.1:3128) につないで WWW を利用できます。 HOME LAN のマシンから niftyserve に telnet できます。 うちでは dinner がメインマシンなので、dinner で INN + suck や sendmail, popclient を動かしてニュースとメールを NCV との間で やりとりしています。

ping や traceroute も通るはずなのですが、なぜか私のところでは ping は通るものの traceroute がうまく通りません。 supper 上からならどちらも大丈夫なのですが...。

Windows95でCU-SeeMeを試しましたが、残念ながら接続できませんでした。 もちろんrouterにはモジュールip_masq_cuseeme.oをロードしてます。 うちのrouterの設定が悪いのかもしれません。 どなたかNCVのユーザでうまく動いているよという方がいらっしゃったら 教えて下さい。

最後に

尚、本文書は無保証です。内容に誤りがある可能性もあります。 この文書を参考にしたために何らかの損害を受けたとしても 筆者は一切関知いたしません。



home
umetsu@omn.ne.jp