CentOS:内向き開発サーバ 1)DNSサーバを構築し、ドメイン名でサーバにアクセスする。
CentOSで内向きの(外部に公開しない)開発サーバを構築した際に躓いたポイントをメモ。
まずはDNSサーバを構築して、ドメイン名でサーバを参照できるようになるまで。
ゴール
- IPアドレスではなく、ドメイン名で開発サーバにアクセスできるようにする。
手順
DNSサーバのインストール・設定については次を参考に進めた。
http://www.tooyama.org/bind-lan.html
- 設定ファイルをコピー
- BINDの設定ファイルを編集して、内部IP等の設定。
- ヒントファイル作成
- ゾーンファイル作成
- ルートゾーンの更新
- 正引きの設定
- 逆引きの設定
[root@turmeric ~]# cp /var/named/chroot/etc/named.caching-nameserver.conf /var/named/chroot/etc/named.conf [root@turmeric ~]# vi /var/named/chroot/etc/named.conf [root@turmeric ~]# vi /var/named/chroot/etc/named.root.hints [root@turmeric ~]# vi /var/named/chroot/etc/named.turmeric.gf.zone [root@turmeric ~]# dig @a.root-servers.net . ns > /var/named/chroot/var/named/named.ca [root@turmeric ~]# vi /var/named/chroot/var/named/turmeric.gf.db [root@turmeric ~]# vi /var/named/chroot/var/named/11.168.192.in-addr.arpa.db
そしてBINDを起動… と思ったら[失敗](;´Д`)
[root@turmeric ~]# /etc/rc.d/init.d/named start named を起動中: [失敗]
ログを確認
[root@turmeric ~]# less /var/log/messages
なんだかパーミッションのエラーが出ていることが分かり、参考ページ上部に「権限を修正」という項目があったのを思い出して設定。
[root@turmeric ~]# chown root:named /var/named/chroot/etc/named.conf
今度こそと願ってBINDを起動… 今度は成功!
[root@turmeric ~]# /etc/rc.d/init.d/named start named を起動中: [ OK ]
自動起動を設定してひと段落。
[root@turmeric ~]# chkconfig named on
POINT1)ルーターのDHCPサーバ機能にDNSサーバの通知IPを設定する。
ここまではある程度想定通りに進行したが、いろんな参考ページで書かれている次の作業の詳細が分からず行き詰まった。
この後の作業
http://www.tooyama.org/bind-lan.html
DNSサーバーは構築できましたが、このDNSサーバーで名前解決するためにクライアント側でDNSの設定を変更する必要があります。
DHCPサーバーによりIPを取得している場合は、DHCPサーバー側のDNS設定を変更してください。
■問合せ先DNSサーバーをLinuxサーバーに変更
http://centossrv.com/bind-lan.shtml
(1)問合せ先DNSサーバーをLinuxサーバーに変更
ルーターのDHCP設定でDNSサーバーのIPアドレスをLinuxサーバーのIPアドレスに変更する
次の参考サイトに詳しい情報があったのでこれを参考にルーターの設定を変更。
http://www.miloweb.net/bind.html#12
BUFFALOルータの場合は、
[Internet/LAN]>[LAN]画面で[拡張設定を表示する]にチェック。出てきた画面で次の設定を行った。
これで行けるかな?と思って、CentOSから[dig]、クライアントマシンから[nslookup]してみる。
CentOSの[dig]では問題がない。つまり、BINDの設定自体はOKのようだ。
[root@turmeric ~]# dig turmeric.gf {中略} ;; ANSWER SECTION: turmeric.gf. 86400 IN A 192.168.11.18
[root@turmeric ~]# dig -x 192.168.11.18 {中略} ;; ANSWER SECTION: 18.11.168.192.in-addr.arpa. 86400 IN PTR turmeric.gf.
しかし、クライアントから[nslookup]したら、DNSサーバを見に行けていない。
C:\Users\867>nslookup Default Server: UnKnown Address: 192.168.11.18 DNS request timed out. timeout was 2 seconds.
やはり、クライアントマシンからブラウザでドメインをたたいても表示されない。
POINT2)CentOSとルーター、両方でポートを許可。
原因と思われたのが次に紹介されている作業。
■BIND起動
http://centossrv.com/bind.shtml
(2)UDPの53番ポートとTCPの53番ポートをオープンする
ルーターの設定で、UDPの53番ポートとTCPの53番ポートへのアクセスをサーバーに転送するようにする
(12)ファイアウォールでtcp:53とudp:53ポートを開けます。
http://www.tooyama.org/bind-lan.html
ルーターでポートを開く
まずはルーターの設定で「UDPの53番ポートとTCPの53番ポートを開く」。
BUFFALOでは、これを「ポートの交換」と称し、かなり分かりにくいところに設定があったので手こずった。
BUFFALOルータの場合は、
[ゲーム&アプリ]>[ポート交換]
これだけかと思ったが、CentOSの方にも「ファイアウォールでtcp:53とudp:53ポートを開く」という作業が必要だった。つまり、双方で許可する必要があるということ。これは、本を読み返して発見。
CentOSのファイアウォール設定を変更
CentOSにSSHでログインし、[iptables]の設定。
[root@turmeric ~]# iptables -I RH-Firewall-1-INPUT -p udp -m udp --dport domain -j ACCEPT [root@turmeric ~]# iptables -I RH-Firewall-1-INPUT -p tcp -m tcp --dport domain -j ACCEPT [root@turmeric ~]# /etc/rc.d/init.d/iptables save ファイアウォールのルールを /etc/sysconfig/iptables に保存中[ OK ]
設定内容を確認し、追加を無事確認。
[root@turmeric ~]# iptables -L {中略} Chain RH-Firewall-1-INPUT (2 references) target prot opt source destination ACCEPT tcp -- anywhere anywhere tcp dpt:domain ←コレと ACCEPT udp -- anywhere anywhere udp dpt:domain ←コレ {後略}
これでいけるか?と思ったが、本を読み返すとWebサーバの導入部分でもファイアウォールの設定が必要な記述を発見。そもそもこれが設定されてないぞ。ということで設定。
[root@turmeric ~]# iptables -I RH-Firewall-1-INPUT -p tcp -m tcp --dport http -j ACCEPT [root@turmeric ~]# /etc/rc.d/init.d/iptables save ファイアウォールのルールを /etc/sysconfig/iptables に保存中[ OK ]
最後にhttpdを再起動
[root@turmeric ~]# /etc/rc.d/init.d/httpd restart
これでゴール到達!無事ドメイン名でWebサーバにアクセスできるようになりました(σ・∀・)σゲッツ!!!
ちなみに、社内サーバの名前は「香辛料」シリーズ。
今回のWebサーバは「turmeric(ターメリック)」かわいいでしょ?
さて次は、バーチャルホストの設定です。