systemd-resolved
在我的 DNS iptables 规则之前
DNS_SERVER="8.8.8.8 8.8.4.4"
echo "Set default INPUT policy to 'DROP'"
$IPT -P INPUT DROP
for ip in $DNS_SERVER
do
echo "Allowing DNS lookups (tcp, udp port 53) to server '$ip'"
$IPT -A OUTPUT -p udp -d $ip --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
$IPT -A INPUT -p udp -s $ip --sport 53 -m state --state ESTABLISHED -j ACCEPT
$IPT -A OUTPUT -p tcp -d $ip --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT
$IPT -A INPUT -p tcp -s $ip --sport 53 -m state --state ESTABLISHED -j ACCEPT
done
这允许在后续规则中进行 DNS 解析,例如这些规则可以到达 github
$IPT -A OUTPUT -p tcp -d "github.com" --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
$IPT -A INPUT -p tcp -s "github.com" --sport 443 -m state --state ESTABLISHED -j ACCEPT
但systemd-resolved
/etc/resolv.conf
现在有这个存根指向127.0.0.53
并且 iptables 脚本挂起,因为它无法再解析主机名。
我尝试127.0.0.53
在这些规则中用作 DNS 名称服务器
我尝试允许 DNS 往返于任何地方:
iptables -A INPUT -p udp --sport 53 -j ACCEPT
iptables -A INPUT -p udp --dport 53 -j ACCEPT
iptables -A OUTPUT -p udp --sport 53 -j ACCEPT
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
目前我的解决方案是apt remove systemd-resolved
systemd-resolved
安装后IPTables脚本如何进行名称解析?
答案1
惊慌失措,我打错了——这些规则很管用
iptables -A INPUT -p udp --sport 53 -j ACCEPT
iptables -A INPUT -p udp --dport 53 -j ACCEPT
iptables -A OUTPUT -p udp --sport 53 -j ACCEPT
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
我将尝试在环回上允许端口 53 以加强安全性。这是否能更好地防范随机机器人 IP DDOS?欢迎提供其他答案。
这些就是我现在拥有的......
iptables -A INPUT -p udp --sport 53 -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -p udp --dport 53 -m state --state NEW,ESTABLISHED -j ACCEPT