我的规则有什么问题?我在我的服务器上安装了鱿鱼,我只想通过鱿鱼可以访问一些特定的域,但 iptables 完全阻止了我
我发现了这一点:iptables 规则只允许 HTTP 流量到一个域,我尝试使用我的规则应用和调整它,但我没有成功。
这是我的规则:
iptables -F
iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP
iptables -I INPUT 1 -i lo -j ACCEPT
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 5801 -j ACCEPT
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 5901 -j ACCEPT
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 6001 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 777 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 321 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 587 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 2222 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 25 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 465 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 110 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 995 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 143 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 993 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 953 -j ACCEPT
iptables -A OUTPUT -p tcp -d domain1.com --dport 3128 -j ACCEPT
iptables -A OUTPUT -p tcp -d domain2.com --dport 3128 -j ACCEPT
iptables -A OUTPUT -p tcp -d sub1.domain2.com --dport 3128 -j ACCEPT
iptables -A OUTPUT -p tcp -d sub2.domain2.com --dport 3128 -j ACCEPT
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables-save > /etc/sysconfig/iptables
service iptables restart
Run Code Online (Sandbox Code Playgroud)
iptables
不是那样工作的。它是一个第 3 层子系统(在某种程度上也是第 2 层)并且不以任何有意义的方式了解诸如域名之类的事情。您可以阻止对 IP 地址的访问,如果碰巧主机名domain[12].com
和sub[12].domain2.com
解析为本身不为其他域托管服务的 IP 地址,您可以通过 IP 地址阻止它们。
如果要阻止 squid 访问某些 URL,则需要在 squid 配置中执行此操作。我不是squid
专家,但看起来你可以用这样的东西来做到这一点:
acl aclname dstdomain "/etc/squid/allow/safe-sites" # file must exist
http_access allow aclname
http_access deny all
Run Code Online (Sandbox Code Playgroud)
用/etc/squid/allow/safe-sites
含例如
domain1.com
domain2.com
sub1.domain2.com
sub2.domain2.com
Run Code Online (Sandbox Code Playgroud)
(感谢这个博客提供了一些婴儿床笔记)。