systemd 解析的 iptables 规则

systemd 解析的 iptables 规则

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

以及来自https://serverfault.com/questions/948050/ubuntu-understanding-iptables-rules-to-allow-domain-name-lookup

我将尝试在环回上允许端口 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

相关内容