WHOIS 是一个用于查询域名/IP/ASN 信息的协议,可以查询资源的注册信息等,本文将介绍如何利用轻量应用服务器搭建 WHOIS 查询接口。
部署轻量应用服务器
登录轻量应用服务器
- 打开轻量应用服务器控制台找到您的实例,并点击
登录
。
- 点击
登录
登录到服务器。
- 输入
sudo su
切换到 root 用户,然后输入cd /root
进入 root 用户的家目录。
安装 WHOIS 工具
安装依赖
- 更新软件包。
1
| apt update && apt upgrade -y
|
- 在终端输入以下命令安装
redis-server
。1
| apt install redis-server -y
|
安装 WHOIS
- 打开Releases页面,找到最新的版本,选择系统对应的版本复制下载链接,轻量应用服务器一般为
amd64
架构。
- 在终端输入以下命令下载并解压。
1 2 3
| mkdir whois && cd whois wget https://github.com/KincaidYang/whois/releases/download/v0.1.6/whois_0.1.6_linux_amd64.tar.gz -O whois.tar.gz tar -xzf whois.tar.gz
|
- 修改配置文件。
1 2 3 4 5 6 7 8 9 10
| { "redis": { "addr": "localhost:6379", "password": "", "db": 0 }, "cacheExpiration": 3600, "port": 8043, "rateLimit": 50 }
|
redis
:Redis 服务器的地址、密码和数据库。cacheExpiration
:缓存过期时间,单位秒。port
:WHOIS 服务端口。rateLimit
:限制每秒请求次数,请注意该限制针对的是程序向注册局发起查询的频率,而不是用户向 WHOIS 服务发起查询的频率,如需限制用户查询频率,请在 Nginx 或其他代理中配置。
启动 WHOIS
- 在终端输入以下命令启动 WHOIS。
- 程序启动后会显示
Server is listening on port 8043...
- 使用浏览器访问
http://服务器公网IP:8043
,如果显示No WHOIS or RDAP server known for TLD:
则说明 WHOIS 服务已启动成功。 - 终端断开连接后 WHOIS 服务会停止,可以使用
screen
或nohup
命令使其在后台运行,或参照下方教程设置进程守护。
进程守护
1
| vim /etc/systemd/system/whois.service
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| [Unit] [Unit] Description=whois After=network.target
[Service] Type=simple User=root Group=root ExecStart=/path/to/whois/whois WorkingDirectory=/path/to/whois Restart=on-failure
[Install] WantedBy=multi-user.target
|
ExecStart
:程序路径。WorkingDirectory
:程序所在目录。
请将/path/to/whois
替换为实际路径。1 2
| systemctl start whois systemctl enable whois
|
Nginx 反代
如果您需要使用域名访问 WHOIS 服务,可以使用 Nginx 反代,安装Nginx的步骤本文不再赘述,您可以参考Nginx 编译开启 Quic 或 HTTP/3,下面是示例配置文件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
| server { listen 443 ssl; listen [::]:443 ssl;
listen 443 quic; listen [::]:443 quic;
http2 on;
server_name whois.ddnsip.cn;
add_header Alt-Svc 'h3=":443"; ma=86400';
add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload"; add_header X-Frame-Options "SAMEORIGIN"; add_header X-Content-Type-Options "nosniff"; add_header X-XSS-Protection "1; mode=block"; add_header X-robot-Tag "all"; add_header x-download-options "noopen";
add_header Access-Control-Allow-Origin *; add_header Access-Control-Allow-Headers "Origin, X-Requested-With, Content-Type, Accept"; add_header Access-Control-Allow-Methods "GET, POST, OPTIONS";
location / { proxy_pass http://127.0.0.1:8043; }
ssl_certificate /etc/ssl/nginx/fullchain.crt; ssl_certificate_key /etc/ssl/nginx/private.key; ssl_session_timeout 5m; ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3; ssl_prefer_server_ciphers on; }
|
使用 WHOIS
WHOIS 服务支持查询域名、IP 和 ASN 的 WHOIS 信息。
使用浏览器访问http://服务器公网IP:8043/example.com
即可查询example.com
的 WHOIS 信息。
使用浏览器访问http://服务器公网IP:8043/1.1.1.1
即可查询1.1.1.1
的 WHOIS 信息。
使用浏览器访问http://服务器公网IP:8043/AS205794
即可查询AS205794
的 WHOIS 信息。
附录
结语
QAQ 如果不想自建的话可以直接使用 whois.ddnsip.cn 提供的服务,如果有问题欢迎在代码仓库上提交issue,如果觉得本文对您有所帮助,欢迎去GitHub点个 star。