レンタルサーバ + Webシステム開発 = E-business

■レンタルサーバご利用参考資料
サーバご利用の参考にJF Project によるJF (Japanese FAQ)を掲載しています。

Linux JF(Japanese FAQ)Project.
JF は, Linux に関する解説文書・FAQ などを作成・収集・配布するプロジェクトです.

グリーンネット・トップページへ戻る


一覧に戻る
Setting up IP Aliasing on A Linux Machine Mini-HOWTO

Harish Pillay

 h.pillay@ieee.org 

Joy Yokley - Converted document from HTML to DocBook v4.1 (SGML)

JF Project - 日本語訳

JF@linux.or.jp

2001-01-23

Revision History                                                       
Revision 1.2           2001-01-26          Revised by: JEY             
Revision 1.1           2001-01-24          Revised by: JEY             
Revision 1.0           1997-01-13          Revised by: HP              

この文書は、Linux マシン上での IP エイリアスの設定方法と利用方法を簡単
に述べたものです。マシンをセットアップして、エイリアス設定した IP アド
レス上でメールを受信する方法についても説明しています。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Table of Contents
1. 著者の設定
2. 設定コマンド
3. トラブルシューティング:質問と解答
   
    3.1. 質問:リブートしても設定が維持されるようにするには?
    3.2. 質問:マシンに IP エイリアスを設定し、エイリアス設定した個々の
        IP アドレス上でメールを受信するにはどうすればいいですか
        (sendmail を使ったマシンです)?
   
4. 謝辞
5. 日本語訳について

1. 著者の設定

 ・ IP エイリアスは、kernel 2.0.x および 2.2.x では標準で有効になってい
    ます。 2.4.x ではコンパイル時のオプションを使って有効にしてください
    ( kernel 2.4.x では IP エイリアスは重要視されておらず、よりパワフル
    なファイアーウォール機能に置き換わっています)。
   
 ・ 著者は、IP エイリアス機能をローダブルモジュールとしてコンパイルしま
    した。読者のなかには、カーネルの再構築の際の "make config" の途中で
    、IP Masq の方をモジュールとしてコンパイルするよう指定してしまって
    いる人がいるかもしれません。モジュールに関する事柄は、(もし閲覧可能
    なら) Module HOWTO  をチェックするか、/usr/src/linux/Documentation/
    modules.txt に記載された情報をチェックしてください。
   
 ・ 著者は、すでに割り当てを受けていた IP に加えて、さらに 2 つの IP ア
    ドレスを使えるようにしました。
   
 ・ 著者は、D-Link DE620 ポケットアダプタを使っています (アダプタの種類
    は重要ではありません。Linux でサポートされているネットワークアダプ
    タなら何でもかまいません)。
   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

2. 設定コマンド

 1. IP エイリアスのモジュールをロードします (カーネルにモジュールを組み
    込んでいる場合、この手順は不要です)。
   
    ┌────────────────────────────┐
    │/sbin/insmod /lib/modules/`uname -r`/ipv4/ip_alias.o    │
    └────────────────────────────┘
 2. ループバックデバイスと eth0 を設定し、eth0 インターフェイスに対して
    メイン IP アドレスから順番にすべての IP アドレスを設定します。
   
    ┌────────────────────────────┐
    │/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                      │
    └────────────────────────────┘
   
    172.16.3.1 というのが、メインとなる IP アドレスであり、.10 と .100
    とがエイリアスです。重要なのは、eth0:x (x=0,1,2,...n) という部分に
    それぞれ違う IP アドレスを設定しているということです。メイン IP ア
    ドレスは、エイリアスにする必要はありません。
   
 3. ルートの設定をします。まず最初に、loopback です。次に、ret、そして
    最後に、それぞれの IP アドレスをデフォルト (もともと割り当てられて
    いた 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) を使っています。実際には、読者自身の正式な IP アドレスか、もしく
は自分用の IP アドレスに置き換えてください。

例題では、3 つの IP アドレスしか設定していませんが、最大で 256 の IP ア
ドレスまで設定できます。この最大値は、/usr/include/linux/net_alias.h で
設定できます。とはいえ、256 の IP アドレスを一枚のネットワークカードに
設定する人はいないでしょうけど :-)!

以下に、著者の /sbin/ifconfig の出力結果を記載します。

lo        Link encap:Local Loopback                                                
               inet addr:127.0.0.1  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_tupes が、以下です。

type    name            n_attach                                       
2       ip              2                                              

もちろん、/proc/net 以下の出力は、手動で編集したのではなく、ifconfig コ
マンドによって生成されたものです。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

3. トラブルシューティング:質問と解答

3.1. 質問:リブートしても設定が維持されるようにするには?

解答:BSD スタイルの init を使っている場合でも、 SysV スタイル (例えば
、RedHat ) の init の場合も、いずれも /etc/rc.d/rc.local に設定を記述す
れば、設定が維持されます。以下に、SysV init システム (RedHat 3.0.3 と
4.0 ) の著者の設定を記載します。

著者の /etc/rc.d/rc.local:(関連部分だけです)

┌──────────────────────────────────┐
│#setting up IP alias interfaces                                     │
│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                                  │
│#setting up the routes                                              │
│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                             │
│#                                                                   │
└──────────────────────────────────┘
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

3.2. 質問:マシンに IP エイリアスを設定し、エイリアス設定した個々の IP
アドレス上でメールを受信するにはどうすればいいですか (sendmail を使った
マシンです)?

解答:例えば、/etc/mynames.cw といったファイルを作成します(既に作成済み
なら、それを使って下さい)。ファイル名は、この名前の通りでなくてもかまい
ませんし、必ずしも /etc ディレクトリにある必要もありません。

そのファイルの中に、エイリアス設定した IP アドレスの正式なドメイン名を
書き込みます。エイリアス設定した IP アドレスがドメイン名を持っていない
場合は、IP アドレス自体を書き込んでもかまいません。

/etc/mynames.cw は、次のようなものになると思います。

# /etc/mynames.cw - include all aliases for your machine here; # is a comment 
domain.one.net                                                                
domain.two.com                                                                
domain.three.org                                                              
4.5.6.7                                                                       

sendmail.cf には、ファイル・クラス・マクロ (file class macro) を設定し
ている部分があるので、そこに以下の内容を追加します。

┌──────────────────────────────────┐
│                                                                    │
│##################                                                  │
│#   local info   #                                                  │
│##################                                                  │
│                                                                    │
│                                                                    │
│# file containing names of hosts for which we receive email         │
│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.7 をテストした際、メールはローカルマシンに配信され、
me@4.5.6.8 をテストした際は、SMTP メーラに渡されました。これは、正しい
動作です。

これで、設定はすべて終了です。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

4. 謝辞

Linux と IP エイリアスの開発に関わったすべての人々に感謝します。そして
、私の疑問を解決してくれた Juan Ciarlante には特に感謝しています。

エース・プログラマたちに栄光あれ!

この文書についての感想や提案、ご意見は、 までメール
でお知らせください。

よろしくお願いします。

ネットワーキングに関する詳しい情報は、Networking-Overview-HOWTO  (日本語訳
) をご
覧ください。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

5. 日本語訳について

翻 吉峯幸                           
訳 郎     (1997/05/24)              
:                                  
更 千旦裕                           
新 司     (2001/09/15)              
:                                  
校 Seiji                            
正 Kaneko                           
:                                  

誤訳・誤植・コメント等は、 までお願いします。

一覧に戻る
グリーンネット・トップページへ戻る

http://www.green.ne.jp/