以下のテキストは、執筆時当時の情報を元に書いたものであり、 現在の情勢にそぐわないことを含む場合があるので注意されたい。 また、テキストは最終提出原稿で校正を経る前のものなので、実際にUNIXUSER 本誌に記載されたものとは異なる。誤字脱字等そのままである。
致命的な誤り以外は加筆修正等は行なわないので情報の鮮度に気をつけつつ 利用して欲しい。
→目次
Part3 Linuxで作るADSL(PPPoE)ルーター Part2にひきつづき、Linuxを利用したルータマシンを作成してみよう。ここでは Turbo Linux 7 Server 【脚註: 本誌2002年2月号付録CD-ROMににFTP 版が収録さ れている】を例にADSL(PPPoE)ルーターを作る手順を示そう。 ■NICの2枚差し Part2で解説したFreeBSDの場合と同様、ルータとして動作させるためにLinuxマシ ンに2枚のネットワークカードを装着することを前提とする。Linuxの場合2 つの インタフェースがある場合それぞれ eth0, eth1 というインタフェース名でアク セスすることになる。ここでは、 WAN側(ADSLモデムと接続) eth0 LAN側 eth1 という接続になっていると仮定して解説を行なう。 ■OSのインストール ここでは Turbo Linux 7 Server を例としよう。HDDの容量次第でどのようなイ ンストールタイプを選んでも良いだろう。ただ、最後のセキュリティレベルを選 ぶ画面では「高セキュリティ」を選んでおく方が間違いを起こしにくいだろう 【画面 ぬ】。 ---[図 ぬ]------------------------------------------------------------ %image(tl-install-sec.png) ---------------------------------------------------------------------- 先月号付録CD-ROMに収録した Turbo Linux 7 インストーラでは最小インストー ルタイプの「ランタイムシステム」を選んでもPPPoE接続に必要なパッケージ (ppp と rp-pppoe)がインストールされた状態となる。もし、手元のLinuxマシン に ppp, rp-pppoe が導入されていない場合はこれらをインストールしておこう。 【例:】 # rpm -i ppp-2.4.1-2.i386.rpm # rpm -i rp-pppoe-3.2-3.i386.rpm ■ネットワーク設定の確認 FreeBSDと同様、ルータとして利用するマシンではIPフォワーディングを有効に しておく必要がある。/etc/sysctl.conf にある # Disables packet forwarding net.ipv4.ip_forward = 0 を書き変えて # Enables packet forwarding net.ipv4.ip_forward = 1 にしておこう。リブートせずにIPフォワーディングを有効にするにはコマンドラ インから # sysctl net.ipv4.ip_forward=1 とする。 ■PPPoEの設定 LinuxでPPPoE接続を行なうには rp-pppoe 【脚註: http://www.roaringpenguin.com】 を利用するのが一般的である。ここでは rp-pppoe が導入されているものとして、 それを利用したPPPoE接続の設定方法を解説しよう。rp-pppoe では、adsl-setup コマンドを利用すると対話的にパラメータを設定できる。接続環境を以下のもの と仮定する。 配給されたIPアドレス 192.168.1.12 アカウント名 PPPoEaccount@provider パスワード PPPoEpassword LANのネットワークアドレス 10.0.1.0/24 ADSLモデムへのインタフェース eth0 LAN側インターフェース eth1 対話的セットアップ作業に先立ち、システム起動時にはADSL側のネットワークイ ンタフェースを利用しないように変えておく。/etc/sysconfig/network ファイ ルから GATEWAY と GATEWAYDEV の記述を削除する。 ---[ /etc/sysconfig/network ]--- GATEWAY=172.16.212.1 ←削除 GATEWAYDEV=eth0 ←削除 また /etc/sysconfig/network-scripts/ifcfg-eth0 で、eth0デバイスを起動時 に有効化しない記述にする。 ---[ /etc/sysconfig/network-scripts/ifcfg-eth0 ]--- DEVICE=eth0 ONBOOT=no adsl-setup コマンドを起動して質問に答えていく。 # adsl-setup Welcome to the Roaring Penguin ADSL client setup. First, I will run some checks on your system to make sure the PPPoE client is installed properly... Looks good! Now, please enter some information: ↓↓最初にアカウント名を入力する USER NAME >>> Enter your PPPoE user name (default bxxxnxnx): PPPoEaccount@provider ~~~~~~~~~~~~~~~~~~~~~ ↓↓PPPoEを行なうネットワークインタフェース名を入力する INTERFACE >>> Enter the Ethernet interface connected to the ADSL modem For Solaris, this is likely to be something like /dev/hme0. For Linux, it will be ethn, where 'n' is a number. (default eth1): eth0 ~~~~ ↓↓自動接続時の自動切断時間を聞いて来る。常時接続の場合は no と答える。 Do you want the link to come up on demand, or stay up continuously? If you want it to come up on demand, enter the idle time in seconds after which the link should be dropped. If you want the link to stay up permanently, enter 'no' (two letters, lower-case.) NOTE: Demand-activated links do not interact well with dynamic IP addresses. You may have some problems with demand-activated links. >>> Enter the demand value (default no): no ~~ ↓↓ネームサーバを答える。既に /etc/resolv.conf が設定してある場合は [Enter]のみを、セッション確立時に自動設定する場合は server と答える。 DNS Please enter the IP address of your ISP's primary DNS server. If your ISP claims that 'the server will provide DNS addresses', enter 'server' (all lower-case) here. If you just press enter, I will assume you know what you are doing and not modify your DNS setup. >>> Enter the DNS information here: server ~~~~~~ ↓↓PPPoE接続のパスワードを入力する PASSWORD >>> Please enter your PPPoE password: PPPoEpassword (実際には表示されない) ~~~~~~~~~~~~~ >>> Please re-enter your PPPoE password: PPPoEpassword (実際には表示されない) ~~~~~~~~~~~~~ ↓↓自動設定されるファイアーウォールの種別を選択する。NAT機能も有効に したい場合は 2 を選ぶ。 FIREWALLING Please choose the firewall rules to use. Note that these rules are very basic. You are strongly encouraged to use a more sophisticated firewall setup; however, these will provide basic security. If you are running any servers on your machine, you must choose 'NONE' and set up firewalling yourself. Otherwise, the firewall rules will deny access to all standard servers like Web, e-mail, ftp, etc. If you are using SSH, the rules will block outgoing SSH connections which allocate a privileged source port. The firewall choices are: 0 - NONE: This script will not set any firewall rules. You are responsible for ensuring the security of your machine. You are STRONGLY recommended to use some kind of firewall rules. 1 - STANDALONE: Appropriate for a basic stand-alone web-surfing workstation 2 - MASQUERADE: Appropriate for a machine acting as an Internet gateway for a LAN >>> Choose a type of firewall (0-2): 2 ~ ↓↓入力に間違いがなければ y を答える。 ** Summary of what you entered ** Ethernet Interface: eth0 User name: PPPoEaccount@provider Activate-on-demand: No DNS addresses: Supplied by ISP's server Firewalling: MASQUERADE >>> Accept these settings and adjust configuration files (y/n)? y ~ ↓↓問題がなければ /etc/ppp 以下の設定ファイルが自動調整されて完了する。 Adjusting /etc/ppp/pppoe.conf Adjusting /etc/ppp/pap-secrets and /etc/ppp/chap-secrets (But first backing it up to /etc/ppp/pap-secrets-bak) (But first backing it up to /etc/ppp/chap-secrets-bak) Congratulations, it should be all set up! Type 'adsl-start' to bring up your ADSL link and 'adsl-stop' to bring it down. Type 'adsl-status' to see the link status. 続いて、動作確認のため adsl-start を起動してみよう。 # adsl-start . Connected! のように 「Connected!」と表示されれば成功である。adsl-status コマンド により接続に関する情報が表示される # adsl-status adsl-status: Link is up and running on interface ppp0 ppp0 Link encap:Point-to-Point Protocol inet addr:192.168.1.12 P-t-P:192.168.1.1 Mask:255.255.255.255 UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1492 Metric:1 RX packets:4 errors:0 dropped:0 overruns:0 frame:0 TX packets:4 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:3 RX bytes:46 (46.0 b) TX bytes:52 (52.0 b) もしうまく接続できない場合は、Part2のFreeBSDの場合と同様のチェックポ イントを当たってみよう。 接続までうまく行くことが確認できたら、次回起動時以降自動的にadsl-start が走るようにしておく。 # chkconfig adsl on ■LANと外部ネットワークとの接続 FreeBSDでの設定例と同様、プロバイダからグローバルIPアドレスを1個もらう場 合だとして、LANから外部ネットワークへはPCルータによるNATを介してアクセス できるように設定しよう。 先に述べた adsl-setup コマンドの「FIREWALLING」の問いに対して「2 - MASQUERADE」を選んだ場合は、PPPoE接続完了後に /etc/ppp/firewall-masq ス クリプトを自動的に呼び出すようになる。本来ここでNATが有効化されるのだが このスクリプトで前提となっているのは ipchains である。ドキュメントにある ようにカーネル2.6または2.8が出る頃にはipchainsは廃止が予測されている。 したがって、これから新たにルータマシンを立てる場合にはiptables を利用す るのが有利だろう。 ここでは、iptablesについての簡単な説明と、パケットフィルタリング・NAT 機 能の有効化について順を追って解説しよう。 ■iptablesによるパケットフィルタリング ●ipchainsとiptables カーネル2.4で本格的に導入された iptables は、それまでのipchainsを置き 換える形で設計されている。両者は同時に使用することができないので、もし システムが既にipchainsモジュールをロードしている状態になっていたら、こ れをアンロードする必要がある。 # lsmod として、ipchains が存在する場合は chkconfig ipchains off しておくと、 次回起動時以後ipchainsもジュールはロードされなくなる 【脚註: カーネルに組み込まれている場合は ipchains を外して再構築する必 要がある】 ●iptablesの動作概念 iptablesを利用したパケットフィルタリングを行なう場合には、カーネルを中 心としたパケットの流れを基準に考える必要がある。iptablesでは、フィルタ リング対象となるパケットを【図 を】のように取り扱う。 * INPUT 外部からカーネルに入って来るパケットに対するルールセット * FORWARD 別のインタフェースにIPフォワードされるパケットに対する ルールセット * OUTPUT カーネルから外部に出ていくパケットに対するルールセット あらかじめパケットの向かう方向に応じて3分類されたルールセットにフィル タリングルールを追加していく。iptablesではこのルールセットのことを「チェ イン」という。 http://www.linux.or.jp/JF/JFdocs/packet-filtering-HOWTO-6.html ----[図 を]----------------------------------------------------------- 入方向 ┌──────┐ / ̄ ̄ ̄\ 出方向 ―→│ルーティング│→|FORWARD |――→ │の決定 │ \___/ ↑ └──────┘ │ │ │ ↓ / ̄ ̄\ / ̄ ̄\ |OUTPUT| |INPUT | \__/ \__/ ↑ │ │ └─→ ローカル プロセス ──┘ ---------------------------------------------------------------------- ●チェインの操作 フィルタリングルールは、iptablesコマンドを用いて INPUT, OUTPUT, FORWARD いずれかのチェインにルールを登録していく。チェインへのルールの 追加は # iptables -A <チェイン> <条件> -j ターゲット としておこなう。ターゲットとしては ACCEPT パケットを通過させる DROP パケットを弾き落とす QUEUE パケットをユーザスペースに送る という代表的アクションの他、別のチェインへ評価先を経由させることができ る。たとえば、外部に接続されたネットワークインタフェース(PPPoEの場合は ppp0)から入って来るパケットは到達点によって INPUT, FORWARD いずれかの チェインを通過することになる。このような場合、同じフィルタリングルール を適用する場合も、INPUTチェイン/FORWARDチェイン、それぞれに同じルール を書きた場合がある。もし、パケットの到達点に依らない共通のフィルタリング ルールが多数ある場合は、その共通部分をくくり出して、もう一つ別の「ユー ザ定義チェイン」に登録して使うと(管理上の)効率が良くなる。 新しいチェインは以下の操作で作成/クリア/削除できる。 * 作成 # iptables -N <チェイン> * 登録されたルールの全クリア # iptables -F <チェイン> * 削除 # iptables -X <チェイン> 削除のときには、ルールを空にしておく必要があるので -X の操作の前には -F が必要となる。また、-F はINPUT, OUTPUT, FORWARDなどの組込みチェイン に対しても有効な操作である。 以下で実例を示すが、上記のようにして作成したユーザ定義チェインに評価先 を経由させる場合は # iptables -A INPUT <条件> -j <ユーザ定義チェイン> # iptables -A FORWARD <条件> -j <ユーザ定義チェイン> のようにすればよい。 ●条件の記述 実際にフィルタリング対象となるパケットの比較条件に利用できる iptables のオプションのうち代表的なものを以下に示す。これらを0個以上組み合わせ たものが一つのルールのマッチング条件となる。[]で囲んだものは省略可能を 意味する。ここに列挙したもの以外に関しては iptables(8) マニュアルページ、 もしくは Linux 2.4 Packet Filtering HOWTO 【http://www.linux.or.jp/JF/JFdocs/packet-filtering-HOWTO.html】 を参考にしてほしい。 -------------------------------------------------- -p [!] プロトコル パケットのプロトコルの種別 (--protocol) tcp, udp, icmp, all あるいは /etc/protocols にある識別子または番号を 指定できる。! をつけると NOT の意味にな り条件を否定できる -------------------------------------------------- -s [!] アドレス[/マスク] パケットのソースアドレスの選別指定 (--source, --src) ! をつけると「否定」になる -------------------------------------------------- -d [!] アドレス[/マスク] パケットのデスティネーションアドレスの選別指定 (--destination, --dst) ! をつけると「否定」になる -------------------------------------------------- -i [!] インタフェース名 入り方向のインタフェース名の選別指定 INPUT, FORWARD, PREROUTING チェインでの み指定可能 ! をつけると「否定」になる -------------------------------------------------- -o [!] インタフェース名 出方向のインタフェース名の選別指定 OUTPUT, FORWARD, POSTROUTING チェインでの み指定可能 ! をつけると「否定」になる -------------------------------------------------- [!] -f フラグメントパケットの選別指定 (--fragment) ! をつけると「否定」になる(つける位置に 注意) -------------------------------------------------- また、以下の条件は -p で指定したプロトコルが特定の場合のみ意味を持つ。 プロトコル オプション 意味 ----+---------------------------------+------- tcp --source-port [!] [port[:port]] ソースポートの選別指定 udp --sport 2つの値を:で区切るとその範囲 全てを意味する !をつけると「否定」になる ----+---------------------------------+------- tcp --destination-port [!] [port[:port]] 行先ポートの選別指定 udp --sport 2つの値を:で区切るとその範囲 全てを意味する !をつけると「否定」になる ----+---------------------------------+------- tcp --tcp-flags [!] mask comp パケットのTCPフラグの選別指定。maskには、調べたいフ ラグ全てをカンマ(,)で区切って示し、そのうちセットさ れているべきものをcompに列挙する。 ! をつけると「否定」になる ----+---------------------------------+------- tcp [!] --syn --tcp-flags SYN,RST,ACK SYN と同値。この種のパケット はTCPコネクション開始時のものである。 ----+---------------------------------+------- これらの比較は -p の指定により自動的にロードされた拡張比較モジュールで 実現されている。これら以外にも -m オプションで明示的にモジュール利用を 指示して使うことができる比較条件がある。本稿ではとくに有用な以下の拡張 モジュールとそれによって可能となる比較を利用する。 モジュール 比較条件 意味 multiport --source-port <ポートリスト> ポート番号をカンマで区切っ (--sport) て複数の接続元ポートを指 定。-p tcp, -p udp いず れかで利用可能 +---------------------------------------------------------- --destination-port <ポートリスト> ポート番号をカンマで区切っ (--dport) て複数の接続先ポートを指 定。-p tcp, -p udp いず れかで利用可能 れかで利用可能 +---------------------------------------------------------- --port <ポートリスト> ポート番号をカンマで区切っ (--dport) て複数の接続元ポートまた は接続先ポートを指 定。-p tcp, -p udp いず れかで利用可能 ------------------------------------------------------------------------- state --state <状態> コネクションの状態に関する比較。 <状態>を示すキーワードとして INVALID 不当な接続 ESTABLISHED 確立済みのコネクション NEW 新規コネクション RELATED 新規コネクションだが、 既存コネクションに関連す るもの。たとえば、ftp-data など。 ●ポリシーの設定 iptablesのフィルタリングテーブルでは、どこでも落とされず「チェイン」の 末尾まで通り抜けたパケットを通過させるか弾き落とすかのデフォルト動作を 決定できる。これを「ポリシー」といいiptablesの-Pオプションで変更できる。 # iptables -P <チェイン> <ターゲット> とすることで <チェイン> の末尾まで到達したときのターゲットが、 <ターゲッ ト> になる。たとえば、 # iptables -P INPUT DROP とすると、INPUTチェインのポリシーが DROP(つまりパケット破棄)になる。 ●フィルタリングルールの設定例 以上を用いてFreeBSD(ipfw)でのフィルタリングルール(???ページ)と同様の方 針のルールを書いてみよう。方針としては * ローカルホストパケットを許可 * LAN内との通信を許可 * 確立済コネクションの通過 * LANから外部へのTCP接続を全て通す * 必要なUDPパケットの通過 * 外部に提供するサービスの通過 * ICMPの通過 * 上記以外のものを拒否 というものである。ipfwでは全てのルールを同一のテーブルに登録していった のだが、iptablesではパケットの方向によって違うチェインを使うことに注意 する。今回のルールでは「外に出て行くものは許し、入って来るものを制限」 というのが前提なので、OUTPUTチェインにはとくにルールを設定せず、ポリシー を「ACCEPT」にする。逆に、入り方向として考えられる INPUT, FORWARD両チェ インに ???ページ (←ipfwのページ)と同様のルールを設定する。ここでは、 同一のルールを設定するため、新たなチェイン 「myrule」 を作成し、そこに 登録して行こう。そして、INPUT, FORWARD両チェインから全てのパケットを myrule チェインに向かわせることでパケットの行先にかかわらず同じルール を適用させる【図 わ】。 ----[図 わ]----------------------------------------------------------- 入方向 ┌──────┐ / ̄ ̄ ̄\ 出方向 ―→│ルーティング│→|FORWARD |――→ │の決定 │ \___/ ↑ └──────┘ │ ↑ │ │ ↓ │ │ ↓ +------+ │ / ̄ ̄\ / ̄ ̄\→|myrule|→ |OUTPUT| |INPUT | +------+ \__/ \__/ ← ↑ │ │ └─→ ローカル プロセス ──┘ ※※INPUTとFORWARDのチェインから myrule にいったん経由して元に戻る絵 ---------------------------------------------------------------------- さて、では実際にルールを決定して行こう。 * チェインの準備 OUTPUTチェインはデフォルトで全て許可し、INPUT, FORWARDチェインはデフォ ルトで全て破棄するようにポリシーを決めて、全てのチェインのルールを消 去する。 iptables -P INPUT DROP iptables -P OUTPUT ACCEPT iptables -P FORWARD DROP iptables -F FORWARD iptables -F INPUT iptables -F OUTPUT また、INPUT, FORWARD共通で使うためのユーザ定義チェイン myrule を作成 する。 iptables -N myrule iptables -F myrule そして、INPUTチェイン、FORWARDチェインに入って来たものを全て myrule チェインを通すようにする。 iptables -A INPUT -j myrule iptables -A FORWARD -j myrule * ローカルホストパケットを許可 ループバックインタフェース(lo)を通るパケットを許可し、それ以 外のインタフェースからの127.0.0.0/8パケットは破棄する。 iptables -A INPUT -i lo -j ACCEPT iptables -A INPUT -s 127.0.0.0/8 -i '!' lo -j DROP * LAN内との通信を許可 LAN内パケットは eth0 インタフェースを通過する 10.0.1.0/24 のもので ある。 iptables -A myrule -i eth1 -s 10.0.1.0/24 -j ACCEPT もし複数のLANがある場合はネットワークアドレス指定を適宜書き変える。 * 確立済コネクションの通過 TCPのestablished connectionと、フラグメントパケットは通過させる。前 者については拡張マッチングモジュール state をロードする必要があるの で -m state を付加する。 iptables -A myrule -p tcp -m state --stat ESTABLISHED -j ACCEPT iptables -A myrule -f -j ACCEPT * LANから外部へのTCP接続を全て通す これに関してはOUTPUTチェインのポリシーで全通過させているので特にルー ルを書く必要はない。 * 必要なUDPパケットの通過 DNS(53)とNTP(123)を通過させたい場合以下のように記述する。 iptables -A myrule -p udp --dport 53 -j ACCEPT iptables -A myrule -p udp --sport 53 -j ACCEPT iptables -A myrule -p udp --dport 123 -j ACCEPT iptables -A myrule -p udp --sport 123 -j ACCEPT * 外部に提供するサービスの通過 外部ネットワークに公開したいサービスとして SSH(22), SMTP(25), HTTP(80), POP3(110)を通過させたい場合は次のようになる。拡張マッチン グモジュール multiport を利用すると次のように1行のルールで書ける。 iptables -A myrule -p tcp -m multiport --dport 22,25,80,110 -j ACCEPT * ICMPの通過 ネットワーク到達性試験のためにICMPを通したい場合は以下を追加。 iptables -A myrule -p icmp -j ACCEPT * 上記以外のものを拒否 myruleチェインの末尾まで達したパケットは、INPUTチェインあるいは FORWARDチェインに復帰して、それらのポリシーである DROP によって弾き 落とされることになる。ただ、ルールセットの調整を行なっているときは必 要ならログを出すようにしておくと良いだろう。 iptables -A myrule -j LOG - - - - ●NATの設定 iptablesでは、3つの「テーブル」を扱うようになっている。これまで解説し たパケットフィルタリングを行なうための "filter" のほかに、"nat", "mangle" がある。iptables でNATを行なうために利用するのが "nat" テーブ ルである。 今回の例の場合は、LANからppp0インタフェースを経由して外に出ていくパケッ トのNAT処理を行ないたいので、nat テーブルの POSTROUTING チェインに ターゲット MASQUERADE を指定すればよい。 # iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE これにより、LAN内の全マシンから外部のサービスに(NATを介して)接続できる ようになる。 ●スクリプト化 以上をまとめてスクリプト化し、PPPoE接続時に自動的に呼んでもらうために /etc/ppp/firewall-masq ファイルにセーブする【リスト か】。 ---[リスト り /etc/rc.firewall.local]--------------------------------- #!/bin/sh # # firewall-masq This script sets up firewall rules for a machine # acting as a masquerading gateway # # Copyright (C) 2000 Roaring Penguin Software Inc. This software may # be distributed under the terms of the GNU General Public License, version # 2 or any later version. # Interface to Internet EXTIF=ppp+ ANY=0.0.0.0/0 iptables -P INPUT DROP iptables -P OUTPUT ACCEPT iptables -P FORWARD DROP iptables -F FORWARD iptables -F INPUT iptables -F OUTPUT # Make own rule set chain iptables -N myrule iptables -F myrule # Bypass to myrule iptables -A INPUT -j myrule iptables -A FORWARD -j myrule # Allow packets in local iptables -A INPUT -i lo -j ACCEPT iptables -A INPUT -s 127.0.0.0/8 -i '!' lo -j DROP # Allow packets within LAN iptables -A myrule -i eth1 -s 10.0.1.0/24 -j ACCEPT # Established packets iptables -A myrule -p tcp -m state --stat ESTABLISHED -j ACCEPT # Fragments iptables -A myrule -f -j ACCEPT # Essential UDP's iptables -A myrule -p udp --dport 53 -j ACCEPT iptables -A myrule -p udp --sport 53 -j ACCEPT iptables -A myrule -p udp --dport 123 -j ACCEPT iptables -A myrule -p udp --sport 123 -j ACCEPT # Pass SSH, SMTP, HTTP, POP3 iptables -A myrule -p tcp -m multiport --dport 22,25,80,110 -j ACCEPT # Allow ICMP iptables -A myrule -p icmp -j ACCEPT # Log the rest iptables -A myrule -j LOG # Do masquerading iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE # Ensure IP forwarding here sysctl -w net.ipv4.ip_forward=1 ---------------------------------------------------------------------- ■DHCPサーバ Linuxでも ISC-DHCP が利用できる。今回インストールした Turbo Linux 7 Server でもデフォルトでDHCPサーバがインストールされる。これは以下のコマ ンドで確認できる。 # rpm -qa | grep dhcp dhcp-client-2.0pl5-3 dhcp-2.0pl5-3 上記の場合 dhcp-2.0pl5-3 がDHCPサーバに必要なパッケージである。インストー ルされていない場合は、dhcp-<バージョン名>.rpm を入手して # rpm -i dhcp-<バージョン名>.rpm としてインストールしよう。 isc-dhcp 2.x の場合は dhcpd.conf の書式が若干異なる。 ---[ /etc/dhcpd.conf ]------------------------------------------------ # # dhcpd.conf # # ドメイン名とネームサーバ option domain-name "example.com"; option domain-name-servers ns.example.com; # lease時間の指定 default-lease-time 600; max-lease-time 7200; # LANの subnet 10.0.1.0 netmask 255.255.255.0 { # ゲートウェイアドレス option routers 10.0.1.1; # Unknown clients get this pool. # 使わせるIPアドレスの範囲指定 range 10.0.1.200 10.0.1.253; } ---------------------------------------------------------------------- /var/dhcp/dhcpd.leases ファイルを作成し、dhcpdを-dオプションつきで起動 してみる。 # touch /var/lib/dhcp/dhcpd.leases # dhcpd -d これでエラーメッセージとともに異常終了しなければ、次回起動時にはDHCPサー バとして機能するように # chkconfig dhcpd on としておこう。 ■まとめ PPPoE接続、NAT機能、パケットフィルタリング、DHCPサーバ、これらの機能が揃 えばホームルータとしての役割は十分に果たせるだろう。単なるルータから始め て、WWWやメイルサーバなど自分のところでサービスしたいものを順次追加して 育てていくのも常時接続環境で得られる大きな楽しみのひとつだろう。
yuuji@ Fingerprint16 = FF F9 FF CC E0 FE 5C F7 19 97 28 24 EC 5D 39 BA