mosdns/deploy-mikrotik-amazon.md
dengxiongjian cd761e8145
Some checks are pending
Test mosdns / build (push) Waiting to run
新增Mikrotik API 插入解析ip
2025-07-31 11:28:55 +08:00

5.2 KiB
Raw Blame History

MosDNS + MikroTik Amazon 域名处理部署指南

功能说明

这个配置会在解析 Amazon 相关域名时,自动将解析到的 IP 地址添加到 MikroTik 路由器的 address list 中,用于防火墙规则控制。

部署步骤

1. 上传文件到 Debian 12 服务器

# 上传编译好的 mosdns 可执行文件
scp mosdns-linux-amd64 user@your-server:/usr/local/bin/mosdns

# 上传配置文件
scp config.yaml user@your-server:/usr/local/mosdns/
scp dns.yaml user@your-server:/usr/local/mosdns/

# 设置执行权限
ssh user@your-server "chmod +x /usr/local/bin/mosdns"

2. 创建必要的目录和文件

# 创建配置目录
sudo mkdir -p /usr/local/mosdns/config

# 下载 Amazon 域名列表
sudo wget -O /usr/local/mosdns/config/geosite_amazon.txt https://raw.githubusercontent.com/v2fly/domain-list-community/master/data/amazon
sudo wget -O /usr/local/mosdns/config/geosite_amazon-ads.txt https://raw.githubusercontent.com/v2fly/domain-list-community/master/data/amazon-ads
sudo wget -O /usr/local/mosdns/config/geosite_amazontrust.txt https://raw.githubusercontent.com/v2fly/domain-list-community/master/data/amazontrust
sudo wget -O /usr/local/mosdns/config/amazon.txt https://raw.githubusercontent.com/v2fly/domain-list-community/master/data/amazon

# 下载其他必要的域名和 IP 文件
sudo wget -O /usr/local/mosdns/config/geosite_tiktok.txt https://raw.githubusercontent.com/v2fly/domain-list-community/master/data/tiktok
sudo wget -O /usr/local/mosdns/config/gfwlist.out.txt https://raw.githubusercontent.com/gfwlist/gfwlist/master/gfwlist.txt
sudo wget -O /usr/local/mosdns/config/domains.txt https://raw.githubusercontent.com/v2fly/domain-list-community/master/data/category-games
sudo wget -O /usr/local/mosdns/config/cn.txt https://raw.githubusercontent.com/Loyalsoldier/v2ray-rules-dat/release/geoip.dat

3. 在 MikroTik 中创建 address list

# 通过 SSH 连接到 MikroTik 路由器
ssh admin@192.168.1.1

# 创建 IPv4 和 IPv6 address list
/ip firewall address-list add list=amazon_ips
/ip firewall address-list add list=amazon_ips6

# 创建防火墙规则(可选)
/ip firewall filter add chain=forward src-address-list=amazon_ips action=drop comment="Block Amazon IPs"
/ip firewall filter add chain=forward src-address-list=amazon_ips6 action=drop comment="Block Amazon IPv6 IPs"

4. 修改配置文件中的 MikroTik 连接信息

编辑 /usr/local/mosdns/dns.yaml 文件,修改 mikrotik_amazon 插件的配置:

# 修改为你的 MikroTik 实际信息
args: "192.168.1.1:8728:admin:your-password:false:10:amazon_ips:amazon_ips6:24:32:amazon_domain:86400"

参数说明:

  • 192.168.1.1: MikroTik 路由器 IP
  • 8728: API 端口
  • admin: 用户名
  • your-password: 密码
  • false: 不使用 TLS
  • 10: 连接超时时间
  • amazon_ips: IPv4 address list 名称
  • amazon_ips6: IPv6 address list 名称
  • 24: IPv4 掩码
  • 32: IPv6 掩码
  • amazon_domain: 注释
  • 86400: 地址超时时间24小时

5. 创建 systemd 服务

sudo tee /etc/systemd/system/mosdns.service > /dev/null <<EOF
[Unit]
Description=MosDNS DNS Server
After=network.target

[Service]
Type=simple
User=root
ExecStart=/usr/local/bin/mosdns -c /usr/local/mosdns/config.yaml
Restart=always
RestartSec=3

[Install]
WantedBy=multi-user.target
EOF

# 重新加载 systemd 配置
sudo systemctl daemon-reload

# 启用并启动服务
sudo systemctl enable mosdns
sudo systemctl start mosdns

# 检查服务状态
sudo systemctl status mosdns

6. 配置 DNS 转发

修改 /etc/systemd/resolved.conf

[Resolve]
DNS=127.0.0.1
#FallbackDNS=8.8.8.8 8.8.4.4
#Domains=
#DNSSEC=no
#DNSOverTLS=no
#MulticastDNS=yes
#LLMNR=yes
#Cache=yes
#DNSStubListener=no

重启 systemd-resolved

sudo systemctl restart systemd-resolved

7. 测试配置

# 测试 Amazon 域名解析
nslookup amazon.com 127.0.0.1
nslookup aws.amazon.com 127.0.0.1

# 检查 MikroTik address list 是否更新
ssh admin@192.168.1.1 "/ip firewall address-list print where list=amazon_ips"

# 查看 mosdns 日志
sudo journalctl -u mosdns -f

配置说明

工作流程

  1. 域名匹配:当查询 Amazon 相关域名时,匹配 amazon_domains 集合
  2. DNS 解析:使用国外 DNS 服务器解析域名
  3. IP 提取:从 DNS 响应中提取 A 和 AAAA 记录
  4. 地址添加:通过 MikroTik API 将 IP 添加到 address list
  5. 超时管理IP 地址会在 24 小时后自动过期

监控和调试

# 查看实时日志
sudo journalctl -u mosdns -f

# 查看服务状态
sudo systemctl status mosdns

# 测试 MikroTik 连接
curl -k https://192.168.1.1:8729/api/rest/ip/firewall/address-list

故障排除

  1. 连接失败:检查 MikroTik IP、端口和认证信息
  2. 权限不足:确保 MikroTik 用户具有管理 address list 的权限
  3. 域名文件缺失:确保所有域名列表文件都已下载
  4. DNS 解析失败:检查上游 DNS 服务器配置

安全注意事项

  1. 不要在配置文件中使用明文密码,考虑使用环境变量
  2. 限制对 MikroTik API 端口的访问
  3. 定期更新域名列表文件
  4. 监控 address list 大小,避免过多条目影响性能