利用腾讯云轻量应用服务器搭建 WHOIS 查询接口

WHOIS 是一个用于查询域名/IP/ASN 信息的协议,可以查询资源的注册信息等,本文将介绍如何利用轻量应用服务器搭建 WHOIS 查询接口。

部署轻量应用服务器

登录轻量应用服务器

  1. 打开轻量应用服务器控制台找到您的实例,并点击登录
  2. 点击登录登录到服务器。
  3. 输入sudo su切换到 root 用户,然后输入cd /root进入 root 用户的家目录。

安装 WHOIS 工具

安装依赖

  1. 更新软件包。
bash 复制代码
apt update && apt upgrade -y
  1. 在终端输入以下命令安装redis-server
bash 复制代码
apt install redis-server -y

安装 WHOIS

  1. 打开Releases页面,找到最新的版本,选择系统对应的版本复制下载链接,轻量应用服务器一般为amd64架构。
  2. 在终端输入以下命令下载并解压。
bash 复制代码
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. 修改配置文件。
bash 复制代码
vim config.json
json 复制代码
{
    "redis": {
        "addr": "localhost:6379",
        "password": "",
        "db": 0
    },
    "cacheExpiration": 3600,
    "port": 8043,
    "rateLimit": 50
}
  • redis:Redis 服务器的地址、密码和数据库。
  • cacheExpiration:缓存过期时间,单位秒。
  • port:WHOIS 服务端口。
  • rateLimit:限制每秒请求次数,请注意该限制针对的是程序向注册局发起查询的频率,而不是用户向 WHOIS 服务发起查询的频率,如需限制用户查询频率,请在 Nginx 或其他代理中配置。

启动 WHOIS

  1. 在终端输入以下命令启动 WHOIS。
bash 复制代码
./whois
  1. 程序启动后会显示Server is listening on port 8043...
  2. 使用浏览器访问http://服务器公网IP:8043,如果显示No WHOIS or RDAP server known for TLD: 则说明 WHOIS 服务已启动成功。

访问前请先前往腾讯云轻量应用服务器控制台,点击对应服务器,在防火墙中开放 8043 端口。

  1. 终端断开连接后 WHOIS 服务会停止,可以使用screennohup命令使其在后台运行,或参照下方教程设置进程守护

进程守护

bash 复制代码
vim /etc/systemd/system/httpwhois.service
bash 复制代码
[Unit]
[Unit]
Description=httpwhois
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替换为实际路径。

设置完成后输入以下命令运行:

bash 复制代码
systemctl start httpwhois
systemctl enable httpwhois

Nginx 反代

如果您需要使用域名访问 WHOIS 服务,可以使用 Nginx 反代,安装Nginx的步骤本文不再赘述,您可以参考Nginx 编译开启 Quic 或 HTTP/3,下面是示例配置文件:

bash 复制代码
server {
       listen 443 ssl;
       listen [::]:443 ssl;

       # 用于支持Quic或HTTP/3
       listen 443 quic;
       listen [::]:443 quic;

       # 开启HTTP/2
       http2 on;

       # 设置域名
       server_name whois.ddnsip.cn;

       # Quic或HTTP/3响应头
       add_header Alt-Svc 'h3=":443"; ma=86400';

       # HSTS
       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";

       # CORS
       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配置
       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。

相关推荐
卷心菜不卷Iris3 天前
第1章大型互联网公司的基础架构——1.3 HTTP-DNS
网络·网络协议·http·dns·互联网大厂·http-dns·基础架构
聚名网11 天前
如何修改DNS解析?
dns·修改dns解析
火山引擎边缘云1 个月前
揭秘字节跳动内部流量调度与容灾实践【上】
后端·云计算·dns
thinking-fish1 个月前
DNS介绍(5):DNS 劫持及解决方案
网络·网络安全·dns·dns劫持
hong_zc1 个月前
网络原理(四)—— 网络层、数据链路层 与 DNS
网络·dns·数据链路层·网络层
Algorithm-0071 个月前
软件测试预备知识⑤—搭建 DNS 服务器
运维·服务器·dns
放飞自我的Coder1 个月前
【DNS 阿里云,域名解析,解析到IP的指定端口】
网络·阿里云·dns
探索云原生1 个月前
基于 Admission Webhook 实现 Pod DNSConfig 自动注入
云原生·kubernetes·go·dns
探索云原生2 个月前
使用 NodeLocalDNS 提升集群 DNS 性能和可靠性
linux·docker·云原生·kubernetes·go·dns
冷心笑看丽美人2 个月前
探秘 DNS 服务器:揭开域名解析的神秘面纱
linux·运维·服务器·dns