![如何将出站连接限制为单个域名?](https://linux22.com/image/175714/%E5%A6%82%E4%BD%95%E5%B0%86%E5%87%BA%E7%AB%99%E8%BF%9E%E6%8E%A5%E9%99%90%E5%88%B6%E4%B8%BA%E5%8D%95%E4%B8%AA%E5%9F%9F%E5%90%8D%EF%BC%9F.png)
我想将我的设备的出站访问限制为单个域名,例如 abc.com。我怎样才能做到这一点?
设备需要将域名解析为 IP 地址,该地址可能会根据服务器负载而变化。我同意允许 DNS 访问+单个域。
看起来 iptables 可以接受主机名,但如果主机名的 IP 地址发生变化,这不会是动态的。我什至不知道 nftables 中是否有主机名支持。
我想知道我有什么选择。
答案1
作为起点:
/sbin/iptables -A OUTPUT -p tcp -m tcp --dport 53 -j ACCEPT
/sbin/iptables -A OUTPUT -p udp -m udp --dport 53 -j ACCEPT
然后添加此 crontab 作业(如果需要,可以每分钟运行一次):
#! /bin/bash
dig +short abc.com | while read address; do
if [ -z "`/sbin/iptables-save | grep "$address"`" ]; then
/sbin/iptables -A OUTPUT -d "$address" -p tcp -m tcp --dport 80 -j ACCEPT
/sbin/iptables -A OUTPUT -d "$address" -p tcp -m tcp --dport 443 -j ACCEPT
fi
done
这完全未经测试,但应该可行。