Debian GNU/Linux とノートパソコンによるIPマスカレードの設定
- 1.ノートパソコンをインターネットゲートウェイにすると良いこと
- 1999年11月22日、自衛隊機が送電線を切断してくれたため、我が家も停電してしまいました。
会社から帰ったときは、24時間稼動しているOCNエコノミーにつないであるPCとCATV網へつないであるPCが2台とも止まっていました。両方の電源を入れるとCATV網へつないであるPCは何事もなかったように立ち上がりましたが、OCNエコノミーにつないであるPCは何か変でした。まず、NICを2枚とも認識せず、リブートすると今度はEISAのセカンダリのマスタに付いているCD-ROMを認識したりしなかったり、テープドライブと思ったり、BIOS設定をやり直しても異常が直らないまま2日が過ぎました。
停電が原因ならばノートパソコンにすれば停電だって平気だと思い起こしてくれたのは、「Linux Japan」のアストロビスタ様のページでした。
それにノートパソコンは音も静かですしね。
- 2.使ったノートパソコン
- 手持ちのノートパソコンでTYPE llのカードを2枚挿せるのは、Gateway2000のLibertyだけです。
これのスペックは、
- MPU 486DX4-100MHz
- Memory 24MB
- HDD 540MB
という哀しさですが、最低IPmasqueradeとDNSサーバとメールサーバが使えればよいのだという事で割り切ることにしました。でも、ノートパソコンにイーサネットカードの2枚挿しってのはやったことがないんですよね。
- 3.イーサネットカードの2枚挿し
- まず、stabというファイルを見ます。これは、/var/runにあるとか/etcにあるという話もあり、locateででも探すのがいいみたいです。
-
- 2枚挿してあると
Socket 0: Accton EN2212 EtherCard
0 network pcnet_cs 0 eth0
Socket 1: 3Com 3c589D LAN Adapter
1 network 3c589_cs 0 eth1
などと記録されています。
ここでは、上段にAccton EN2212、下段に 3Comのカードを使っています。 - /etc/pcmcia/network.optsを以下のように直します。
case "$ADDRESS" in
*,0,*,*) <= Socket 0:
IF_PORT="auto"
# Use BOOTP [y/n]
BOOTP="n"
IPADDR="nnn.nnn.nnn.nnn"
NETMASK="255.255.255.0"
NETWORK="nnn.nnn.nnn.nnn"
BROADCAST="nnn.nnn.nnn.255"
GATEWAY="nnn.nnn.nnn.nnn"
DOMAIN="ドメイン名"
DNS_1="127.0.0.1" <=このコンピュータ
;;
esac
case "$ADDRESS" in
*,1,*,*) <= Socket 1:
IF_PORT="auto"
BOOTP="n"
IPADDR="nnn.nnn.nnn.nnn"
NETMASK="nnn.nnn.nnn.nnn"
NETWORK="nnn.nnn.nnn.nnn"
BROADCAST="nnn.nnn.nnn.nnn"
GATEWAY="nnn.nnn.nnn.nnn"
DOMAIN="ドメイン名"
DNS_1="127.0.0.1"
;;
esac
- ここでの例はeth1がOCNへつながっておりグローバルアドレスが割り付けられており、eth0は家庭内LANにつながっておりプライベートアドレスです。*,1,*,*)は、スキーマ、ソケット、インスタンス、MACアドレスを表しています。ソケットに値を設定しているので、ノートPCのPCカードスロットに上記の定義を固定的に割り付けたことになります。
DHCPサーバからIPアドレスを取得する場合は、BOOTP="y"にして、それ以下の行の設定は不要なのでしょう。
ノートPCですから、使う場所によってネットワーク関係の設定を変えたい場合があるでしょうが、こらは、netenvというスクリプトを使います。詳細は、/usr/doc/pcmcia-cs/examplesにこのスクリプトと個々の状況毎の設定事例があります。gunzip -d で解凍して読みましょう。
- 4.カーネルの再構築
- IPマスカレードを使うにはカーネルの再構築が必要です。しかし、ただ再構築するとpcmciaモジュールはまだカーネルモジュールに取り込まれてはいないので再起動するとPCカードを認識してもらえません。
そのため、Debian GNU/Linuxでは、、 - カーネルのdebパッケージは/usr/src/linuxで
make-kpkg --revision XXXXXX kernel-image
で/usr/srcにkernel-image-2.n.n_x.n_i386.debを作成します。これは普通のカーネル再構築の手順です。
ここでそのまま再起動するとpcmciaモジュールが無視されてしまいます。 - pcmciaのパッケージはdpkg -i pcmcia-source_XXXXXとかdselectでソースを/usr/src/modules/pcmcia-csに入れておきます。
- /usr/src/modules/pcmcia-csで make-kpkg --revision XXXXXX modules
により、/usr/src/modulesにpcmcia-cs_n.n.n-n_i386.debを作成します。 - このディレクトリで、
debian/rules KSRC=/usr/src/linux binary-cs
debian/rules KSRC=/usr/src/linux binary-modules
とやります。そうすると、/usr/srcにカーネルとpcmciaのパッケージを合体したようなpcmcia-modules-n.n.n_n.n.n-n+X.n_i386.debができあがります。 - これを、dpkg -i pcmcia-modules-n.n.n_n.n.n-n+X.n_i386.debとやってインストールします。
これでIPマスカレード対応のカーネルになりました。
lilo.confにappend="ether=0,0,eth1"を入れるとかいったことを忘れないように。
リブートして、すべてOKかを確認しましょう。
以下はちょっと古いDebian 2.0に入っている説明です。上と同じ事が書いてあるかな?違っていたら、下の英文が正しいんですよ!
/usr/doc/pcmcia-source# vi README
Debian PCMCIA Card Services
README File
Brian Mays
This is the Debian GNU/Linux prepackaged version of the PCMCIA card
services package.
By default, debian/rules will set the kernel-specific options from the
kernel source tree in /usr/src/linux. If this is not desirable, execute
`make config' in the pcmcia-cs root directory to interactively configure
the package.
You need to have a complete linux source tree for your kernel, not just an
up-to-date kernel image, to compile the PCMCIA package. The PCMCIA modules
contain some references to kernel source files. While you may want to
build a new kernel to remove unnecessary drivers, installing PCMCIA does
not require you to do so.
To recompile the PCMCIA kernel modules:
The process of recompiling a kernel and the PCMCIA modules has been
greatly simplified by Debian's kernel-package package (available in
Debian's main distribution). This package contains the make-kpkg
utility, which is used to create the kernel related Debian packages.
It is highly recommended that you use this utility.
If you are using make-kpkg:
1) Ensure that the pcmcia-cs source tree is in a subdirectory of the
/usr/src/modules directory. Use a symbolic link to the actual
source tree if you must. Note that the pcmcia-source package
already places the pcmcia-cs sources in /usr/src/modules/pcmcia-
cs.
2) As root, go to the the base of the kernel source tree (usually
the /usr/src/linux directory). If you are building a kernel that
is custom configured to your specifications, go ahead and
configure the kernel with `make config,' `make menuconfig,' or
`make xconfig.'
3) To build a new kernel-image package, execute:
make-kpkg --revision number kernel_image
This will generate a kernel-image- deb file in
the parent directory. Here number (the argument supplied after
the --revision flag) is a version number for your custom built
kernel. You may also do this on the fly by setting the
DEBIAN_REVISION environmental variable. It is important that you
image package will not override the custom package while using
dselect (or `dpkg -BOGiE'). I recommend a two-level scheme where
the major level starts with a letter. One such scheme is your
(short) host name followed by a dot (.) and a number. For
example, if your machine is named myhost, you would use
--revision myhost.1 in the command line. If you had to rebuild
your custom kernel, you would use --revision myhost.2 and so on.
See /usr/doc/kernel-package/README.gz for more information on
revision numbers.
3) To build the PCMCIA modules, execute:
make-kpkg --revision number modules_image
where number is the same revision number used to build the
kernel-image package in the previous step. This will generate a
pcmcia-modules- deb file in the parent directory.
4) Install the two newly created deb files (you can use `dpkg -i
file').
If you are not using make-kpkg:
If your kernel is compiled with CONFIG_MODVERSIONS enabled, for kernel
symbol version checking, the configure script will check for the
existence of /usr/include/linux/modversions.h, the symbol version
database. This is created by running `make dep' (in addition to `make
config) in the kernel source tree.
1) Ensure that the kernel source tree is in the /usr/src/linux
directory and ensure that it is configured (execute `make config
dep' in the /usr/src/linux directory).
2) Go to the pcmcia-cs root directory (/usr/src/modules/pcmcia-cs in
the pcmcia-source package).
3) Execute as root `debian/rules binary-modules.' This will
generate a pcmcia-modules- deb file in the parent
directory.
Note: The location of the kernel source tree may be specified by
supplying the KSRC variable as a command line option. For example, if
the kernel source is located in /usr/local/src/kernel-2.0.0, the
proper command would be
debian/rules KSRC=/usr/local/src/kernel-2.0.0 binary-modules
To recompile the PCMCIA utility programs:
This should not be necessary, since the generic pcmcia-cs package
supplied by Debian should be compatible with all pcmcia-
modules- packages (including custom built packages)
with the same version number. However, if you need to build a
complete set of PCMCIA modules and utilities--to use a newer upstream
version, for example--you can use the following procedure:
1) Ensure that the kernel source tree is in the /usr/src/linux
directory and ensure that it is configured (execute `make config
dep' in the /usr/src/linux directory).
2) Go to the pcmcia-cs root directory (/usr/src/modules/pcmcia-cs in
the pcmcia-source package).
3) Execute as root `debian/rules binary-cs.' This will generate the
pcmcia-cs deb file.
Note: The location of the kernel source tree may be specified by
supplying the KSRC variable as a command line option. For example, if
the kernel source is located in /usr/local/src/kernel-2.0.0, the
proper command would be
debian/rules KSRC=/usr/local/src/kernel-2.0.0 binary-cs