我怎样才能仅允许来自特定主机名的连接(IP 可能会由于动态 DNS 而改变)?

我怎样才能仅允许来自特定主机名的连接(IP 可能会由于动态 DNS 而改变)?

我想只允许来自某些主机名的连接,而不是特定的 IP(主机名由动态 DNS 定义)。

例如home.no-ip.org、mobile.no-ip.org等。

这可能是开箱即用的或者? 如果不是,那么解决方案可能是什么样的 - 某个脚本是否应该每隔 X 次对主机名执行一次 nslookup,然后删除并添加防火墙规则?

答案1

您可以使用 IP 表来实现这一点。

命令集将会是这样的

清除现有链

sudo iptables --flush
sudo iptables --delete-chain

允许环回

sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A OUTPUT -o lo -j ACCEPT

允许所有 ICMP

sudo iptables -A INPUT -p icmp --icmp-type any -j ACCEPT
sudo iptables -A OUTPUT -p icmp -j ACCEPT

允许已建立的连接

sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

home.no-ip.org从和 端口访问80

sudo iptables -A INPUT -p tcp --dport 80 -m string --string "Host: home.something.com" --algo bm -j ACCEPT

然后规则所有传入流量来自mobile.no-ip.org

sudo iptables -A INPUT -m state --state NEW -s mobile.no-ip.org -j ACCEPT

允许任何 SSH

sudo iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT

全部拒绝接受以上规则

sudo iptables -A INPUT -j DROP

默认策略

sudo iptables -P INPUT DROP
sudo iptables -P OUTPUT ACCEPT

节省

sudo service iptables save

我不确定这是否会起作用,但你可以尝试:)这只是规则的示例,可以像模板一样使用它们。

相关内容