CentOS 6.0のVPSサーバ構築/(2) DNSサーバの設定とDropboxの設定

GMOクラウド VPSCentOS 6.0」にサーバー環境を構築している。前回、デスクトップをインストールし、VNCサーバをインストールして、Windows側からリモートで接続できるようになった。だが、名前解決がうまくいかず、FireFoxyumさえも満足に動作していなかった。過去の記事も参照のこと。
  (1) VNCサーバの設定
  (2) DNSサーバの設定とDropboxの設定
  (3) メールサーバの設定
  (4) WEBサーバの設定

IMEの切り替えができるようになった

IMEの設定がおかしく、日本語が表示はできても入力ができない状況だった。これは、以下の手順で解決した。
yum groupinstall "入力メソッド" ですべてをインストールする。
・システム-->設定-->入力メソッド-->IBusを使用する-->入力メソッドの個人設定-->インプットメソッドで「日本語Anthy」を選択しておく。
・メニューバーにあるIMEの切替アイコン(IBusインプットメソッドフレームワークのアイコン)から「日本語Anthy」を選択したり、オフしたりできる。
Anthyもはじめて使うが、日本語/英語の入力の切り替えはCTRL+J、CTRL+,、CTRL+>、CTRL+<などで行う。ちょっと馴染めないキーバインドではあるが、なんとか使える。ただ、アイコンに"A"とか"あ"とか表示してくれないので、現在どのモードかが打ち込まないと分からない。明示的にAnthyをON/OFFした方がいいのかもしれない。

ネットワークを設定した

外部に対して、IPアドレスを指定すれば接続できるが、ドメイン名で指定すると名前解決できない状況だった。pingでも、ブラウザ(FireFox)でのURL指定でも、yumミラーサイト指定でも状況は同じだ。wgetコマンドでのファイルのダウンロードもできない。FireFoxでは「サーバが見つかりません」となるだけだ。サーバーから外部に対して名前解決ができていないのだ。


> ping www.google.com // ×つながらない
> ping 210.166.240.5 // ○IPアドレスを指定すればつながる
今後のためにちょっと設定情報をメモしておく。GMOクラウドVPSの環境は、以下の情報としておく。

IPADDR =xxx.107.111.222
GATEWAY=xxx.107.111.254
DNS1 =xxx.108.100.100
DNS2 =xxx.108.200.200
DOMAIN=hogehoge.co.jp
HOSTNAME=hogehoge // ドメイン名がホスト名になっている。
名前解決できていない原因の1つは、CentOS 6.0では「/etc/resolv.conf」の記述した内容があるタイミングで上書きされてしまうということが分かった。デフォルトで以下のようになっていた。

# Generated by NetworkManager
search foo.com
# No nameservers found; try putting DNS servers into your
# ifcfg files in /etc/sysconfig/network-scripts like so:
#
# DNS1=xxx.xxx.xxx.xxx
# DNS2=xxx.xxx.xxx.xxx
# DOMAIN=lab.foo.com bar.foo.com
よく読むと、NetworkManagerが上書きするので、/etc/sysconfig/network-scriptsに登録しておけということのようだ。「/etc/sysconfig/network-scripts/ifcfg-eth0」(※私の環境ではeth0だ。ifconfigで確認すること)を以下のように編集した。このファイルは、GMOでサーバー設定時に編集されたもののようだ。自動生成されたものかもしれない。PEERDNS=noにするだけでよいとのネット情報もあったが、それだけではダメだ。DNS1,DNS2を記述してやる必要がある。

DEVICE=eth0
BOOTPROTO=static
BROADCAST=xxx.107.111.255
IPADDR=xxx.107.111.222
NETMASK=255.255.255.0
NETWORK=xxx.107.111.0
ONBOOT=yes

# これより上は、GMOでのデフォルト設定。これより下を追記する。
GATEWAY=xxx.107.111.254 // この行は不要かも。/etc/sysconfig/networkで記述済みのため
IPV6INIT=no
PEERDNS=no
DNS1=xxx.108.100.100 // GMO提供のマスタネームサーバ
DNS2=xxx.108.200.200 // GMO提供のスレーブネームサーバ
DNS3=127.0.0.1 // 自身も3番目に入れておく
DOMAIN=hogehoge.co.jp

DNS1,DNS2,DNS3までが有効なようだ。DNS4,DNS5,...と書いても有効かどうかかは分からない。エラーにはならない。ちなみに以前はプライマリネームサーバ、セカンダリネームサーバと呼んでいたが、今はマスタネームサーバ、スレーブネームサーバと呼ぶようになったそうだ。このように書いて、networkを再起動すると、「/etc/resolv.conf」が以下のように書き換わる。「No nameservers found」のコメントもなくなっている。

# Generated by NetworkManager
search hogehoge.co.jp
nameserver xxx.108.100.100
nameserver xxx.108.200.200
nameserver 127.0.0.1
ネットワーク設定の大まかな手順を挙げておく。

> vi /etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=server.hogehoge.co.jp // ホスト名を変更
GATEWAY=xxx.107.111.254
> vi /etc/sysconfig/network-scripts/ifcfg-eth0
# 前述の内容で記述
> vi /etc/host.conf
multi on
order hosts,bind
> vi /etc/hosts
127.0.0.1 localhost.localdomain localhost
::1 localhost6

> service network restart
> vi /etc/resolv.conf
  # 前述の内容を確認。見るだけで編集は不要。ifcfg-eth0の内容で書き換わる。
> hostname
server.hogehoge.co.jp // ホスト名がserver.hogehogeに切り替わっていることを確認

ホスト名が変更され、名前解決では、hostsファイルとbind、つまりDNSサーバへ問い合わせるようにしておく。/etc/resolv.confもデフォルトのものが、ifcfg-eth0の内容で書き換わっていることを確認しておく。

DNSサーバを設定した

では、次にDNSサーバの設定だ。named設定の大まかな手順をまず簡単に挙げておく。named/chrootの作成部分の細かい手順は割愛しているので、市販本やネット情報を参照のこと。


> yum install bind bind-chroot bind-utils
# /var/named、/var/named/chroot/etc、/var/named/chroot/var/namedに必要なものをコピー
# 細かい手順は割愛

> vi /etc/sysconfig/named
 ROOTDIR=/var/named/chroot
> vi /var/named/chroot/etc/named.conf
> vi /var/named/chroot/etc/named.hogehoge.co.jp.zones
> vi /var/named/chroot/var/named/hogehoge.co.jp.db // 正引き用
> vi /var/named/chroot/var/named/111.107.xxx.in-addr.arpa.db // 逆引き用
# rndc.keyファイルを作成しておく。
> rndc-confgen -a -r /dev/urandom -t /var/named/chroot
# グループをnamedに変更しておかないと、namedの起動で失敗する。
  > chgrp named /var/named/chroot/etc/named.*
  > chgrp -R named /var/named/chroot/var/named

# 以下は、named.confとzoneファイルのシンタックスチェック
> named-checkconf -t /var/named/chroot
> named-checkzone -t /var/named/chroot hogehoge.co.jp /var/named/hogehoge.co.jp.db
> named-checkzone -t /var/named/chroot hogehoge.co.jp /var/named/111.107.xxx.in-addr.arpa.db

# 以下は、サービスを起動して、チェック
> service named restart
> ping www.hogehoge.co.jp
> dig www.hogehoge.co.jp
> dig -x xxx.107.111.222
> ping www.google.com
> dig www.google.com
> dig -x 210.166.240.5
> nslookup www.google.com

まず、「named.conf」はデフォルトのものにincludeを1行追加するのみ。以下に提示の手順や記述が正しいかどうかは確信ないが、とりあえず動作するという情報だ。

# 最後に1行を追加するのみ
include "/etc/named.hogehoge.co.jp.zones";
その「named.hogehoge.co.jp.zones」は、以下のように記述した。

zone "hogehoge.co.jp" {
type master;
file "hogehoge.co.jp.db"
};
zone "111.107.xxx.in-addr.arpa" {
type master;
file "111.107.xxx.in-addr.arpa.db"
};
正引き用「hogehoge.co.jp.db」は、以下のように記述した。

$TTL 86400
@ IN SOA hogehoge.co.jp. root.hogehoge.co.jp. ( ... );
IN NS server.hogehoge.co.jp.
IN MX 10 mail.hogehoge.co.jp.
server IN A xxx.107.111.222
www IN CNAME server
mail IN CNAME server
逆引き用「111.107.xxx.in-addr.arpa.db」は、以下のように記述した。

$TTL 86400
@ IN SOA hogehoge.co.jp. root.hogehoge.co.jp. ( ... );
IN NS server.hogehoge.co.jp.
IN PTR hogehoge.co.jp.
IN A 255.255.255.0
222 IN PTR server.hogehoge.co.jp.
以上の設定で、ping www.google.com が通るようになった。ただ、これでもまだFireFoxからURLのドメイン名を識別してくれなかった。

FireFoxの設定が必要だった

DNS プリフェッチ機能の問題があるらしい。「Firefox は新しい Web サイトの読み込みを早くするため、DNS プリフェッチ機能を利用しますが、これが一部のシステム設定によって、ページの読み込みエラーが起こる原因になることがあります。DNS プリフェッチを無効化してください。」とあった。その手順に沿って設定した。
・ロケーションバーに "about:config"と入力してenterする。
・右クリック-->新規作成-->真偽値で、以下の2つの属性を追加する。
・network.dns.disablePrefetch=true
・network.dns.disableIPv6=true

つまり、IPv6を無効化する必要があった。/etc/sysconfig/networkに「NETWORKING_IPV6=no」が追記されていること、/etc/sysconfig/network-scripts/ifcfg-eth0に「IPV6INIT=no」が追記されていることも必要だ。そしてさらに、ネット情報から、「/etc/modprobe.d/disable-ipv6.conf」を作成して、以下のように記述する必要があるそうだ。


options ipv6 disable=1

以上だ。これでやっと、pingだけでなく、ブラウザ(FireFox)でのURL指定も、yumミラーサイト指定も、wgetrpmコマンドでのURL指定も認識してくれるようになった。yumの設定を戻して、updateしておこう。


> vi /etc/yum.repos.d/CentOS-Base.repo
# ミラーサイトを有効にし、暫定でIPアドレスを埋め込んだ部分をもとにもどしておく。
> yum update

DropBoxを設定した

yumrpmが利用可能になったので、DropBoxのインストールを行った。


> rpm --import http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt
# 事前にhttp://apt.sw.be/redhatから辿って、ダウンロードすべきものを特定しておくこと。
# CentOS 6.0 x86_64なら以下でいい。
> rpm -ivh http://apt.sw.be/redhat/el6/en/x86_64/rpmforge/RPMS/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm
> yum install dropbox --enablerepo=rpmforge
> vi /etc/sysconfig/dropbox
DROPBOXUSER=user // ユーザーを指定。デフォルトではコメントアウトされている
> yum update dropbox
> dropbox start -i // 初回はウィザードでの設定。次回からは起動になる。
これでやっと、作業が進みそうだ。

[2012/10/10追記]
VPSサーバでDropBoxを使うと「近所迷惑」になるということが判明した。指摘されてわかった。たしかにネット情報に結構ある。デスクトップを利用していれば、DropBoxの設定画面から「LAN接続を同期」のオプションがデフォルトでONとなっているので、これをOFFしておく必要がある。これがONだとLANSyncという機能が働き、起動直後に10秒間隔で、安定すると30秒間隔でブロードキャストに向かって17500ポートからパケットを送出し続けるらしい。ON/OFFの状態で、以下を確認すると状況がよく分かる。


> tcpdump -i any -s 1600 port 17500