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

前回はRaspberry PiにDNSサーバのBIND、DHCPサーバ、プロキシサーバのSquidをインストール、設定した。

今回は、ネットワーク上でサーバとして稼働させるためにファイアウォールの設定を行い、最後にサービスの起動と、動作検証を行う。

ファイアウォールの設定

CentOS7標準のfirewalldを使って、サービスに対するパケットフィルタを設定していく。

  • 内部側LANは、DNS(UDP/53)、DHCP(UDP/67)、Squid(TCP/3128)のインバウンド通信を許可する。
  • HGW側LANはインバウンドの通信は全て拒否する。

ゾーンの設定

firewalldにはゾーンという概念があり、パケットフィルタのルールをNICごとにまとめて設定出来る。

今回はあらかじめ用意されている「work」と「public」というゾーンを編集して、以下のような設定にする。

内部側LANの設定

まず、内部側LANのNIC(eth0)にworkゾーンを割り当てる。

# nmcli con mod eth0 connection.zone work

次に、通信を許可するサービスとしてdns, dhcp, squidを追加する。

# firewall-cmd --add-service=dns    --zone=work --permanent
# firewall-cmd --add-service=dhcp   --zone=work --permanent
# firewall-cmd --add-service=squid  --zone=work --permanent

firewalldは、このようにポート番号ではなくサービスを指定(–add-service)することができる。わざわざ必要なポート番号を調べなくても、自動的にパケットフィルタに設定してくれるので便利である。

HGW側LANの設定

HGW側LANのNIC(wl_50)にpublicゾーンを割り当てる。

# nmcli con mod wl_50 connection.zone public

publicゾーンにはデフォルトで、sshとdhcpv6-client、そしてなぜかTCP/22の通信が個別に許可されているので、sshとTCP/22を通信を許可するサービスから外す。

# firewall-cmd --remove-service=ssh --zone=public --permanent
# firewall-cmd --remove-port=22/tcp --zone=public --permanent

設定の反映と確認

# firewall-cmd --reload
# firewall-cmd --list-all --zone=work
work (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources:
  services: ssh dhcpv6-client dns dhcp squid
  ports:
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

# firewall-cmd --list-all --zone=public
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: wlan0
  sources:
  services: dhcpv6-client
  ports:
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

workゾーンには元々sshとdhcpv6-client が許可されているが、これはそのままにしている。

サービスの有効化と起動

ここまでに設定した内容で各種サービスを有効化し、再起動する。

# systemctl enable named
# systemctl enable dhcpd
# systemctl enable squid

# systemctl restart named
# systemctl restart dhcpd
# systemctl restart squid

ネットワーク設定の変更

ローカルのDNSサーバが稼働し始めたので、自分自身が参照するDNSサーバを自分自身(BINDがリスニングしている192.168.100.11)に設定しておく。

動作検証

クライアントPCがDHCPで想定したIPアドレスを取得できること、立ち上げたプロキシ経由でWebを閲覧できること等を確認する。

セキュリティ面の検証

この手のネットワークサーバを立ち上げた場合、心配なのはセキュリティ面だと思う。一応、ポートスキャンで不要な穴が開いていないかのチェックはしておく。

[root@ddpx ~]# nmap 192.168.0.11

Starting Nmap 6.40 ( http://nmap.org ) at 2019-03-29 20:01 JST
Nmap scan report for 192.168.0.11
Host is up (0.021s latency).
All 1000 scanned ports on 192.168.0.11 are filtered
MAC Address: FF:FF:FF:FF:FF:FF (Raspberry Pi Foundation)

Nmap done: 1 IP address (1 host up) scanned in 9.20 seconds

これはHGW側LAN上の別のマシンからIPv4アドレスでポートスキャンした結果。ちゃんと全部フィルタされていればOK。
※MACアドレスは念のためマスクしている。

[root@ik1-301-10930 ~]# nmap -6 2409:::::::

Starting Nmap 6.40 ( http://nmap.org ) at 2019-03-29 20:02 JST
Nmap scan report for 2409:::::::
Host is up (0.029s latency).
All 1000 scanned ports on 2409::::::: are filtered

Nmap done: 1 IP address (1 host up) scanned in 4.37 seconds

これは、インターネット上の別のマシン(さくらインターネットのVPS)からIPv6でポートスキャンした結果。IPv6の場合、NAT等は行われずインターネットにいわば直結されている状態なので、より危険度が高い。こちらも全部フィルタされていればOK。
※IPv6アドレスは念のためマスクしている。

回線速度の検証

Raspberry PiからHGWへは無線LANでつなげているので、インターネット接続時の回線速度が気になるところ。特に大きなアンテナが付いているわけでもないし、かなり遅くなるのではないか?と思っていた。

回線速度を測れるサイトを使って見てみると、60Mbps程度は出ているようなので、問題ないレベルであった。

メモリ使用状況

1日ほど稼働させた後のメモリの使用状況はこんな感じ。

# free -h
              total        used        free      shared  buff/cache   available
Mem:           927M        215M        517M         11M        194M        652M
Swap:          487M          0B        487M

YouTubeで動画を見たりして、プロキシサーバとしてそれなりにデータを転送しているが、メモリの空きは十分確保できている。1GBのメモリでも全く問題は無いようだ。

最後に

Raspberry Piを使ったDNS・DHCP・プロキシサーバの構築は、思いの外スムーズに進んだ。

元々別のマシンで構築したことがあったので、手順はある程度まとまっていたし、OSに同じCentOS7を使えたというのも大きかったと思う。

ハードウェアとしてどの程度安定して動作してくれるかはまだ様子見であるが、今のところ安定して動いている様子である。

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をコピーしました