跳到正文
发现
命令行工具开发者工具

sslip.io:内嵌 IP 的 DNS 服务器

用 Go 编写的 DNS 服务器,把内嵌 IP 的域名(如 127-0-0-1.sslip.io)解析成对应地址。

admin
发布于 2026-11-01
浏览
8
访问
0
下载
0
版本
v6.1.1
平台
Linux、macOS
该作品还没有经过官方审核。访问演示、下载或复制命令前,请自行确认来源可信。

详细介绍

项目简介

sslip.io 是一个用 Go 编写的 DNS 服务器,它能把「把 IP 地址写进域名」的查询解析为对应 IP。例如 127-0-0-1.sslip.io 会解析到 127.0.0.1。它的灵感来自已经停止服务的 xip.io。

README 面向开发者,讲如何自己搭建;如果只想直接使用现成服务,作者建议参考 nip.io 网站。

主要功能

  • 解析内嵌 IP 地址的域名,返回对应的 A / AAAA 记录。
  • 同时监听 UDP 与 TCP;对所有域名返回同一个 SOA 记录;不提供 SRV 记录。
  • 通过命令行参数自定义记录:
    • -ns 设置 NS 记录,格式为 domain=nameserver;域名为 . 时对每次查询都返回该 NS。
    • -a / -aaaa 设置 A / AAAA 记录,如 -a=ns1.example.com=10.8.8.8。
    • -soa 设置 SOA 记录,格式为 mname,rname,serial,refresh,retry,expire,minimum。
    • -mx、-txt、-cname 分别设置 MX、TXT、CNAME 记录。
  • -ptr-domain 指定反向解析(PTR)使用的域名,例如 dig -x 127.0.0.1 会得到 127-0-0-1.ip.example.com。
  • -public=false 只解析私有地址,避免有人用公网 IP 拼出你的子域名去申请证书做钓鱼。
  • -port 更换监听端口(默认 53),便于非特权用户运行;-quiet 关闭逐条响应日志。
  • -blocklistURL 指定屏蔽列表地址,默认从仓库的 etc/blocklist.txt 下载;下载失败只记录日志,不影响服务。
  • -dnstap 开启 dnstap 日志,参数可以是 Unix socket 路径或 TCP 地址。

安装与使用

从源码运行(绑定 53 端口需要 sudo):

git clone https://github.com/cunnie/sslip.io.git
cd sslip.io
go mod tidy
sudo go run .

另开一个终端验证:

dig @localhost 192.168.0.1.sslip.io +short

应返回 192.168.0.1。

用 Docker 运行官方镜像 cunnie/sslip.io-dns-server,把端口映射到 5553 以便免特权运行:

docker run -it --rm -p 5553:53/udp cunnie/sslip.io-dns-server

该镜像支持 x86_64 与 ARM64(AWS Graviton、Apple M1–M6)。

自建私有部署时,可以用 -ns、-a、-aaaa、-soa、-ptr-domain 组合出自己的命名空间,例如把某个子域委托到自建的两台 nameserver 上。

注意事项

  • 这个服务器不是通用递归解析器,查不了 google.com。不要把它配置成客户端的 DNS 服务器。
  • 绑定 53 端口需要特权,非 root 运行请用 -port 换成高位端口。
  • 如果需要防止公网 IP 被用于钓鱼,记得设置 -public=false。

本作品整理自 GitHub 开源项目 cunnie/sslip.io,原作者 @cunnie,许可证 Apache-2.0。中文介绍由 AI 根据项目 README 整理,以原仓库为准。

更新记录

  1. v6.1.1当前版本

    新增并改进 dnstap 子系统:写不进去时丢弃帧而不阻塞 DNS,断线后每分钟重连,多帧打包减少开销,只记录响应段;修复 `-cname` 下查询 TXT 记录时错误返回空 TXT 的问题。

评论