Stubby 开源项目使用教程
1. 项目的目录结构及介绍
Stubby 是一个用于 DNS over TLS (DoT) 的客户端,其项目目录结构如下:
stubby/
├── AUTHORS
├── CMakeLists.txt
├── COPYING
├── ChangeLog
├── INSTALL
├── Makefile.am
├── NEWS
├── README
├── README.md
├── TODO
├── aclocal.m4
├── build-aux/
├── contrib/
├── data/
├── doc/
├── m4/
├── src/
└── tests/
主要目录介绍:
src/
: 包含 Stubby 的主要源代码文件。data/
: 包含配置文件模板和示例。doc/
: 包含项目文档。tests/
: 包含测试脚本和测试数据。
2. 项目的启动文件介绍
Stubby 的启动文件位于 src/
目录下,主要文件为 stubby.c
。该文件包含了 Stubby 的主函数和初始化逻辑。
// src/stubby.c
int main(int argc, char **argv) {
// 初始化逻辑
// ...
return 0;
}
3. 项目的配置文件介绍
Stubby 的配置文件通常命名为 stubby.yml
,位于 data/
目录下。该文件包含了 Stubby 的所有配置选项。
配置文件示例:
# data/stubby.yml
resolution_type: GETDNS_RESOLUTION_STUB
dns_transport_list:
- GETDNS_TRANSPORT_TLS
tls_authentication: GETDNS_AUTHENTICATION_REQUIRED
tls_query_padding_blocksize: 128
edns_client_subnet_private : 1
round_robin_upstreams: 1
idle_timeout: 10000
listen_addresses:
- 127.0.0.1@53
- 0::1@53
upstream_recursive_servers:
- address_data: 9.9.9.9
tls_auth_name: "dns.quad9.net"
- address_data: 149.112.112.112
tls_auth_name: "dns.quad9.net"
主要配置项介绍:
resolution_type
: 指定解析类型,通常为GETDNS_RESOLUTION_STUB
。dns_transport_list
: 指定 DNS 传输方式,通常为GETDNS_TRANSPORT_TLS
。tls_authentication
: 指定 TLS 认证方式,通常为GETDNS_AUTHENTICATION_REQUIRED
。listen_addresses
: 指定 Stubby 监听的地址和端口。upstream_recursive_servers
: 指定上游 DNS 服务器及其 TLS 认证名称。
通过以上配置,可以确保 Stubby 以安全的方式进行 DNS 查询。