次のページ 前のページ 目次へ

Linux-IP-Alias-mini-HOWTO
=========================
Harish Pillay, h.pillay@ieee.org
1996-11-12

[翻訳:吉峯 幸郎, yoshimin@ms.civilnet.com.tw]
[翻訳日:1997/05/24]
------------------------------------------------------------------

              Linux マシンにおける IP Alias の設定方法

         GNU Copyleft 1996 Harish Pillay (h.pillay@ieee.org)

        プライマリ・サイト: 
        http://home.pacific.net.sg/~harish/linuxipalias.html


まえがき:

    このドキュメントは Linux ボックスにおける IP エイリアスの設定と
  使用方法のレシピです。さらに、エイリアス IP 上のメールの受信するた
  めのマシンの設定方法も紹介しています。


著者の環境:

  * 最新カーネル (2.0.25 - ftp.funet.fi:/pub/Linux/kernel/src/v2.0 
    から入手) 1.3.7x 以降で使用可能です。
  * ロード可能モジュールとしてコンパイルした IP Alias。カーネル作成時
    の"make config" コマンド実行時に IP Masq を (M)odule としてコンパ
    イルするか聞かれたはずです。詳しくは Modules HOW-TO (もし存在すれ
    ば)か /usr/src/linux/Documentation/modules.txt を参照してください。
  * 現在、著者のマシンに割り当てられている IP 以外に同一マシン上でさら
    に2つの IP を使用しなければなりません。
  * D-Link DE620 ポケットアダプター(重要ではありません。 Linux でサポ
    ートされているネットワークアダプターであれば何でも OK です。)


コマンド:

  * 第一に IP Alias モジュールをロードします。(モジュールをカーネル
    内部にコンパイルした場合はスキップ。)

    /sbin/insmod /lib/modules/`uname -r`/ipv4/ip_alias.o

  * 第二に loopback と eth0 そして すべての IP アドレスを eth0 インター
    フェースのメイン IP アドレスから順に設定します。

     /sbin/ifconfig lo 127.0.0.0
     /sbin/ifconfig eth0 up
     /sbin/ifconfig eth0 172.16.3.1
     /sbin/ifconfig eth0:0 172.16.3.10
     /sbin/ifconfig eth0:1 172.16.3.100

    172.16.3.1 はメイン IP アドレスで、.10 と .100 がエイリアスです。
    ここでのポイントは異なる IP アドレスに対して設定する eth0:x 
   (x=0,1,2,...n )の部分です。メイン IP アドレスはエイリアスにする
    必要はありません。

  * 第三に route を設定します。最初の route は loopback です。そして 
    net。最後にそれぞれの IP アドレスをデフォルト(本来割当てられてい
    たアドレス)から順に設定します。

     /sbin/route add -net 127.0.0.0
     /sbin/route add -net 172.16.3.0 dev eth0
     /sbin/route add -host 172.16.3.1 dev eth0
     /sbin/route add -host 172.16.3.10 dev eth0:0
     /sbin/route add -host 172.16.3.100 dev eth0:1
     /sbin/route add default gw 172.16.3.200

  以上です。


  上記の例では IP アドレスとして説明用のプライベート IP アドレス
(RFC 1918) を使用しています。それらを自分の正式なアドレスまたは
プライベートアドレスに置き換えて下さい。

  例では、わずか 3 つの IP アドレスしか使用していませんが、最大 256 
まで /usr/include/linux/net_alias.h に設定できます。一つのカードに
256 の IP アドレスは十分でしょう。


以下に著者の /sbin/ifconfig を紹介します:

lo        Link encap:Local Loopback
          inet addr:127.0.0.0  Bcast:127.255.255.255  Mask:255.0.0.0
          UP BROADCAST LOOPBACK RUNNING  MTU:3584  Metric:1
          RX packets:5088 errors:0 dropped:0 overruns:0
          TX packets:5088 errors:0 dropped:0 overruns:0

eth0      Link encap:10Mbps Ethernet  HWaddr 00:8E:B8:83:19:20
          inet addr:172.16.3.1  Bcast:172.16.3.255  Mask:255.255.255.0
          UP BROADCAST RUNNING PROMISC MULTICAST  MTU:1500  Metric:1
          RX packets:334036 errors:0 dropped:0 overruns:0
          TX packets:11605 errors:0 dropped:0 overruns:0
          Interrupt:7 Base address:0x378

eth0:0    Link encap:10Mbps Ethernet  HWaddr 00:8E:B8:83:19:20
          inet addr:172.16.3.10  Bcast:172.16.3.255  Mask:255.255.255.0
          UP BROADCAST RUNNING  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0
          TX packets:0 errors:0 dropped:0 overruns:0

eth0:1    Link encap:10Mbps Ethernet  HWaddr 00:8E:B8:83:19:20
          inet addr:172.16.3.100  Bcast:172.16.3.255  Mask:255.255.255.0
          UP BROADCAST RUNNING  MTU:1500  Metric:1
          RX packets:1 errors:0 dropped:0 overruns:0
          TX packets:0 errors:0 dropped:0 overruns:0


そして著者の /proc/net/aliases です:

device           family address
eth0:0           2      172.16.3.10
eth0:1           2      172.16.3.100


さらに /proc/net/alias_types です:

type    name            n_attach
2       ip              2


もちろん /proc/net は手作業でなく ifconfig コマンドによって生成されま
す。



質問:再起動時にどのように設定を維持しますか。

答え:BSD スタイルあるいは SysV スタイル(例:Redhat) のどちらの init
     を使用していても、設定を /etc/rc.d/rc.local に入れておけばよいの
     です。以下が著者の SysV スタイルの init システム(Redhat 3.0.3 と
      4.0)です:

* 著者の /etc/rc.d/rc.local: (関連する部分のみ)

  # IP エイリアス・インターフェースの設定
  echo "Setting 172.16.3.1, 172.16.3.10, 172.16.3.100 IP Aliases ..."
  /sbin/ifconfig lo 127.0.0.1
  /sbin/ifconfig eth0 up
  /sbin/ifconfig eth0 172.16.3.1
  /sbin/ifconfig eth0:0 172.16.3.10
  /sbin/ifconfig eth0:1 172.16.3.100
  # route の設定
  echo "Setting IP routes ..."
  /sbin/route add -net 127.0.0.0
  /sbin/route add -net 172.16.3.0 dev eth0
  /sbin/route add -host 172.16.3.1 eth0
  /sbin/route add -host 172.16.3.10 eth0:0
  /sbin/route add -host 172.16.3.100 eth0:1
  /sbin/route add default gw 172.16.3.200
  #



質問:IP エイリアスを設定したマシンで、(sendmail を使用している
      一つのマシン上の)様々なエイリアス IP アドレスへのメールを
      受信するにはどのように設定すれば良いですか。

* 答え:(まだなければ)例えば /etc/mynames.cw という名のファイル
         を作成します。この名前でなくても構いませんし、 /etc ディ
         レクトリである必要もありません。

* そのファイルの中にエイリアス IP の正式なドメイン名を書きます。もし
  これらのエイリアス IP にドメイン名がなければ IP アドレスそのものを
  書きます。

  /etc/mynames.cw:
  ----------------
  # /etc/mynames.cw -このマシンのすべてのエイリアスを書く。
  # # はコメント。
  domain.one.net
  domain.two.com
  domain.three.org
  4.5.6.7

* sendmail.cf のファイル・クラス・マクロ Fw を設定している部分に
  以下を追加。

     .
     .
     .
     ##################
     #   local info   #
     ##################
     .
     .
     # ファイルにはメールを受信するホストの名前が含まれています
     Fw/etc/mynames.cw
     .
     .
     .

* これで大丈夫でしょう。sendmail をテストモードにして以下の例ように
  新しい設定をテストします:

ganymede$ /usr/lib/sendmail -bt
ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)
Enter < ruleset> < address>
> 0 me@4.5.6.7
rewrite: ruleset  0   input: me @ 4 . 5 . 6 . 7
rewrite: ruleset 98   input: me @ 4 . 5 . 6 . 7
rewrite: ruleset 98 returns: me @ 4 . 5 . 6 . 7
rewrite: ruleset 97   input: me @ 4 . 5 . 6 . 7
rewrite: ruleset  3   input: me @ 4 . 5 . 6 . 7
rewrite: ruleset 96   input: me < @ 4 . 5 . 6 . 7 >
rewrite: ruleset 96 returns: me < @ 4 . 5 . 6 . 7 . >
rewrite: ruleset  3 returns: me < @ 4 . 5 . 6 . 7 . >
rewrite: ruleset  0   input: me < @ 4 . 5 . 6 . 7 . >
rewrite: ruleset 98   input: me < @ 4 . 5 . 6 . 7 . >
rewrite: ruleset 98 returns: me < @ 4 . 5 . 6 . 7 . >
rewrite: ruleset  0 returns: $# local $: me
rewrite: ruleset 97 returns: $# local $: me
rewrite: ruleset  0 returns: $# local $: me
> 0 me@4.5.6.8
rewrite: ruleset  0   input: me @ 4 . 5 . 6 . 8
rewrite: ruleset 98   input: me @ 4 . 5 . 6 . 8
rewrite: ruleset 98 returns: me @ 4 . 5 . 6 . 8
rewrite: ruleset 97   input: me @ 4 . 5 . 6 . 8
rewrite: ruleset  3   input: me @ 4 . 5 . 6 . 8
rewrite: ruleset 96   input: me < @ 4 . 5 . 6 . 8 >
rewrite: ruleset 96 returns: me < @ 4 . 5 . 6 . 8 >
rewrite: ruleset  3 returns: me < @ 4 . 5 . 6 . 8 >
rewrite: ruleset  0   input: me < @ 4 . 5 . 6 . 8 >
rewrite: ruleset 98   input: me < @ 4 . 5 . 6 . 8 >
rewrite: ruleset 98 returns: me < @ 4 . 5 . 6 . 8 >
rewrite: ruleset 95   input: < > me < @ 4 . 5 . 6 . 8 >
rewrite: ruleset 95 returns: me < @ 4 . 5 . 6 . 8 >
rewrite: ruleset  0 returns: $# smtp $@ 4 . 5 . 6 . 8 $: me < @ 4 . 5 .
6 . 8 >
rewrite: ruleset 97 returns: $# smtp $@ 4 . 5 . 6 . 8 $: me < @ 4 . 5 .
6 . 8 >
rewrite: ruleset  0 returns: $# smtp $@ 4 . 5 . 6 . 8 $: me < @ 4 . 5 .
6 . 8 >
>

    注意 me@4.5.6.8は smtp に転送されたのに me@4.5.6.7 をテスト
         したとき、メールはローカルに配信されました。これは正し
         い動作です。



* すべての設定が完了しました。

以上の内容が誰かにとって有用であることを期待します。

Linux と IP Alias を開発したすべての人達に感謝します。
また、著者の疑問を明らかにしてくれた Juan Jose Ciarlante には特に感謝で
す。

一流プログラマー達に賞賛を!

このドキュメントが有用だと感じた方やさらに良くするための意見などがあれば
h.pillay@ieee.org までメールを下さい。
===

Thanks.
-- 
Harish Pillay                                     h.pillay@ieee.org
Singapore  *** Ask me about Linux *** http://home.pacific.net.sg/~harish

[協力:Linux-JF プロジェクト]
[翻訳:吉峯 幸郎, yoshimin@ms.civilnet.com.tw]

次のページ 前のページ 目次へ