openwrt 24.10的DNSMASQ与nftable联动。
openwrt 23.x开始,dnsmasq-full不在支持ipset合集了。改为支持nftset了。原来还有为nftables安装iptables才能够对IP地址进行转发。改为nftset后可以直接和nftables配合使用。
1.创建nftset。在创建nftset合集是可以使用inet、ip、ip6等对IP地址合集进行定义,我这里使用inet。
nft add table inet iplistall
nft add set inet iplistall ip4list { type ipv4_addr ;}
nft add set inet iplistall ip6list { type ipv6_addr ;}
2.创建nftables规则,根据规则将nftset合集中的IP地址按照规则进行转发。
nft add chain inet iplistall output { type filter hook output priority 0 ; policy accept ; }
nft add chain inet iplistall prerouting { type nat hook prerouting priority dstnat ; policy accept ; }
nft add rule inet iplistall prerouting ip daddr @ip4list udp dport 0-65535 counter redirect to :1080
nft add rule inet iplistall prerouting ip daddr @ip4list tcp dport 0-65535 counter redirect to :1080
3.在dnsmasq中对相应的域名配置使用nftset。
nftset=/docker.com/4#inet#iplistall#ip4list
nftset=/docker.com/6#inet#iplistall#ip6list
4.相关命令
a.查看所有tables。nft list tables
b.查看nftset 地址合集 。 nft list set inet iplistall ip4list
c.查看nft规则列表。 nft list ruleset
5.参考资源
a.https://nie11kun.github.io/archives/dnsmasq-nftset-nftables-1.html https://github.com/v2fly/domain-list-community/blob/master/data/netflix
b.chatgpt
c.doubao