Raspberry Pi にDNS・DHCP・プロキシサーバを構築する 前編

前回はRaspberry PiにCentOS7をインストールし、ネットワークへの接続まで行った。次はようやく本来の目的である、プロキシサーバの構築を行う。

なお、これまで便宜上「プロキシサーバ」と書いてきたが、実はLAN内で勝手に作っているドメインの名前解決を行うためのDNSコンテンツサーバと、DNSキャッシュサーバ、クライアントPCへのIPアドレス割り当てのためのDHCPサーバも兼ねている。今回これらを全て構築する。

以降の文章の中でも引き続き「プロキシサーバ」と呼称しているのでご了承願いたい。

ネットワークの全体像

以前他の記事でも書いているが、自宅ではインターネットにつながっているホームゲートウェイ(HGW)側と、PC等につながっている内部側でLANを分けており、プロキシサーバは二つのLANの間に入る形になる。図で表すと以下の通り。

構築するサーバ名は、「rppx.dn.home」としている(Raspberry Pi ProXy から)。

DNSサーバの構築

BINDのインストール

DNSサーバとしては、オーソドックスにBINDを使う。

# yum install bind bind-utils

DNSコンテンツサーバとしての設定

自宅で勝手に作っているドメイン「dn.home」のゾーンを管理し、名前解決するための設定をしていく。

/etc/named.conf に正引き・逆引きゾーンの設定を追記する。

zone "dn.home" IN {
  type master;
  file "/var/named/db.dn.home";
};
zone "100.168.192.in-addr.arpa" IN {
  type master;
  file "/var/named/db.dn.home.rev";
};

正引きゾーンファイルとして、/var/named/db.dn.home を作成する。

$ORIGIN dn.home.
$TTL 86400

@ IN SOA rppx.dn.home. root.dn.home. (
  2018101201  ; Serial
  10800       ; Refresh
  600         ; Retry
  86400       ; Expire
  3600 )      ; Negative TTL

dn.home. IN NS rppx.dn.home.
rppx.dn.home. IN A 192.168.100.11

逆引きゾーンファイルとして、/var/named/db.dn.home.rev を作成する。

$ORIGIN 100.168.192.in-addr.arpa.
$TTL 86400

100.168.192.in-addr.arpa. IN SOA rppx.dn.home. root.dn.home. (
  2018101201  ; Serial
  10800       ; Refresh
  600         ; Retry
  86400       ; Expire
  3600 )      ; Negative TTL
  
100.168.192.in-addr.arpa. IN NS rppx.dn.home.
11.100.168.192.in-addr.arpa. IN PTR rppx.dn.home.

DNSキャッシュサーバとしての設定

キャッシュサーバとして、クライアントPCからの再帰問い合わせを受け付ける。自分が管理していないゾーンの問い合わせに関しては、別のDNSサーバ(HGW)にそのまま転送する(自分では反復問い合わせは行わない)。

/etc/named.conf の options 配下が該当する設定。ここを修正・追記していく。

再帰問い合わせを受け付ける

以下の設定をすれば、BINDはキャッシュサーバとして動作する。受け付ける対象のホストも明示しておく。

recursion yes;
allow-recursion { 192.168.100.0/24; localhost; };

問い合わせを転送する

「dn.home」以外のドメインについての問い合わせは、転送先(192.168.0.1)に丸投げする。

forward only;
forwarders { 192.168.0.1; };

リスニングするインターフェースの制限

もちろんインターネットには非公開としたいので、内部側LANでのみリスニングさせる。念のため、IPv6でのリスニングも停止する。

/etc/named.conf の options 配下の設定を修正する。

listen-on port 53 { 127.0.0.1; 192.168.100.11; };
listen-on-v6 { none; };
allow-query { 192.168.100.0/24; localhost; };

その他の設定

DNSSECを無効にする。/etc/named.conf の options 配下の設定を修正する。

dnssec-enable no;
dnssec-validation no;

設定の検証

設定ファイルとゾーンファイルが文法的に間違っていないか確認する。

# named-checkconf /etc/named.conf

→ 何も返ってこなければOK

# named-checkzone dn.home /var/named/db.dn.home
# named-checkzone 100.168.192.in-addr.arpa /var/named/db.dn.home.rev

→ OKと返ってくればOK

DHCPサーバの構築

DHCPのインストール

# yum install dhcp

dhcpdの設定

今回DHCPで配布したいIPアドレスは以下である。

  • 割り当てるIPアドレスの範囲は 192.168.100.100 から、192.168.100.200 まで
  • ルータ(デフォルトゲートウェイ)とDNSサーバにはプロキシサーバのIPアドレスを割り当てる
  • サブネットマスクは、255.255.255.0

上記の設定を行うため、/etc/dhcp/dhcpd.conf に以下を追記する。

option domain-name "dn.home";
option domain-name-servers 192.168.100.11;

authoritative;

subnet 192.168.100.0 netmask 255.255.255.0 {
  range 192.168.100.100 192.168.100.200;
  option routers 192.168.100.11;
  option subnet-mask 255.255.255.0;
}

リスニングするインターフェースの制限

dhcpdの場合、リスニングするインターフェースを制限するには、systemdのユニットファイルを編集する必要がある。

14.2. DHCP サーバーの設定 | Red Hat Product Documentation
14.2. DHCP サーバーの設定 | Red Hat Documentation

上記を参考に、systemdのユニットファイルをコピーして、

# cp /usr/lib/systemd/system/dhcpd.service /etc/systemd/system/

コピーした /etc/systemd/system/dhcpd.service のExcecStart の一番最後にリスニングしたいインターフェース(今回は、eth0)を追記する。

ExecStart=/usr/sbin/dhcpd -f -cf /etc/dhcp/dhcpd.conf -user dhcpd -group dhcpd --no-pid eth0

最後に、systemdの設定をリロードさせる。

# systemctl --system daemon-reload

プロキシサーバの構築

Squidのインストール

プロキシサーバのソフトウェアはSquidを使う。

# yum install squid

Squidの設定

デフォルト設定のままでも動いてしまうが、リクエストを受け付けるネットワークと、リスニングするIPアドレスを指定する。

/etc/squid/squid.conf の以下の設定を修正する。

#acl localnet src 10.0.0.0/8     # RFC1918 possible internal network
#acl localnet src 172.16.0.0/12  # RFC1918 possible internal network
#acl localnet src 192.168.0.0/16 # RFC1918 possible internal network
acl localnet src 192.168.100.0/24
http_port 192.168.100.11:3128

ファイアウォールの設定

ここまでで、必要なサーバソフトウェアのインストールと設定は終了した。

しかし、ネットワーク上の他のマシンから接続するためにはファイアウォールの設定を行う必要がある。

長くなってしまったので、次回に続く。

This document was created using the official VMware icon and diagram library. Copyright © 2012 VMware, Inc. All rights reserved. This product is protected by U.S. and international copyright and intellectual property laws. VMware products are covered by one or more patents listed at http://www.vmware.com/go/patents.

VMware does not endorse or make any representations about third party information included in this document, nor does the inclusion of any VMware icon or diagram in this document imply such an endorsement.

コメント

タイトルとURLをコピーしました