7」環境の「firewalld」で特定の国からのアクセスを拒否する設定を行ったところ、ルールが4000~5000とかなり多くなってしまいました。その結果「firewalld」の動作がかなり重くなってしまい、良い方法を色々と調べてみたところ「ipset」と組み合わせて使用することで幸せになれるという情報が見つかりましたので、導入した際の手順についてまとめました。ipsetとはIPアドレスやネットワークアドレス、ポート番号、インターフェイス名などを組み合わせて管理することができるユーティリティになります。「firewalld」で一つ一つルールを追加するよりも、格段にパフォーマンスも向上します。ipsetインストールまずは「yum」で「ipset」をインストールします。「ipset」を使用するには、まずセット(ポリシー名みたいなもの)作成してから、そこにネットワークアドレスやIPアドレス等を追加していく必要があります。セットを作成するためコマンドは下記の通りとなります。オプションセット名セット名はどのようなルールを管理しているのかが分かりやすい名前を設定します。今回はアクセスを禁止するネットワークアドレスをまとめて管理するため「BLACKLIST」と付けることにします。作成するセットの種類を指定します。指定できるタイプは色々とあるのですが、今回使用するタイプはネットワークアドレスを管理するための「hash:net」を指定します。指定できるタイプについて簡単にまとめて見ました。複数のセットを管理することができるオプション今回はすべてデフォルト設定でいきますので、特にオプションの指定は行いません。create」でセット作成する際に使用できるオプションの一覧です。今回作成する「BLACKLIST」という名前のセットには、ネットワークアドレス登録するのでタイプは「hash:net」を指定して作成します。add」コマンドでネットワークアドレスを追加していきます。先ほど作成したセットである「BLACKLIST」にネットワークアドレスを追加していきます。192.168.2.0/24追加確認セットに登録された情報は下記のコマンドで確認することが出来ます。先ほど実際に登録した内容を確認してみます。0Members:192.168.0.0/24192.168.2.0/24登録したネットワークアドレスが確認できました。「ipset」の準備が出来たので、次に「firewalld」との連携設定を行っていきます。連携には「firewall-cmd」の「–direct」オプションを使用して設定を行っていきます。「firewalld」の設定を行う場合は十分に注意して行ってください。設定を失敗すると、対象サーバに接続することが出来なくなってしまう場合もあります。今回は外部からの接続対してのルールを設定するので、テーブルは「filter」を、チェインは「INPUT」を指定しています。DROPここで設定した内容は「INPUT_direct」チェインに登録されます。設定ファイル「–direct」オプションで設定した内容は「/etc/firewalld/direct.xml」に保存されます。-v」コマンドで「INPUT_direct」チェインの設定を確認して、「match-set」の部分に「ipset」で作成したセットが設定されていることを確認します。次に「INPUT」チェインに「INPUT_direct」チェインが登録されていることを確認してください。icmp-host-prohibited両方とも確認できましたら、「ipset」と「fireawalld」の連携は完了です。「ipset」と「firewalld」の連携が完了しましたら、次に「ipset」に作成したセットを自動作成する設定を行っていきます。「ipset」はメモリ上にセット内容を格納しているため、サーバを再起動したりすると内容が削除されてしまいます。そのため「firewalld」の起動前に「ipset」のセットを作成して、セットにルールを追加するという作業が必要になるのですが、サーバの再起動毎に手動で作業を行うのは現実的ではないので、自動的にセットを作成するためのスクリプトを作成していきます。データセーブ格納ディレクトリ作成まずは、データ保存用のディレクトリを作成します。現在の「ipset」の情報は下記の方法で保存することが出来ます。「BLACKLIST」というファイルに「ipset」のセット情報を保存していきます。restore」コマンドでリストアすることができます。ファイル名ipset作成スクリプトサーバ起動時や、「firewalld」の再起動時に自動的に「ipset」のセットを作成するために、「ipset_create.sh」というスクリプトを作成します。※スクリプトの名前はお好きな名前でかまいません。restore」でバックアップした情報からセットを作成するという動作をします。作成したスクリプトのパーミッションを設定します。ipset_create.shスクリプト動作確認スクリプトの作成が終わりましたら、次に動作試験を行っていきます。restore」が行えないため、一度「firewalld」との連携を解除します。destoy」でセットを削除してからスクリプトを実行しセットがリストアされることを確認してください。listスクリプトの動作に問題が無ければ、「firewalld」が起動する前に「ipset」のセット作成スクリプトを実行して、セットを作成するように設定を行っていきます。「firewalld」が起動する前にipsetのセットが作成されている必要があるため、「firewalld」のsystemd管理用スクリプト(/usr/lib/systemd/system/firewalld.service)を編集していきます。/usr/lib/systemd/system/firewalld.service変更内容[Service]セクションに「ExecStartPre」を設定すると、起動前に実行するスクリプトを指定できるので「ipset」作成用のスクリプト(/etc/ipset/ipset_create.sh)を指定します。「/usr/lib/systemd/system/firewalld.service」の編集が完了しましたら、「firewalld」と「ipset」の連携試験を行っていきます。firewalld再起動テスト「ipset」の中身を空にしてから「firewalld」を再起動して「ipset」と連携できているか確認します。flush一旦「ipset」のセット「BLACKLIST」の情報を削除します。list「firewalld」を再起動して、「ipset」と連携できているか確認します。「ipset」のセット登録情報を確認します。「INPUT」と「INPUT_direct」チェインの内容を確認し、それぞれ登録されていることを確認してください。「firewalld」の再起動試験で問題がなければ大丈夫だと思いますが、念のためにサーバの再起動試験が行えるのであれば実施したほうが安心です。今すぐにサーバの再起動が行えない場合は、次回サーバ再起動時に忘れずに確認を行ってください。以上で作業完了となります。特定の国からの通信を遮断したい場合、その国に配布されているIPアドレスの一覧を調べる必要があります。IPアドレスを管理している各団体のページから情報をダウンロードしてきて、自分で必要な情報を抽出するという方法もありますが、それは面倒なので私はいつも下記のサイトのお世話になっています。https://ipv4.fetus.jp/IPアドレスの一覧が欲しい国を選択すると、その国に割り当てられているIPアドレスの一覧を表示してくれます。画面右側の「Download」の「プレインテキスト」からテキストで情報をダウンロードすることができるので、これを元にIPセットを作成すると良いでしょう。ちなみに、私はセットに登録する際には下記のようなスクリプトを使用して登録しています。※登録するセットは事前に作成しておいてください。「firewalld」で特定のアドレスからの通信(ソース指定)を遮断する方法です。「http(S)」や「s...記事を読むfirewalldにユーザ定義サービスを追加firewalldにユーザが定義したサービスを追加する方法です。「firewall...記事を読むfirewalldの設定方法(基本設定編)「firewalld」の基本的な設定方法です。ポートフォワーディング等の設定方法は別途作成していく予定です。ご回答を何度も読み直して、わたしの間違っているところを調べなおしたんですね、そしたら「あれ?バーチャルホストにしたいドメインの」DNS設定ってしっかりなってるのかな?と思ってメインのドメインの方は、CENTOS7にインストールしたDICEでやっているんですけど、サブドメインは未設定だったんですね(。オンラインサービスDNSでやることにしたんです。名前解決もして、そしたら大成功ですよ!本当にありがとうございました^^超うれしいです。以前に、ヤフー知恵袋にこの件を相談したときに、BINDを設定しないとダメだよ!と回答されて、それで設定したんですね。自分で、DNSサーバーを作る人はこれが必要だったのかな?直接のメールやり取り!喜んで^^ぜひぜひ、弟子にしてください!tamohikoさんから、バーチャルホスト、ウェブアライザー、ファイヤーウォールdの使い方を教わって、これで超楽しい自宅サーバーライフがはじまりますね!本当にありがとうございました。返信tamohikoさんこんばんわ。tamohikoさんは、すごく優しいですね。́;ω;`)本当にありがとうございます。やってみます!バーチャルホストについても、ありがとうございます。ドメインは3つ持ってます。いうドメインだけです。インターネット回線は「ZAQ」という会社でマンションに備え付けの無料インターネットで、これが固定IPに非対応のようなんです。>>また、この環境であればDDNS環境での運用になるのかなと思うのですが、こちらの方の設定は完了していますか?>>一応、以下のサイト様を参考にさせてもらって、hogehoge.dip.jp(無料ドメイン1)これ1つだけなら問題なく表示はできています。https://centossrv.com/domain-ieserver.shtmlあと、BINDの設定もできました。nslookupとかも動作します。https://centossrv.com/bind.shtmlただ、私の2つ目のドメインの設定方法が間違っているようでhogevirtual.jpn.ph(無料ドメイン2)が表示されないんです。皆さん、有料ドメインだったり、固定IPだったりして、その場合、どこをどう自分に合わせて変更したらいいかわからなくて。tamohikoさん相談に乗っていただいて本当にありがとうございます。返信sushiさんお返事ありがとうございます。バーチャルホストの件について、もう少し確認させてください。現時点での問題点は下記2点だと認識しているのですがあっていますか?・バーチャルホストで表示できないドメインがある・名前解決が出来ないドメインがある(2)バーチャルホストの動作確認まずはバーチャルホストの設定をがあっているかを確認したいので、、hostsにIPとホスト名を設定して3ドメインとも名前解決が出来るように設定してみてください。hogehoge.site設定するファイルは、クライアントがWindowsならば「C:Windows\System32\drivers\etc\hosts」でCentOSの場合は「/etc/hosts」となります。これで、名前解決が出来るようになると思いますので、Webブラウザでそれぞれのドメインにアクセスしてみてください。これでもWebサイトにアクセスできない場合は、その際に出たメッセージを教えてください。あと、BINDの設定もできました。nslookupとかも動作します。(T^T)BINDは何のために使用しているのでしょうか?サイトの方を見てみたのですが、いまいちよくわかりませんでしたので...あと、コメント欄でのやり取りだと読みづらくなってしまうのでよろしければ、直接メールでやり取りさせて頂けますか?もしよろしければ、その旨コメント頂けますでしょうか。私の方からメールさせていただきますので、よろしくお願いいたします。返信tamohikoさん、sushiです。ipsetの記事読ませていただきました。!返信が遅くなってすみません。tamohikoさんのおっしゃるとおり、あの大量のIPでしたので、スクリプトを使って所定の書式を作ってやっていたのですが、そのスクリプトを作るのも、わたくし超初心者でして、やっとのやっとだったんですね^^;最近ようやくその準備ができたところだったんです^^;でも、なるほど、それだとfirewalldの動作に影響がでてくるんですね。どのフォルダの中に何というファイル名で保存すればいいのでしょうか?詳しい方はすぐに分かるんだと思うんですけど。国別の大量のIPをTXT形式で保存して。さんのサーバーを例として書いていただけると大変助かります^^。最近かなり困っていることがあります。返信sushiさんコメントありがとうございます。お返事遅くなってしまいすいません。何というファイル名で保存すればいいのでしょうか?特に決まりはないので、どこのフォルダでもどんな名前でも大丈夫です。サーバーを例として書いていただけると大変助かります^^。私が作業を行った時の手順を簡単にまとめておきます。作業の流れ的には/rootフォルダにIPアドレスのリストをダウンロードしてきて、そこに「ipset-create.sh」という名前でスクリプトを作成して「ipset」のBLACKLISTセットに登録といった流れになります。■IPアドレスリストダウンロード今回は「https://ipv4.fetus.jp/krfilter」のリスト使用しました。https://ipv4.fetus.jp/krfilter.1.txt■スクリプト作成ipsetのセットは事前に作成しておいてください。LIST(IPアドレスリストのファイル名)とSET(ipsetのセット名)の部分は適宜変更お願いします。./ipset-create.sh■登録確認ipsetのセットに情報が登録されているか確認します。BLACKLIST(2)バーチャルホストについて質問が何点かありますので教えてください。・使用しているOSを教えてください・使用しているWebサーバは何をお使いですか?apacheですか?それともnginx?・ドメインについて非固定IP環境で運用しようとしているとのことですが、ドメイン自体はすでに取得されているのでしょうか?また、この環境であればDDNS環境での運用になるのかなと思うのですが、こちらの方の設定は完了していますか?このあたりの情報お教えいただければ、お力になれることはあると思いますよ。以上、よろしくお願いいたします。コメントをキャンセルメールアドレスが公開されることはありません。コメントデータの処理方法の詳細はこちらをご覧ください。なっていますが、利用しないではないかと、、、。--parentsでフォルダ構造(パス)まるごとコピーparentsの綴りが誤っているようです。いろんなサイト様を参照しつつ最終的にこちらのサイト様で無事に動作させることができました。ありがとうございます。wordpressインストール大変参考になりました。ありがとうございました。server-memo.net.。