Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Hickory DNSで始める自作DNSフォワーダ
Search
jyuch
November 29, 2025
Programming
72
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Hickory DNSで始める自作DNSフォワーダ
jyuch
November 29, 2025
More Decks by jyuch
See All by jyuch
ダウナー系生成AIに毎日カスの嘘を流し込まれたい
jyuch
0
37
Other Decks in Programming
See All in Programming
Vite+ Unified Toolchain for the Web
naokihaba
0
410
AI駆動開発を妨げる技術的負債の解消アプローチ / ai-refactoring-approach
minodriven
17
8.5k
任せる範囲はこう広がった / How the Scope of AI Delegation Has Expanded
nrslib
1
220
Creating Composable Callables in Contemporary C++
rollbear
0
180
AIで効率化できた業務・日常
ochtum
0
160
技術的負債解消で開発者の未来を開く- AIの力でコード刷新
kmd2kmd
0
140
ローカルLLMでどこまでコードが書けるか -縮小版 / How much code can be written on a local LLM Shortened
kishida
2
170
Vue × Nuxt × Oxc どこまで使える?実運用の現在地
andpad
0
350
LLMによるContent Moderationの本番運用の裏側と品質担保への挑戦
suikabar
3
820
分散システム、なんですぐ死んでしまうん?耐障害性を高めたいあなたのためのレジリエンスパターン入門
mshibuya
2
880
Observability in Practice:Grafana 與 Edge Device SRE 的那些事
blueswen
0
180
TSKaigi Night Talks 2026_TypeScriptでサプライチェーンの整合性を型に閉じ込める
geekplus_tech
0
420
Featured
See All Featured
Game over? The fight for quality and originality in the time of robots
wayneb77
1
220
Rails Girls Zürich Keynote
gr2m
96
14k
New Earth Scene 8
popppiees
3
2.4k
Done Done
chrislema
186
16k
Agile that works and the tools we love
rasmusluckow
331
22k
4 Signs Your Business is Dying
shpigford
187
22k
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.3k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
170
Build your cross-platform service in a week with App Engine
jlugia
234
18k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.3k
The browser strikes back
jonoalderson
0
1.4k
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
240
Transcript
Hickory DNSで始める自作DNSフォワーダ Ibaraki.dev #14 もくもく会
自己紹介 • @jyuch • 自称ソフトウェアエンジニア • 最近はデータエンジニアっぽいことをしている 2
アジェンダ 3 1. DNSのしくみのおさらい 2. Hickory DNSの紹介 3. Hickory DNSのいいところ・わるいところ
DNSのしくみのおさらい 4
通信の流れ 5 DNSサーバ Webサーバ ① www.example.comのIPアドレスを教えて ② アドレスは203.0.113.1です ③ Webサーバにアクセス
通信の流れ 6 サーバへのアクセスに先行してDNS問い合わせが実行される DNS応答を通してネットワークアクセスを制御できる • ロードバランシング • ランダム・レイテンシ・地理的近接に振り分ける • コンテンツ・違法サイトのフィルタリング
• ポリシーに従ってアクセスを遮断 • セキュリティ • C&Cサーバへのアクセスを検知・遮断
DNS問い合わせの流れ 7 ルートネームサーバ フルリゾルバ フォワーダ (宅内ルータなど) 権威DNSサーバ 権威DNSサーバ 受け取ったリクエストを フルリゾルバに転送する
ルートネームサーバから 順に問い合わせる 問い合わせに回答する 管理を委任している サーバを応答する
DNS問い合わせのインターセプト 8 ルートネームサーバ フルリゾルバ フォワーダ 権威DNSサーバ 権威DNSサーバ アクセスしてほしくないドメイン へのリクエストを捨てる そのドメインは存在しないっぽいですね(嘘)
フォワーダで問い合わせをインターセプトすれば、アクセスしてほしくない サイトへのアクセスを阻止できる
Hickory DNSの紹介 9
Hickory DNSの紹介 • Rustで実装されているDNSライブラリ • 機能ごとにクレートで分割されている 10 https://hickory-dns.org/
Hickory DNSを使ったフィルタの実装 11 11 フルリゾルバ Server クレート Client クレート アクセス拒否リスト
フィルタ ロジック フォワーダ Tokioランタイム Webフレームワークのように ハンドラを書くだけ Rustの非同期ランタイム リストを参照してフィルタ リクエストをフルリゾルバ に転送する
Hickory DNSのいいところ・わるいところ 12
Hickory DNSのいいところ • Rustで書ける • Rustでアプリケーションを書くのは全人類の願望のはず • Rustのメリットを簡単に享受できる • シングルバイナリ
• 複数のOS向けにビルドできる • メモリセーフ • GCがない • メモリフットプリントが小さい • 動作が軽い 13
Hickory DNSのいいところ • Tokioランタイム(非同期ランタイム)で動作する • Tokioランタイムにおんぶにだっこで非同期サーバが書ける • smolは未サポート(RuntimeProviderを実装すればワンチャン?) • DNSを抽象的に扱える
• ペイロードのレイアウトなどは気にしなくてもよい • 構造体に詰めればあとはよしなにしてくれる 14
Hickory DNSのわるいところ • ドキュメントがほとんどない • 使い方を解説しているブログもほとんどない • ソースコードを読んで使い方を調べる必要がある • APIの互換性を破壊する変更が入る事が稀にある
• まだメジャーリリースはされてない • 今のところ軽微な修正で済んでいる • リクエストログは自分で作りこむ必要がある • DNS Tapが簡単に扱える機能があるとすごいうれしい(願望) 15
Hickory DNSのわるいところ 16
Hickory DNSのわるいところ 17 … あ ま り 強 い 型
を 遣 う な よ コ ン パ イ ル が 通 ら な い ※ コンプライアンス愛染様
Hickory DNSのわるいところ • 面妖なシグネチャが頻出する • ライフタイム修飾子・型パラメータ • 非同期を前提としているのも難解さを加速させている • 型パズルがしんどい
• Rustで書く必要がある • やっぱりRustは難しい 18
まとめ • DNSを制する者は通信を制する • Hickory DNSを使えば簡単にDNSフォワーダが書ける • やっぱりRustは難しい・・・ 19