いますぐ実践! Linuxシステム管理

いますぐ実践! Linux システム管理 / Vol.226 / 読者数:2186名

こんばんは、うすだです。

わたしは、各所で Firefox を使っておりまして、 普段使っている Ubuntu なマシンでも、Firefox であれこれしています。

Firefox Sync でどこでも同じように使えるのは便利ですよね。
ただ、普段使いのマシンでは、Firefox を使っていると徐々に重たくなるという現象に、 ここ数年(くらい?)悩まされていました。

Unity がもともと重たいのか、Firefoxがメモリをばか食いするのか、 総合的にメモリを必要とする(あるいは少ない)のか、原因がわからないまま、 適度にログアウトしたりしてしのいでいました。
(最終的には Xサーバの再起動でなんとかなりますので…。)

ですが、つい数日前、Firefox のあまりの遅さに嫌気がさして、 突発的に Google Chromium へと乗り換えてみました。

すると…あーらびっくり、今のところ快適に動作しております。
Firefox、おまえやったんかー! …という心境です。

Image Zoom など多用している拡張機能もありますし、設定の同期もとれるようですので、 徐々に移行していこうと思っています。

とか言いながらも、Firefoxの巻き返しを密かに期待しているのですが、 それはさておき、今回もはりきってまいりましょう。

今回のお題 - dnsmasq でDHCPとTFTPのサービスを提供する

前回、dnsmasq について、DNSキャッシュサーバの動作をメインに、 さらっとご紹介しました。

Vol.225 - dnsmasq でDNSのキャッシュサービスを気軽に動かす
http://www.usupi.org/sysad/225.html

夏休みやお盆休みであったことを加味しても、この2週間、 読者数がびた一文増えなかったということを考慮しますと、 さっさと次のネタにすべきだというお告げをいただいたように感じました。

…が、設定ファイルすら触らないまま終わってしまうには、 dnsmasq さんがあまりにも不憫です。
(己れの文章力のなさや紹介のまずさは、棚にあげまくっております。)

というわけで、dnsmasq の続編を強行させていただきます。
個人やこじんまりしたところで使う分には遜色のないモノだと思います。
騙されたと思って、さらりと目を通していただけますと幸いです。

DHCPサーバとして使う

何も設定しなくても 67/udp ポートを listen していますが、 リースするIPアドレスを設定しないと、DHCPサーバとして動作はしてくれません。

最低限的には、以下の1行を設定ファイル「/etc/dnsmasq.conf」に書けば、 DHCPサーバになります。

  dhcp-range=先頭IPアドレス,末尾IPアドレス

たとえば、「192.168.1.192〜192.168.1.207」を割り振りたい場合、 以下のように記述します。

  dhcp-range=192.168.1.192,192.168.1.207

リースする期間の指定もできます。, で追記して指定します。
たとえば下記の場合、「30分」を指定しています。ちなみに、 「m」は分で「h」は時間です。何もつけないと秒とみなされます。
(さらにちなみに、デフォルト(未指定の場合)は、1時間です。)

  dhcp-range=192.168.1.192,192.168.1.207,30m

複数のインターフェースがあり、インターフェースごとに分けたり、 特定のインターフェースだけ提供する場合は、 インターフェースを先頭で指定しましょう。
(複数指定する場合は、「:」で区切ります。)

  dhcp-range=eth0,192.168.1.192,192.168.1.207,30m

 

特定のマシンに特定のIPアドレスを割り振ることも可能です。
「dhcp-host」で、MACアドレスとIPアドレスを列挙します。

  dhcp-host=MACアドレス,IPアドレス

たとえば、MACアドレスが「01:23:45:67:89:ab」、 割り振りたいアドレスが「192.168.1.123」の場合、以下のように記述します。

  dhcp-host=01:23:45:67:89:ab,192.168.1.123

dhcp-range と同様、リース期間を指定できます。

  dhcp-host=01:23:45:67:89:ab,192.168.1.123,6h

ホスト名も指定できます。MACアドレスとIPアドレスの間に記述します。

  dhcp-host=01:23:45:67:89:ab,client123,192.168.1.123

 

各種オプションも指定できます。
「dhcp-option」で、オプションの番号とその値を列挙します。

  dhcp-option=番号,値

番号は、以下に記載されています。

DHCP and BOOTP parameters
http://www.iana.org/assignments/bootp-dhcp-parameters/bootp-dhcp-parameters.xml

たとえば、デフォルトゲートウェイに「192.168.1.254」を、 NTPサーバに「192.168.1.1」および「192.168.1.2」を指定したい場合、 以下のように記述します。

  dhcp-option=3,192.168.1.254
  dhcp-option=42,192.168.1.1,192.168.1.2

番号だとわかりにくいため、文字で指定することも可能です。
番号の代わりに、「option:」と名前を指定します。

  dhcp-option=option:router,192.168.1.254
  dhcp-option=option:ntp-server,192.168.1.1,192.168.1.2

 

設定ファイルを書き換えたら、dnsmasq を再起動しましょう。

  # service dnsmasq restart

前回書き忘れましたが、systemd な環境の貴兄は、 以下のように再起動をしてください。(起動していなければ restart を start に…。)

  # systemctl restart dnsmasq.service

きちんと動作しているかどうかは、syslog を見ればわかります。

  # grep dnsmasq /var/log/syslog    (Debian系の場合)
  # grep dnsmasq /var/log/messages  (RedHat系の場合)

 

お気づきだと思いますが、個々のマシンやサブネットに対してオプションを変える、 という器用な設定はできないようです。
そういうニーズをお持ちであれば、dnsmasq ではなく、ISCのDHCPサーバを、 迷わずおすすめいたします。

TFTPサーバとして使う

TFTP(Trivial File Transfer Protocol)とは、その名の通り、 非常に単純なファイル転送のプロトコルです。

UDPを使用した単純なプロトコルで、認証を必要としないため、組み込みな機器で、 ファームウェアや設定ファイルをダウンロードする際に、 依然として使われていたりします。

というわけで、そんなレアなニーズが発生したときは、 dnsmasq を使って迅速に対処しましょう。最低限必要な設定は、以下です。

  enable-tftp
  tftp-root=/tftpboot

まず、「enable-tftp」で、TFTPサーバの機能を有効にします。
そして、「tftp-root」で、使用するディレクトリを指定します。
ここで指定したディレクトリ(上記の場合「/tftpboot」)にあるファイルは、 TFTP経由でだれでも参照可能となります(場合によっては書き込めます)ので、 注意してください。

dnsmasq を再起動したら、tftpコマンドで持ってこれるか、確認してみてください。 うまくいけば、カレントディレクトリに取得したいファイルができているはずです。

  $ tftp ホスト名
  tftp> binary
  tftp> get ファイル名
  Received xxx bytes in xx seconds
  tftp> quit

ホスト名が localhost なら、cmp コマンドで確認できます。

  $ cmp ファイル名 /tftpboot/ファイル名

 

「tftp-secure」を指定すると、 dnsmasqと同じユーザの所有物のファイルしかアクセスできなくなります。

  tftp-secure

上記を指定したら、参照したいファイルの所有者を、dnsmasq のユーザにしましょう。

  # chown dnsmasq /tftpboot/ファイル

どのユーザで動作しているかは、ps コマンドで確認できます。

  $ ps -ef | grep dnsmasq
  dnsmasq   7085     1  0 05:18 ?     00:00:00 /usr/sbin/dnsmasq \
  ...後略...

上記の場合、先頭の「dnsmasq」ユーザの権限で動作していますが、 環境によっては「nobody」だったりもするようです。

おわりに

以上、dnsmasq でDHCPサーバやTFTPサーバにする手順をご紹介しました。

うまく動いてくれないときは、 オンラインマニュアル(man dnsmasq)やsyslog のメッセージを確認すると、 なにがいけないかだいたいわかると思います。

他にも、「interface」などたくさんのオプションがあります。気になる貴兄は、 オンラインマニュアルや設定ファイルのコメントを見るなどして、 試行錯誤していただけますと幸いです。

宿題の答え

前回の宿題は、

  resolv.conf に複数の nameserver を指定した場合、順番に問合せるの
  か、並行して問い合わせるのか、確認してみましょう。

でした。

結論から申し上げますと、並列ではなく、書いてある順に問合せます。
…といいますか、オンラインマニュアル(man resolv.conf)に書いてありました。

とはいえ、いちおう確認しましたので、手順をさらっとお知らせします。
まず、/etc/resolv.conf を、以下のように改竄します。

  nameserver 192.168.1.171   <= 存在しない
  nameserver 192.168.1.35    <= DNSサーバじゃない
  nameserver 192.168.1.53    <= DNSサーバ

次に、どこかの端末で、tcpdumpを実行しておきます。

  # tcpdump host 192.168.1.171 or host 192.168.1.35 or \
    host 192.168.1.53

そして、いままで解決したことのないホスト名の解決を試みます。

  $ host www.usupi.org

すると、以下のような動作をしました。

  1. 192.168.1.171 のARPリクエストを送信。2回送るが返事がない。
  2. 192.168.1.35 に www.usupi.org のAレコードを問合せる。
    すると、192.168.1.35 から ICMP udp port unreachable が返る。(つまりエラー)
  3. 192.168.1.53 に www.usupi.org のAレコードを問合せる。
    すると、192.168.1.53 から答えが返る。

3つのサーバに対して同時にリクエストを出すことはなく、 ひとつひとつ結果がわかってから(あるいはタイムアウトして諦めてから)次を試す、 ということをやっていました。

ちなみに、他のパターンでも試しましたが、おおむね同様の結果が得られました。
また、4つ以上のサーバを指定しても、 最初の3つまでしか問合せることをしませんでした。man にも書いてありますが、 MAXNS個までしか対応していないようです。 (/usr/include/resolv.h で定義されています。)

念のため、Ubuntu のソースを超大雑把に見てみましたが、 そんなような処理になっていました。
(apt-get source libc6 で取ってきて、 eglibc-2.15/resolv/ の下にあるソースを眺めました。 主に res_send.c や res_query.c あたりです。)

今回の宿題

今回の宿題は、

  dhcp-optionに指定できる名前を調べましょう。

です。

本題では、名前でも指定できるよと、さらりと書きました。
ですが、指定できる名前が具体的に何なのか、わからないですよね。
正攻法と、そうでない方法がありそうですので、ぜひ調べてください。

あとがき

8月から、新たな職場で、いまのところ快適に働いております。
…といっても、まだ役に立つようなことはしていないのですが。

ただ、すぱっと円満退社できなかった、ということが尾を引いているようでして、 いまでも、転職に関するページに遭遇すると、 つい読んではアレコレ思ってしまう(==自己を正当化する)日々を過ごしております。

というわけで、気になったページをご紹介して、 もうすぱっと忘却の彼方へ気持ちを追いやってしまおうと思います。
最後まで続きますので、興味のある方だけご覧いただければと思います。

 

101回死んだエンジニア : ファイナル・オピニオン
http://el.jibun.atmarkit.co.jp/101sini/2012/08/post-fbc9.html

辞めていくひとの意見(本音)を聞こう、というご意見です。
理由をうまく説明できなかった自分を棚にあげて、思わすそーだそーだ! と思ってしまいました。
辞めようと思っているか、あるいはすでに辞めた方で、スッキリしたいという場合に、 ぜひお読みください。

 

退職理由のホンネランキングベスト10 / リクナビNEXT
http://rikunabi-next.yahoo.co.jp/01/honne2007/honne2007_01.html

本音…といえば、こんな、定番的なページがありました。
みんな建前と本音が違うんだー、ということにホッとします。

 

「この仕事は合ってません!」と1カ月で辞める新人の“事情”: 日経ビジネスオンライン
http://business.nikkeibp.co.jp/article/manage/20120508/231807/

こちらは、耳が痛い系のご指摘です。
ただ、40過ぎてますので、自分に合う合わないは大体わかりますし、 自分探しももうしなくてよいかなとは思っております。
登録が必要(無料)ですが、いまを迷っている貴兄はぜひお読みください。

 

やめさせてくれない 〜急増する退職トラブル〜 NHKクローズアップ現代
http://www.nhk.or.jp/gendai/kiroku/detail02_3191_all.html

これを見ると、退職が認められ離職票も送ってもらえた私は幸せなんだなと思いました。 (普通のことなのかもしれませんが。)
もし万が一該当する場合は、即効で相談しにいくべし、ですね。

 

会社を辞めたい時などの心構え : ITスペシャリストが語る芸術
http://www.kaynotes.com/archives/5392579.html

最後に、ちょっと違うけど、ぐぐっと来たページをご紹介しておきます。

 

さあこれで…すぱっと忘れるのは難しいですね…。
無理に忘れようと思わず、いまの仕事に全力投球することに集中します。

 

今回も、ここまで読んでいただき、たいへんありがとうございました。
次回は、9月2日(日) の未明にお会いしましょう!

 

「いますぐ実践! Linux システム管理」の解除は、以下からできます。
http://www.usupi.org/sysad/ (まぐまぐ ID:149633)

バックナンバーは、こちらにほぼ全部そろっています。
http://www.usupi.org/sysad/backno.html

「栗日記」- 余裕があるからか、わりとよい気がしております。
http://www.usupi.org/kuri/ (まぐまぐ ID:126454)
http://usupi.seesaa.net/ (栗日記ブログ)
http://usupi.org/k/ (モバイル栗日記)
http://twitter.com/kuriking/ (栗つぶや き)
http://facebook.com/kuriking3 (栗顔本)


[バックナンバーのトップへ] [Linux システム管理のトップへ]

トップ

バックナンバー
    [日付順] [目的別]

プロフィール

▼ リンク

独学Linux
Linuxデスクトップ環境に関する情報が満載です。 メルマガもありますよ。
Server World
CentOS 6をサーバとしたときの設定例が、これでもかというくらいたくさん載っています。 CentOS以外のディストリビューション(Fedora, Ubuntu)も充実しています。
LINUXで自宅サーバーを構築・導入(Fedora9)
Fedora9のインストールの仕方から管理方法まで、詳しく載っています。 SearchManには情報がもりだくさんです。
マロンくん.NET
〜サーバ管理者への道〜
Linuxをサーバとして使用するための、いろいろな設定方法が載っています。 マロンくんもかわいいです。 なんといっても、マロンくんという名前がいいですね!!
日経Linux
今や数少なくなってしまったLinuxの雑誌。ニュースやガイドもあります。
Linux Square − @IT
@ITが提供する、Linux の情報が満載。 載っていない設定方法はないんじゃないでしょうか。
gihyo.jp…技術評論社
Linuxに限らず様々な技術情報が満載のサイト。 SoftwareDesign誌も、 ソフトウェア技術者は必見です。
SourceForge.JP Magazine
Linux に限らず、オープンソース関連の記事が網羅されています。
ITmediaエンタープライズ:Linux Tips 一覧
Tips というより FAQ 集でしょうか。わからないことがあれば覗きましょう。
IBM developerWorks : Linux
開発者向けですが、勉強になりますよ。
Yahoo!ニュース - Linux
Yahoo!のLinuxに関するニュース一覧です。
栗日記
システム管理とかと全然関係ありませんが、毎日栗の絵を描いています。
システム管理につかれちゃったとき、癒されたいときに、ご覧ください。:-)
WEB RANKING - PC関連
ランキングに参加してみました。押してやってください。

▼ 作ってみました

Add to Google

▼ せんでん




▼ 最近読んだ本

▼ 気に入ってる本