ファイヤープロジェクト
設定ファイルinterfacesについて
2004-03-06T01:08+09:00   matsu
/etc/network/interfacesの記述方法には,いろいろと(とくにモバイルマシンで)便利なものがある.
私はノートパソコンで,/etc/network/interfacesを環境ごとにいろんなファイル名で作成して,そのときの環境に合わせてinterfacesにmvしてネットワーク設定をしていた.これら複数のinterfacesのコピーに記述されたレコードを一つのinterfacesにまとめて,環境毎にレコードを選択できるとうれしい.各レコードを論理名で定義して,スクリプトの出力に応じて物理インタフェースとマッピングすることができる.まず,interfacesを
mapping eth0
	script /etc/network/script
	map HOME eth0-0
	map WORK eth0-1

iface eth0-0 inet static
	address 192.168.1.2
	netmask 255.255.255.0
	network 192.168.1.0
	broadcast 192.168.1.255
	gateway 192.168.1.1

iface eth0-1 inet static
	address 192.168.2.2
	netmask 255.255.255.0
	network 192.168.2.0
	broadcast 192.168.2.255
	gateway 192.168.2.1
などとする.すると/etc/network/scriptの標準出力に応じてeth0がeth0-0やeth0-1として設定される.例えば/etc/network/scriptを
#!/bin/sh
echo "eth0-0"
とするとeth0がeth0-0として設定され,
#!/bin/sh
echo "eth0-1"
とするとeth0がeth0-1として設定される...この例だとmapで始まる行の意味がよくわからない.scriptで指定されたスクリプトに標準入力として渡される.したがってスクリプト内でreadを行うと,map行の値が読み込まれる.以下は,map行の値を読み込むスクリプトである.
#!/bin/bash

function echoMap () {
  echo $2
}

read MAP;
echoMap $MAP
これをscript行で使用すると,
	map HOME eth0-0
があるので,MAPに"HOME eth0-0"が設定され,echoMap関数により,eth0-0が出力される.
/etc/init.d/networking等との住わけのようなものが問題になるような気もするが,渡しはPPPOEでネットに接続するマシンで,以下のような設定にしている.
iface eth0 inet static
        address 192.168.1.1
        netmask 255.255.255.0
        network 192.168.1.0
        broadcast 192.168.1.255
        defaultgateway 192.168.1.1
        up "/root/setfirewall"
        up adsl-start
        up ifconfig ppp0 mtu 1454
        down adsl-stop
upは該当インタフェースがifupされた後に実行され,downはifdownされる前に実行される.上記の設定により,eth0がアップされた後にパケットフィルタリングを行うスクリプト/root/setfirewallを実行し,adsl-startを実行し,それによってupされるppp0インタフェースのmtuを設定している.さらにeth0がifdownされる前にはadsl-stopを行う. 上記のupの様に,upやdownは複数記述できるが,途中で失敗するとそれ以降は実行されない. たとえば,上記の例でadsl-startが偽を返せば,続くifconfigは実行されない. adsl-startは何とか接続できても偽を返すようなので,
up adsl-start || true
up ifconfig ppp0 mtu 1454
などと工夫する必要がある.
matsu(C)
Since 2002
Mail to matsu