前回は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のユニットファイルを編集する必要がある。
上記を参考に、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.
コメント