Menu Close

Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

3.4. マルチポートサービスとロードバランサー

マルチポートのロードバランサーサービスを作成する場合、LVS ルーターはどのトポロジーでも追加の設定が必要になります。HTTP (ポート 80) および HTTPS (ポート 443) などの異なる関連するプロトコルをバンドル化するファイアウォールマークを使用したり、FTP などの実際のマルチポートプロトコルを用いてロードバランサーを使用したりする場合、マルチポートサービスは人為的に作成されます。どちらの場合でも、LVS ルーターはファイアウォールマークを使用して異なるポートに送信されるパケットを認識しますが、同じファイアマークが付けられているため同様に処理する必要があります。また、ファイアウォールマークを永続性と組み合わせると、永続性パラメーターによって指定された期間内に接続が発生する限り、クライアントマシンからの接続は同じホストへルーティングされます。
実サーバー上で負荷を分散するために使用されるメカニズムである IPVS は、パケットに割り当てられたファイアウォールマークを認識しますが、IPVS 自体はファイアウォールを割り当てできません。ファイアウォールマークの割り当ては、ネットワークパケットフィルターである iptables が行う必要があります。Red Hat Enterprise Linux 7 のデフォルトのファイアウォール管理ツールは、firewalld で、iptables の設定に使用できます。iptables を直接使用することもできます。Red Hat Enterprise Linux 7 で iptables を使用する方法については、Red Hat Enterprise Linux 7 セキュリティーガイドを参照してください。

3.4.1. firewalld を使用したファイアウォールマークの割り当て

管理者は firewalldfirewall-cmd ユーティリティーを使用して、特定のポートに送信されるパケットにファイアウォールマークを割り当てることができます。
firewalld が稼働していることを確認する必要がある場合は、以下を実行します。
# systemctl status firewalld
firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled)
   Active: active (running) since Tue 2016-01-26 05:23:53 EST; 7h ago
firewalld を開始するには、以下を入力します。
# systemctl start firewalld
システム起動時に firewalld が有効な状態で開始するようにするには、以下を実行します。
# systemctl enable firewalld
ここでは、HTTP と HTTPS をバンドルする方法を例を用いて説明しますが、FTP も一般的に使用されるクラスター化されたマルチポートプロトコルです。
ファイアウォールマークを使用する場合の基本ルールとして、Keepalived でファイアウォールマークを使用する各プロトコルには、ファイアウォールマークをネットワークパケットに割り当てるための同等のファイアウォールルールが必要になります。
ネットワークパケットのフィルタールールを作成する前に、すでに他のルールが存在しないか確認します。これを行うには、シェルプロンプトを開いて、root でログインして以下のコマンドを実行します。
# firewall-cmd --list-rich-rules
リッチルールが存在しない場合は、プロンプトがすぐに再表示されます。
firewalld がアクティブでリッチルールが存在する場合は、ルールのセットが表示されます。
すでに存在するルールが重要である場合は、/etc/firewalld/zones/ の内容をチェックし、維持するルールを安全な場所にコピーしてから手順を続行します。次の形式のコマンドを使用して、不要なリッチルールを削除します:
firewall-cmd --zone=zone --remove-rich-rule='rule' --permanent
--permanent オプションでは、設定を永続化しますが、コマンドは次のシステム起動時にのみ有効です。設定を即座に反映する必要がある場合は、--permanent オプションを省略してコマンドを繰り返し実行します。
最初に設定するロードバランサーに関連するファイアウォールルールは、Keepalived サービスの VRRP トラフィックを許可します。ターミナルで以下のコマンドを入力します。
# firewall-cmd --add-rich-rule='rule protocol value="vrrp" accept' --permanent
ゾーンを省略すると、デフォルトのゾーンが使用されます。
以下のルールは、ファイアウォールマーク 80 をポート 80 および 443 上でフローティング IP アドレス n.n.n.n が宛先となる受信トラフィックに割り当てます。
# firewall-cmd --add-rich-rule='rule family="ipv4" destination address="n.n.n.n/32" port port="80" protocol="tcp" mark set="80"' --permanent
# firewall-cmd --add-rich-rule='rule family="ipv4" destination address="n.n.n.n/32" port port="443" protocol="tcp" mark set="80"' --permanent
# firewall-cmd --reload
success
# firewall-cmd --list-rich-rules
rule protocol value="vrrp" accept
rule family="ipv4" destination address="n.n.n.n/32" port port="80" protocol="tcp" mark set=80
rule family="ipv4" destination address="n.n.n.n/32" port port="443" protocol="tcp" mark set=80
ゾーンを省略すると、デフォルトのゾーンが使用されます。
firewalld のリッチ言語コマンドの使用に関する詳細は、Red Hat Enterprise Linux 7 セキュリティーガイド を参照してください。