ルート設定を考える
IPアドレス=重複したら面倒な背番号以上の意識がある人は少ないようです。
IPアドレスは背番号ではありますが、それ以上に番号そのものにルート情報を持って いることを忘れないで下さい。
そこで、簡単にどうやってルート設定を行うかを説明します。
複数ポートを持つ場合、一般にかなり複雑な設定が必要です。
しかも、間違いがあってはいけません。 しかし、複雑は単純の集合ですから、まずはLANのみ、あるいはLANすらない状態の説明から行います。
対象はPlamo Linux。
面倒な設定はお助けツールでやりましょう。
netconfigをrootの権限で起動します。
質問通りに答えれば、LAN1セグメントのみ、あるいはLANすらない状態の設定が出来ます。
無線を追加する話しは置いておくので、とりあえず無線抜きでどうなるかで設定しま しょう。
192.168.0.1 ルータ
I
-+-----------+------- 192.168.0.0 ネットマスク255.255.255.0のセグメント
I
192.168.0.10 Linux.felix.or.jp
上の図の前提だと、
ホスト名がLinux
ドメイン名はfelix.or.jp
IPアドレスが 192.168.0.10
デフォルトルート(どこに送れば良いか分からない場合にとりあえず送る先、すなわちルータのこと)は192.168.0.1です。
ネットマスクは255.255.255.0=自分のマシンのIPアドレスを元に頭24ビットを比較 して192.168.0ならばという意味です。
これでLAN内にいる192.168.0.1-254をIPアドレスに持つマシンと通信可能になります。
範囲指定がありますね。
すなわちルート情報があるということです。
192.168.0.2というIPアドレスを持つマシンを繋いでも、そのマシンの設定が正常なら IPアドレス直接指定でならそのままで通信出来るわけです。
台数が増えても安心ですね。
192.168.1.1へ繋ぐ場合は、頭が192.168.0ではないのでデフォルトルートの192.168.0.1 へおまかせするパケットを送ります。
ルータはよきにはからって外部のインタネットへ送り届けるのです。
netconfigは/etc/hostsと/etc/rc.d/rc.inet1を作成します。
古い設定は破棄されます。つまり、/etc/hostsは破壊されます。
127.0.0.1 localhost
192.168.0.10 linux.felix.or.jp linux
このような感じで作られていると思います。
LANが無い場合は2行目も127.0.0.1だと思います。
この2行は決して消さないように。
127.0.0.1はloopbackデバイスという仮想インターフェースです。
自分自身へ接続する場合に使用します。 localhostという名前が指定です。
2行目がLANカードのアドレスとホスト名、ドメイン名です。
さあ、とりあえずLAN内は通信できるようになりました。
LAN内のマシンをIPアドレス直接指定も面倒なので、/etc/hostsへ追加するのも良い でしょう。
追加直後からIPアドレスの変わりにホスト名を使用することが出来ます。
ホスト名は決して重複させないように。
次に無線ポートを追加します。
無線=新たなインターフェースです。
attachの部分は省略して、ルート設定のみのパターンを示します。
まず、必ず無線ポートはLANとは異なるサブネットにします。
もっとも既に動いている無線ポートの置換えでしょうから、逆にLANの方をnetconfig で変えることになります。
ああ、せっかく上で作ったのにね。
やり直しですが仕方無いです。
今回は上の例は意図的に無線では使われてなかろう(というか、MN128-SOHOのデフォルトのアドレスを使用)と思われるIPアドレスを使ったのでした:->
無線ポートも、厳密に言えば範囲指定を有効に利用するために全部違うサブネットに しないと意味がありませんが、 既存局相手もありそうも言ってられないので、 無線は不本意ながら全部同じIPアドレスにします。
192.168.0.1ルータ
I
-+-----------+------- 192.168.0.0 ネットマスク255.255.255.0のセグメント
I
192.168.0.10 Linux.felix.or.jp
I I
ax0 ax1 133.93.32.1
ネットワークインターフェースにIPアドレスを割り当てるのはifconfigです。
#network configure
/sbin/ifconfig ax0 133.93.32.1 netmask 255.255.255.0 up
/sbin/ifconfig ax0 broadcast 133.93.32.255 mtu 216
/sbin/ifconfig ax1 133.93.32.1 netmask 255.255.255.0 up
/sbin/ifconfig ax1 broadcast 133.93.32.255 mtu 216
次にルート情報を静的に教えます。
dwa,cwz,jtpというのは/etc/hostsにあると思って下さい。
いずれも133.93.32.*を使っています。
jtp-cwz-Linux(自分)-dwa-...
1 ax0から直接繋がる相手dwaの場合 /sbin/route add -host dwa ax0
2 ax1から直接繋がる相手cwzの場合 /sbin/route add -host cwz ax0
3 jtpはcwzを経由して接続 /sbin/route add -host jtp1 gw cwz
4 133.93.32で始まるIPアドレスを持った相手は必ずdwa経由 /sbin/route add -net 133.93.32.0 netmask 255.255.255.0 gw dwa
もう1つパターンがありますが、それは自分で考えてみましょう。
さて、1から4まで全部書くとどうなるでしょうか。
1、2、3、4の順番で書いてあれば、
1:dwaは直接ax0から接続
2:cwzは直接ax1から接続
3:jtpはcwzへおまかせする
4:dwa以外の133.93.32で始まる相手はdwaへおまかせする
LAN設定は以下でしたから、
5:192.168.0.*はLANへ
6:上のどれにも当てはまらない相手はルータへおまかせする
と言う訳で、優先順位は-host>-netでネットマスクの長い(IPアドレスの範囲の狭い) >-netでネットマスクの短い(IPアドレス範囲の広い)>デフォルトルート になります。
最後にDNS問題です。
現在ではホスト名からIPアドレスを引くのはDNSを使うのが普通です。
無線でも最終的にはDNSを自営で持たなければならない時代が来るでしょう。
ただ、ネームサーバというものはかなりの資源を食いますし、ホスト数が少ない 場合は割に合わないです。
近場は/etc/hostsを参照し、インタネット経由の相手はプロバイダのDNSを引くよう にしましょう。
/etc/host.conf
order hosts, bind
multi on
これで、まずhostsを見て、見つからなければbind=DNSを引きに行きます。
hostsに普段繋がる局を全部書いておけばわざわざDNSを引きません。
インタネット経由の場合等引けないと困るときは引くわけですね。
/etc/resolv.conf
nameserver 192.168.0.1
これはネームサーバのIPアドレスです。
必ずIPアドレスで指定します。
いまどきのルータならDNS Proxyが出来るので、ルータのアドレスで良いです。
古いルータの場合はプロバイダから指示のあったアドレスにします。
このファイルを抹消する(名前を変えても可)とDNSを一切引きに行かなくなります。