2025年02月14日(金) - 23:26 | カテゴリ:
Linux
権威DNSにはGSLB(広域負荷分散)と呼ばれる動的なDNSレコードを返す物があり、
“ns-lab BB”でもWebサーバの負荷分散とサーバ切替で用いており数年の運用実績がある。
そんな自鯖のGSLBも機能強化しつつ運用しているが、
フロントエンドがdnsdistを採用してバックエンドにgdnsdを用いた多段構成のため、
GeoIPを用いたロケーション判定と動的応答が出来ない課題があった。
………
そんな折に発生した権威DNSの脆弱性対応でサーバをアップグレードをする必要があり、
ついでにEDNS0の対応もする事となった。
(`・ω・´)「dnsdistがEDNS0に対応出来るなら、gdnsdも対応すればGeoIPを使えるのでは?」
そう思い立ち調査をしたところgdnsdもEDNS0に対応している事が判明。
ソースコードも読んだらEDNS Client Subnetで接続元のIPアドレスを引き渡せそうだったため、
筆者の運用するgdnsdでもEDNS0への対応とGeoIP動的応答への対応をしてみた。
今回はdnsdistとgdsndの両方をEDNS0に対応させる事で、
EDNS Client Subnetを使ったIPアドレス連携とGeoIPを使ってみた。
構築手順はwikiへ追記したので、ビルド方法やパラメータの詳細はwikiを読むべし。
- nowsky system-lab memo > gdnsd
今回の構成は以下の通り。
EDNS Client Subnetの付与はdnsdistで行い、
パラメータをgdnsdで読み取りGeoIPとの連携と動的なDNS応答をしている。
稼働させて2週間ほど経過するがGeoIPでの動的制御も正常に動いている。
懸念していたCPU負荷やメモリ使用率も正常稼働の範囲となっておりバーストも無かった。
GSLBは使い方によっては特定のネットワークからの接続を禁止する用途にも使えるため、
他のシステムと組み合わせれば攻撃検知と自動防御にも使えると思われる。
この場合、接続元キャッシュDNSサーバのグローバルIPを元に制御すれば行けそうなので、
自鯖で開発出来ないか考えてみようと思う。
………
本職でもDNSを弄っておりスキル習得が重要なため先進的な事は自鯖で実装する様にしてる。
権威DNSの自前運用は出来る限り避ける事が望まれる昨今なので時代に逆行しているものの、
自宅サーバなど自由な環境でないと出来ない事も大量にあるので、
敢えて自前で運用する事をポリシーにしていたりする。
安定が求められるシステムだからこそ深い所まで把握し自由に操作するのが重要なのと、
自由に弄れる環境だからこそ実現出来る事があるのも事実。
だからこそ、自前で運用する権威DNSを使って検証をしていく所存。
« 続きを隠す
2025年01月25日(土) - 22:14 | カテゴリ:
Linux
以前、自宅サーバ上にADドメコンやOpenLDAP基板を構築したものの放置していたが、
構築ナレッジの蓄積とスキル習得のためにADドメコンを作り直す必要が出てきたため、
Samba4でソースからビルドしたバイナリを用いてADドメコンを再構築する事にしてみた。
環境に利用するRHELの構築とSamba4のテストビルドも終わったため、
ADドメインのフォレストを作りテストに着手中。
挙動に癖が強い上、ドメインレベルがWindows Server 2008R2相当に限定されてしまうものの、
テスト利用する位なら問題無く動く様だった。
まだ、構築テストの域なので細かい確認は出来てないが、
確認する事自体が今回の目的でもあるので気長に進めていこうと思う。
ソースコードからのビルドは中々大変なのでコレも書き溜めて何処かで出したいと思う。
2025年01月13日(月) - 20:58 | カテゴリ:
Linux
RHEL8で開発用パッケージ(development)をインストールする時は、
powertoolsリポジトリを有効化してdnfコマンドを利用するとdevelを参照出来る。
RHEL9ではpowertoolsが存在せずどれを参照すれば良いのかと思いつつも、
EPELなどサードパーティリポジトリで回避しつつ誤魔化していた。
昨日、RHEL9公式リポジトリ縛りでlmdb-develをインストールしようとしたのだが、
lmdb-develが存在せずインストールが出来なかった。
RHEL9にはpowertoolsが存在しないため何処からインストールした物かと思いつつ調査したところ、
powertoolsはCodeReady Linux Builder (CRB)という名前に変わっていた様で、
そちらのリポジトリを有効化するとインストール出来た。
“/etc/yum.repos.d/redhat.repo”の抜粋は次の通り。
初期状態は”enabled = 0″で無効化されていた。
[codeready-builder-for-rhel-9-x86_64-rpms]
name = Red Hat CodeReady Linux Builder for RHEL 9 x86_64 (RPMs)
baseurl = https://cdn.redhat.com/content/dist/rhel9/$releasever/x86_64/codeready-builder/os
enabled = 1
gpgcheck = 1
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
sslverify = 1
sslcacert = /etc/rhsm/ca/redhat-uep.pem
sslclientkey = /etc/pki/entitlement/example-key.pem
sslclientcert = /etc/pki/entitlement/example.pem
metadata_expire = 86400
enabled_metadata = 0
sslverifystatus = 1
|
有効化は”enabled = 1″に書き換えるか、”dnf config-manager –enable repository”でフラグを立てると、
次回以降のdnfコマンド実行時に新しいリポジトリを参照する様になる。
そろそろRHEL10がリリースされる筈だし、
最近はLinuxを弄る機会が減っていたので良いリハビリになった。
弄らないと勘も忘れてしまう物なので、少しずつでもコマンドを叩く機会を増やして行きたい。