Gentoo Logo

ホームルータガイド

目次:

1.  はじめに

古くて余っているパーツを使ってあなただけのルータを組み立てるのは、Linksysのような既製のルータを買うのに比べて多くの利点があります。 断然良い利点は、接続の制御についてです。 他の利点はあなたの想像にお任せしましょう。 必要とするものは、このシナリオでほとんど何でもできます。

このガイドでは、最初にルータ上でのネットワークアドレス変換(NAT)の設定方法を紹介していきます。 そして、dnsmasqでのドメインネームサービス(DNS)、dhcpcdによるDHCP、rp-pppoeによるADSLといった一般的なサービスの追加と設定方法を紹介します。 最後に、ポートフォワーディング、帯域制御、proxyやキャッシングなどの凝った面白い話題を紹介します。

設定を始めるに当たって、いくつか基本的な条件を満たさなければいけません。 まず、ネットワークインタフェースカード(NIC)が少なくとも二つあるコンピュータが必要になります。 次に、インターネット接続設定(IP、DNS、ゲートウェイ、ユーザ名、パスワードなど)の設定が必要でしょう。 最後に、暇な時間が少しとGentooへの愛が必要になります。

このガイドでの取り決めは以下の通りです。

  • eth0 - ローカルエリアネットワーク(LAN)に接続しているNIC
  • eth1 - ワイドエリアネットワーク(WAN)に接続しているNIC
  • LANは192.168.0.xxxネットワークを使用します。
  • ルータは、標準IPアドレス192.168.0.1に固定されています。
  • ルータは、Linux 2.4あるいは2.6で動作しています。 あなたは2.0あるいは2.2でもお好きにどうぞ。

重要: 安全対策のために、ファイアウォールが起動して動き出すまでルータ上の不要なサービスはすべて停止することを強く勧めます。 現在動いているサービスを見るには、rc-statusを実行します。

2.  カーネルの設定 (まず汝自身を知れ)

カーネルには、両方のNICを動かすためのドライバが必要です。 カードが既に設定されているかを見るためにはifconfigを実行します。 次の例とは出力が少し違うかもしれませんが気にしないでください。 重要なのは、インタフェースがすべて見えるかということです。

コード表示 2.1: NICの確認

# ifconfig -a
eth0      Link encap:Ethernet  HWaddr 00:60:F5:07:07:B8
          BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)
          Interrupt:11 Base address:0x9800 

eth1      Link encap:Ethernet  HWaddr 00:60:F5:07:07:B9
          BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)
          Interrupt:10 Base address:0x9400 

二つのカードが見えず、しかもカードの種類がわからなかった場合はlspci | grep Ethernetを実行してみます。 これは、emerge pciutilsで入手できます。 この情報をもとに、適切なドライバのサポートをカーネルに追加しましょう。

次に、iptablesとNAT(それと必要ならパケット制御)のサポートが必要になるでしょう。 次のリストは、必ず必要(*)、PPPoEでのADSLでのみ必要(a)、推奨(x)、パケット制御のみ(s)といった機能に分けられます。 機能をカーネルに組み込むか、 機能が必要になったときに適切なモジュールがロードされるならばモジュールにするか、どちらでも構いません (ただし、モジュールのロードは楽しい課題として読者に任せます)。

コード表示 2.2: ネットワーク設定

Networking options  --->
   [*] TCP/IP networking
      [*] IP: advanced router
   [*] Network packet filtering (replaces ipchains)
2.4.xの場合、DHCP用に下記を有効にする必要があります。
   [*] Socket Filtering

   IP: Netfilter Configuration  --->
      [*] Connection tracking (required for masq/NAT)
         [x] FTP protocol support
         [x] IRC protocol support
      [*] IP tables support (required for filtering/masq/NAT)
         [*] IP range match support
         [x] MAC address match support
         [*] Multiple port match support
         [*] Packet filtering
            [*] REJECT target support
            [x] REDIRECT target support
         [*] Full NAT
            [*] MASQUERADE target support
         [s] Packet mangling
            [s] MARK target support
         [x] LOG target support

   QoS and/or fair queueing  --->
      [s] QoS and/or fair queueing
         [s] HTB packet scheduler
         [s] Ingress Qdisc

   [a] PPP (point-to-point protocol) support
      [a] PPP filtering
      [a] PPP support for async serial ports
      [a] PPP support for sync tty ports
      [a] PPP Deflate compression
      [a] PPP BSD-Compress compression
      [a] PPP over Ethernet

注意: 2.4と2.6では少し違うところもあるかもしれませんが、あなたはわかるんじゃないでしょうか。2,6カーネルにおいてさえ、オプションは移動する傾向があります。幸運を!

3.  WANに接続する(別名、インターネット)

導入

インターネットに繋ぐ方法は多いので、私が慣れ親しんでいる方法について見ていくことにします。 それは、ADSL(PPPoE)や(静的IPあるいは動的IPの)ケーブルモデムです。 もし他の方法があれば、軽い宣伝文句を気軽に書いて私にメールしてください。 この章の以降の節は、あなたに当てはまらないなら遠慮なく飛ばしてください。 この章では、ルータをeth1経由でインターネットに接続していきます。

ADSLとPPPoE

最近は、Roaring Penguinという素晴らしいパッケージに上等のPPPoEソフトウェアがすべてまとめられています。 単純にemerge rp-pppoeして、先に進みましょう。 ユーザ名やパスワードの情報が必要になると言ったのを覚えているでしょうか? 私は嘘をついていなかったので、あなたが情報を持っていることを望みます! /etc/ppp/pppoe.confをあなたの好きなエディタで読み出して設定してください。

注意: 下記のnetの設定で動作するには、baselayout-1.11.14以降がシステムにインストールされている必要があります。

コード表示 3.1: eth1の設定

('vla9h924'をあなたのユーザ名に、'password'をあなたのパスワードに置き換えてください)

# nano /etc/ppp/pap-secrets
# client    server  secret
"vla9h924" * "password"
# nano /etc/conf.d/net
eth1にadslを使うようbaselayoutに伝える
config_eth1=( "adsl" )
user_eth1=( "vla9h924" )
# ln -s net.lo /etc/init.d/net.eth1
# rc-update add net.eth1 default
# /etc/init.d/net.eth1 start

警告: DSLインタフェースが起動すると、ppp0を作成するでしょう。 NICはeth1と呼ばれていますが、実際にはIPはppp0と密接に結びついています。 以降、'eth1'を利用する例では'ppp0'と置き換えてください。

(静的、動的IPの)ケーブルモデム

静的IPでは、動的IPより少し多くの詳細情報が必要になります。 静的なユーザ用に、IP、ゲートウェイ、DNSサーバが必要になるでしょう。

コード表示 3.2: eth1の設定

動的IPユーザ
# emerge dhcpcd
# nano /etc/conf.d/net
次のエントリが必要になるでしょう
config_eth1=( "dhcp" )

静的IPユーザ
# nano /etc/conf.d/net
次のエントリが必要になるでしょう
config_eth1=( "66.92.78.102 broadcast 66.92.78.255 netmask 255.255.255.0" )
routes_eth1=( "default gw 66.92.78.1" )
# nano /etc/resolv.conf
一行あたりに一つのDNSサーバを記述してください
nameserver 123.123.123.123

動的、静的設定
# ln -s net.lo /etc/init.d/net.eth1
# rc-update add net.eth1 default
# /etc/init.d/net.eth1 start

設定はすべて終わり。これで動作するはずです。

4.  LANに接続する(友達と一緒に行こう)

このステップは、前のステップに比べて楽です。

コード表示 4.1: eth0の設定

# nano /etc/conf.d/net
次のような行を追加してください
config_eth0=( "192.168.0.1 broadcast 192.168.0.255 netmask 255.255.255.0" )
# rc-update add net.eth0 default
# /etc/init.d/net.eth0 start

5.  LANサービス(私たちは善良な人々だから)

DHCPサーバ

家の皆が、自分のコンピュータをネットワークに繋ぐとすぐ利用できるのは素晴らしいに違いありません。 退屈でつまらない詳細を覚えたり、ややこしい設定画面をじっとにらむ必要がないのです。 人生は素晴らしくなきゃ、でしょ? ここでは、動的ホスト設定プロトコル(DHCP)と何故それを使うかを説明します。

DHCPは、その名前が表す通りのプロトコルです。 他のホストを自動的に動的に設定します。 DHCPサーバをルータ上で実行し、ネットワークに関するすべての情報(正当なIP、DNSサーバ、ゲートウェイなど)をルータに設定します。 そしてホストは起動するときに、DHCPクライアントを実行して自動的に自身を設定します。 慌てず、騒がずです! DHCPについての詳しい情報は、Wikipediaで必ず見つかります。

DHCPとDNSサービスの両方を提供する、dnsmasqと言うパッケージを使用します。 今のところは、DHCPにのみ焦点を当てます。 別のDHCPサーバを実行したいなら、面白いことの章で別の例を探す事が出来ると言うことに注意してください。 また、DHCPサーバの設定をいじくり回したいのなら、/etc/dnsmasq.confのコメントを読んでください。 ですが、すべてデフォルト設定でもよく動作します。

コード表示 5.1: DHCPサーバの設定

# emerge dnsmasq
# nano /etc/dnsmasq.conf
dhcpを有効にするためにこの行を追加してください
dhcp-range=192.168.0.100,192.168.0.250,72h
dnsmasqをLANインタフェースだけに制限する
interface=eth0
# rc-update add dnsmasq default
# /etc/init.d/dnsmasq start

これで、あなたのかわいいルータは正真正銘のDHCPサーバになりました! コンピュータを接続して動作を見てください! Windowsシステムであれば、TCP/IPプロパティを開いて「IPアドレスを自動的に取得する」と「DNSサーバのアドレスを自動的に取得する」オプションを選択してください。 すぐには変更が反映されないこともあるので、コマンドプロンプトを開いてipconfig /releaseipconfig /renewを実行する必要があるかもしれません。 Windowsについてはこれで十分なので、大好きなペンギンのもとに戻りましょう。

DNSサーバ

インターネット上のある場所に行きたい時、人々は数字の羅列ではなく名前を覚えています。 だって、'ebay.com'と'66.135.192.87'、覚えやすいのはどちらでしょうか? ここは、DNSのステップです。 DNSサーバはインターネットの至るところで動作していて、 誰かが'ebay.com'に行きたいときに、'ebay.com'(私たちが理解している形)を'66.135.192.87'(コンピュータが理解している形)に変えます。 DNSに関する詳しい情報は、Wikipediaで必ず見つかります。

DHCPサーバにdnsmasqを使用しており、これにはDNSサーバが含まれているので、ここで行うことは何もありません。 あなたのルータは、DHCPクライアントにDNSを提供する準備が出来ています。 すべてが簡単だと思うでしょう。

他のDNSサーバのほうが快適であれば、遠慮なく他のDNSサーバを選んでください。 しかしdnsmasqがすごいのは、私たちが望むことだけをしっかりやってくれるよう設計されている点です。 これは、ローカルネットワーク用のDNSキャッシング/フォワーディングサーバです。 ここでは、独自ドメイン用にDNSを提供しようとはせずに、LAN内の皆に単純なDNSサービスを提供します。

NAT (別名、IPマスカレード)

ここまでの設定では、あなたのネットワークを利用する人たちは、お互いに通信できてDNSでホスト名を見ることもできるのですが、インターネットへはまだ実際に接続できません。 これでも素晴らしいことだと思うかもしれませんが(あなたがたくさんの帯域を使えますからね!)、まだあまり幸せではないのは間違いありません。

それではNetwork Address Translation (NAT)のステップです。 NATは、利用できるIPアドレスの数が少ししかない場合に、プライベートLAN内の複数のコンピュータをインターネットに接続する方法です。 一般にISPからもらえるIPアドレスは1つですが、家にあるコンピュータ全部をインターネットに接続したいとします。 NATはこれを可能にする魔法です。 NATに関する詳しい情報は、Wikipediaで必ず見つかります。

注意: 設定を始める前に、システムにiptablesがあるかを確かめてください。 ほとんどのシステムでは既にインストールされていますが、されていないこともあるかもしれません。 もしインストールされていないなら、emerge iptablesを実行しましょう。

コード表示 5.2: iptablesの設定

最初に現在のルールを全消去します
# iptables -F
# iptables -t nat -F

一致しないトラフィックを扱うためのデフォルトポリシーを設定
# iptables -P INPUT ACCEPT
# iptables -P OUTPUT ACCEPT
# iptables -P FORWARD DROP

これらの例をコピーして貼り付ける
# export LAN=eth0
# export WAN=eth1

それからサービスをロックし、LANからだけ動作するようにします
# iptables -I INPUT 1 -i ${LAN} -j ACCEPT
# iptables -I INPUT 1 -i lo -j ACCEPT
# iptables -A INPUT -p UDP --dport bootps -i ! ${LAN} -j REJECT
# iptables -A INPUT -p UDP --dport domain -i ! ${LAN} -j REJECT

(自由選択) WANから私たちのsshサーバへのアクセスを許可します
# iptables -A INPUT -p TCP --dport ssh -i ${WAN} -j ACCEPT

特権ポートへのTCP/UDPパケットを破棄します
# iptables -A INPUT -p TCP -i ! ${LAN} -d 0/0 --dport 0:1023 -j DROP
# iptables -A INPUT -p UDP -i ! ${LAN} -d 0/0 --dport 0:1023 -j DROP

最後に、NAT用のルールを追加します
# iptables -I FORWARD -i ${LAN} -d 192.168.0.0/255.255.0.0 -j DROP
# iptables -A FORWARD -i ${LAN} -s 192.168.0.0/255.255.0.0 -j ACCEPT
# iptables -A FORWARD -i ${WAN} -d 192.168.0.0/255.255.0.0 -j ACCEPT
# iptables -t nat -A POSTROUTING -o ${WAN} -j MASQUERADE
IPフォワーディングが可能なことをカーネルに伝えましょう
# echo 1 > /proc/sys/net/ipv4/ip_forward
# for f in /proc/sys/net/ipv4/conf/*/rp_filter ; do echo 1 > $f ; done

こうすると、ブート時に手動でルールを実行する必要はありません
# /etc/init.d/iptables save
# rc-update add iptables default
# nano /etc/sysctl.conf
次の行を追加するかコメントを外してください
net.ipv4.ip_forward = 1
net.ipv4.conf.default.rp_filter = 1

動的なインターネットアドレスであれば、
おそらくはこれを有効にした方が良いでしょう。
net.ipv4.ip_dynaddr = 1

これらすべてをタイプし終わると、あなたのネットワークのホストはまるで直接接続されているかのようにインターネットを利用できるはずです。

ip_dynaddrオプションは、 ダイアル・オン・デマンドシステムやISPが動的アドレスを配布する場合に有用です。 これにより、インターネット側のインターフェースが準備OKになる前に、 接続が試みられた際に発生する問題に対処できます。但し、 これはルータ背後のユーザに対しより滑らかなネットワークを体験させているにすぎません。

6.  (まさかのときに備えて)面白いこと

導入

信じられないかもしれませんが、終わってしまいました:) ここからは、あなたの興味をひくような共通の話題を紹介していきます。 この章で紹介する話題はすべて自由選択です。

ポートフォワーディング

ルータの背後にあるコンピュータ上のサービスを取り扱えるようになりたい、もしくはリモートで接続するときにもっと楽にやりたいこともあるでしょう。 おそらく、ルータの背後にある一つ以上のマシンでFTP、HTTP、SSH、VNCサーバを実行し、それらすべてに接続できるようにしたいのではないでしょうか。 ただ一つ気をつけて欲しいのは、一つのポートには一つのサービスとマシンしか設定できないということです。 例えば、ルータの背後にある三つのFTPサーバを直接設定できないときに、すべて21番ポートを通して接続しようとします。 この場合、21番ポートを使えるのは一つのサーバだけで、残りは123番や567番ポートなどを使うしかありません。

ポートフォワーディングのルールは、すべてiptables -t nat -A PREROUTING [-p プロトコル] --dport [ルータ上の外部ポート] -i ${WAN} -j DNAT --to [IPあるいはポートをフォワードする場所]という形式です。 不幸なことに、iptablesはポートフォワーディングの場合にホスト名を受け付けません。 外部のポートを、内部のマシン上の同じポートへフォワーディングしているなら、あて先ポートを省略できます。 詳しい情報は、iptables(8)のページを見てください。

コード表示 6.1: iptablesコマンドを実行する

これらの例をコピーして貼り付け
# export LAN=eth0
# export WAN=eth1

2番ポートを内部ホストのsshへフォワーディング
# iptables -t nat -A PREROUTING -p tcp --dport 2 -i ${WAN} -j DNAT --to 192.168.0.2:22

FTPを内部ホストへフォワーディング
# iptables -t nat -A PREROUTING -p tcp --dport 21 -i ${WAN} -j DNAT --to 192.168.0.56

HTTPを内部ホストへフォワーディング
# iptables -t nat -A PREROUTING -p tcp --dport 80 -i ${WAN} -j DNAT --to 192.168.0.56

内部ホスト用のVNCフォワーディング
# iptables -t nat -I PREROUTING -p tcp --dport 5900 -i ${WAN} -j DNAT --to 192.168.0.2
# iptables -t nat -I PREROUTING -p tcp --dport 5901 -i ${WAN} -j DNAT --to 192.168.0.3:5900
192.168.0.3へVNCしたいなら、ルータのホスト名にただ':1'を追加します

Bittorrentフォワーディング
# iptables -t nat -A PREROUTING -p tcp --dport 6881:6889 -i ${WAN} -j DNAT --to 192.168.0.2

eDonkey/eMuleフォワーディング
# iptables -t nat -A PREROUTING -p tcp --dport 4662 -i ${WAN} -j DNAT --to 192.168.0.55

ゲームキューブ ワープ・パイプのサポート
# iptables -t nat -A PREROUTING -p udp --dport 4000 -i ${WAN} -j DNAT --to 192.168.0.56

プレイステーション2オンラインのサポート
# iptables -t nat -A PREROUTING -p tcp --dport 10070:10080 -i ${WAN} -j DNAT --to 192.168.0.11
# iptables -t nat -A PREROUTING -p udp --dport 10070:10080 -i ${WAN} -j DNAT --to 192.168.0.11

Xbox Live
# iptables -t nat -A PREROUTING -p tcp --dport 3074 -i ${WAN} -j DNAT --to 192.168.0.69
# iptables -t nat -A PREROUTING -p udp --dport 3074 -i ${WAN} -j DNAT --to 192.168.0.69
# iptables -t nat -A PREROUTING -p udp --dport 88 -i ${WAN} -j DNAT --to 192.168.0.69

注意: 一般的で良い例が他にありましたら、メールをお願いします

identd (IRC用)

インターネットリレーチャット(IRC)は、identサービスをかなり利用しています。 いまIRCクライアントはルータの背後にあるので、ルータやクライアントにidentサービスを提供する必要があります。 そのようなサーバの一つとして、midentdと呼ばれるものが作成されています。

コード表示 6.2: identの設定

# emerge midentd
# rc-update add midentd default
# /etc/init.d/midentd start

Portageには他のidentサーバもいくつかあります。 必要に応じて、oidentdfakeidentdを調べることをお勧めします。

タイムサーバ

システム時間を正確に保つのは、正常なシステムを維持するのに必須です。 時間を維持する最も一般的な方法の一つに、 ネットワークタイムプロトコル(NTP)と、(サーバとクライアントの実装を提供する)ntpパッケージがあります。

コンピュータ上でntpクライアントを実行している人達は多いです。 明らかに、世界ではクライアントが増え、ntpサーバが受ける負荷が大きくなっています。 ホームネットワークのような環境でも、正確な時間をホームネットワーク内のすべてのコンピュータに提供しつつ、公開サーバにかかる負荷の低下に寄与することができます。 おまけに、プライベートな更新はクライアントにとっても大幅に速くなります! ネットワーク内のコンピュータに時間を提供するには、公開インターネットサーバと同期するntpサーバをルータ上で実行するだけでよいです。 これを始めるためには、ルータ上で単にemerge ntpしましょう。

コード表示 6.3: NTPサーバの設定

# nano /etc/conf.d/ntp-client
ランレベルは自由に変更してもよいですが、defaultがよいでしょう
# rc-update add ntp-client default

# nano /etc/ntp.conf
次の行を追加してください
restrict default ignore
restrict 192.168.0.0 mask 255.255.255.0 notrust nomodify notrap
これで、あなたのntpサーバを利用できるのはIPアドレス192.168.0.xxx内のntpクライアントだけとなります
# nano /etc/conf.d/ntpd
ランレベルは自由に変更してもよいですが、defaultがよいでしょう
# rc-update add ntpd default

# /etc/init.d/ntp-client start
# /etc/init.d/ntpd start

注意: サーバを設定する際、ntpポート(123/UDP)の内向きと外向きの通信を許可しているかを確認するべきです。 クライアントは、UDP 123番ポートの外向きの接続を必要とします。

さて、クライアントになるホスト上でもemerge ntpします。 設定はとても簡単なので、ntpクライアントをすぐ実行できますよ。

コード表示 6.4: NTPクライアントの設定

# nano /etc/conf.d/ntp-client
NTPCLIENT_OPTS変数の値である'pool.ntp.org'サーバを'192.168.0.1'に変更してください
# rc-update add ntp-client default
# /etc/init.d/ntp-client start

Rsyncサーバ

同一LAN上で複数のGentooマシンを稼働させている人は、すべてのマシンでリモートマシンとemerge syncを行い続けたいと思うでしょう。 ローカルrsyncを設定することで、あなたの帯域とGentoo rsyncサーバの帯域両方を節約することが出来ます。 これはとても簡単です。

注意: より詳しいrsyncガイドは、公式のrsync guide(日本語訳)をご覧下さい。

それぞれのGentooマシンにrsyncが必要ですが、それをemergeする必要はありません。 デフォルトの/etc/rsyncd.conf設定ファイルを編集し、[gentoo-portage]の部分をコメント解除し、addressオプションを追加します。 そのほかはデフォルトのままでかまいません。

コード表示 6.5: Rsyncサーバの設定

pid file = /var/run/rsyncd.pid
use chroot = yes
read only = yes
address = 192.168.0.1

[gentoo-portage]
  path = /mnt/space/portage
  comment = Gentoo Linux Portage tree
  exclude = /distfiles /packages

その後、サービスを開始する必要があります(繰り返しますが、デフォルトでOKです)。

コード表示 6.6: rsyncサーバの開始

# /etc/init.d/rsyncd start
# rc-update add rsyncd default

残っていることは、クライアントがルータとsyncするよう設定するだけです。

コード表示 6.7: make.confでのクライアントのSYNC設定

SYNC="rsync://192.168.0.1/gentoo-portage"

メールサーバ

自分のシンプルメール転送プロトコル(SMTP)サーバをルータ上で動かすといいことがあるかもしれません。 あなたがそうしたい理由があるかもしれませんが、私は、メールが送られるとすぐユーザが見られるように実行しますし、再試行/ルーティングの仕事がメールサーバに残されています。 またISPには、そのISPのネットワークに属していないアカウントへのメール中継を許可していないところもあります(例:Verizon)。 また、大きな添付ファイルによって接続が30分間も遅れないように、簡単にメールの配信を止めることができます。

コード表示 6.8: SMTPの設定

# emerge qmail
`hostname` の出力が正しいか確認してください
# ebuild /var/db/pkg/*-*/qmail-1.03-r*/*.ebuild config
# iptables -I INPUT -p tcp --dport smtp -i ! ${LAN} -j REJECT
# ln -s /var/qmail/supervise/qmail-send /service/qmail-send
# ln -s /var/qmail/supervise/qmail-smtpd /service/qmail-smtpd

# cd /etc
# nano tcp.smtp
許可するエントリを追加してください
192.168.0.:allow,RELAYCLIENT=""

# tcprules tcp.smtp.cdb rules.tmp < tcp.smtp
# rc-update add svscan default
# /etc/init.d/svscan start

私はqmailの大ファンですが、あなたはお好きなMTAを使ってください:) あなたのネットワーク内のホストのe-mailを設定するときには、SMTPサーバは192.168.0.1で、すべてうまくいっていることを教えてあげてください。 詳しいドキュメントは、qmail homepageにあるでしょう。

完全なDHCPサーバ

このガイドの前の方では、すべてのクライアントにDHCPサービスを提供するためにdnsmasqを使用しました。 単純で小さなLANを使用している多くの人には、これで完璧です。 ですが、もしかするとより多くの機能が必要かもしれません。 ISCが提供する完全な機能を持ったDHCPサーバに切り替えます。

コード表示 6.9: dhcpdの設定

# emerge dhcp
# nano /etc/dhcp/dhcpd.conf
(これは設定ファイルの例です)
authoritative;
ddns-update-style interim;
subnet 192.168.0.0 netmask 255.255.255.0 {
    range 192.168.0.100 192.168.0.250;
    default-lease-time 259200;
    max-lease-time 518400;
    option subnet-mask 255.255.255.0;
    option broadcast-address 192.168.0.255;
    option routers 192.168.0.1;
    option domain-name-servers 192.168.0.1;
}
# nano /etc/conf.d/dhcpd
(IFACE="eth0"に設定)
# rc-update add dhcpd default
# /etc/init.d/dhcpd start

これは、以前使用していたdnsmasqのDHCP機能を置き換えるのに必要な最小の設定です。 dnsmasqのDHCP機能を忘れずに無効にしましたか? もししていないのであれば、今すべきです(/etc/dnsmasq.confdhcp-range設定をコメントアウトし、サービスを再起動するだけです)。

別のLANと接続

時々、別のLANにルータを接続する必要があります。 もしかすると、友人のグループと一時的に接続したいかもしれませんし、異常なほど几帳面なので異なるグループのコンピュータを区切りたいかもしれませんし、単にとてつもなく退屈しているのかもしれません。 理由が何であれ、ルータを他のLANネットワークに拡張することはとてもわかりやすいでしょう。 以下の例では、この新しいネットワークはeth2という3番目のイーサネットカードに接続されていると仮定します。

まず、インタフェースを設定する必要があります。 4.1 code listingの指示に従い、eth0eth2へ、192.168.0192.168.1へ置き換えるだけです。

その後、新しいインタフェースにサービスを提供するためにdnsmasqを調整する必要があります。 /etc/conf.d/dnsmasqを再び編集し、DNSMASQ_OPTSに-i eth2を追加するだけです。 -iを複数回使用しても問題ありません。 その後、/etc/dnsmasq.confを編集し、5.1 code listingにdhcp-rangeといった別の行を追加します。192.168.0192.168.1に置き換えてください。 複数のdhcp-rangeがあっても問題ありません。

最後に、5.2 code listingのルールで、-i ${LAN}がある物をコピーします。 わかりやすくするために、LAN2のような別の変数を作成したいかもしれません。

7.  トラブルシューティング

有用なツール

通信に関してトラブルに見舞われた場合、次のようなツールを試してみる方法があります(これらのツールはPortageのnet-analyzerカテゴリにあります)。

ユーティリティ 説明
ethereal フィルタによりすべてのrawネットワークデータを観測するGUIツール
tcpdump フィルタによりすべてのrawネットワークデータをダンプするコンソールツール
iptraf ncursesベースのIP LANモニタ
ettercap ncursesベースのネットワークモニタ/コントロール

DHCPが起動に失敗する

dhcp init.dスクリプトの初回起動時に、ロードに失敗するが有益な情報を全く提供しないことがあるかもしれません。

コード表示 7.1: DHCPの失敗例

# /etc/init.d/dhcp start
* Setting ownership on dhcp.leases ...          [ ok ]
* Starting dhcpd ...                            [ !! ]

これは、dhcpdがどこへ出力を送信しているかを知ることです。 単に、/var/logにあるログファイルを読んでください。 存在するログファイルはsyslogとして使用しているパッケージによるので、限定するためにgrep -Rl dhcpd /var/logを試してください。 おそらく、設定ファイルでタイプミスをしたのでしょう。 dhcpd -d -f(debug / foregroundのこと)を実行し、出力されたエラーをデバッグすることも出来ます。

不正なMTU値

妙なエラー(例:うまく読み込めないWebページがある。ただし、他のページはすんなり読み込める)に出会ったら、パスMTU探索(Path MTU Discovery)問題が起こっているかもしれません。 これをすぐに確かめるには、次のiptablesコマンドを実行します。

コード表示 7.2: MTU問題を回避する

# iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

これは、すべての新しい接続に影響があるでしょう。 ですから、テストするために問題のWebサイトを更新してください。 念のため、100mbitイーサネット接続の標準MTU値は1500であるのに対し、PPPoE接続の場合は1492です。 詳しい情報は、Linux Advanced Routing & Traffic Control HOWTOの15章を読んでください。

2台のマシンを直接接続できない

(どんな理由であれ)2台のマシンをハブ、 もしくはスイッチなしで直接接続したいのであれば、 Auto MDI/MDI-X(別名、オートセンス)機能のあるネットワークアダプタでない限り、 通常のイーサネットケーブルではおそらく動作しないでしょう。これには、 クロスケーブルという異なるケーブルが必要になります。このWikipediaページが、 低レイヤーの観点から詳細に関して説明しています。

8.  あとがき

あなたがこのガイドに関してトラブルに見舞われた場合、私に連絡するか、Gentoo's Bugtracking Websiteにバグを報告してください。あとがきはこれだけです。 このガイドに加えたい面白い具体例がありましたら、是非とも連絡よろしくお願いします。



印刷

ページの更新日 2006年 8月 21日

この翻訳はすでにメンテナンスされていません。

要約: このガイドでは、ホームネットワークをインターネットに繋ぐために、古いGentooマシンをルータに変える方法を紹介します。

Mike Frysinger
Author

池田 健吾
翻訳

小林弘樹
翻訳

Taku Murakami
翻訳

Donate to support our development efforts.

Copyright 2001-2014 Gentoo Foundation, Inc. Questions, Comments? Contact us.