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 : 誤訳・誤植・コメント等は、 までお願いします。