如何阻止、拒绝或重定向 IP 地址或网站域名

如何阻止、拒绝或重定向 IP 地址或网站域名

几天前出现了这个问题:如何在不使用路由器或配置浏览器的情况下阻止、拒绝或重定向 IP 地址或域名到另一个 IP 或 Web 域。基本上只使用 Ubuntu 来执行此操作。

例如,用户使用计算机,他/她无法访问 Facebook 或 Twitter(可能永远被拒绝访问,或者仅在下午 2 点到晚上 8 点之间被拒绝访问)。如果用户尝试访问 Facebook 或 Twitter,它将被重定向到另一个位置或直接取消。

该程序在 GUI 中效果会更好,但如果没有终端也可以。

例如,我检查过 ufw 和 gufw,但它们只适用于程序和端口。没有关于域名的情况。这样可以更轻松地选择或取消选择域。

答案1

如果只有几个 ip / 域名,iptables 很有帮助。

使用 iptables,您可以根据用户、组和/或时间进行限制,但要做到这一点,您需要使用 OUTPUT 表。因此,要允许 root 和组“web”,请使用

# this allows root for things such as apt-get
sudo iptables -A OUTPUT -m owner --uid-owner root -j ACCEPT

# this allows users of the group web
# create a group, web, and add users to it to allow access
sudo iptables -A OUTPUT -m owner --gid-owner web -j ACCEPT

# These two rules allow access to port 80 and 443 over the lunch hour
sudo iptables -A OUTPUT -o eth0 -p tcp -m multiport --dports 80,443 -m time --timestart 12:00 --timestop 13:00 -j ACCEPT
sudo iptables -A OUTPUT -o eth0 -p tcp -m multiport --dports 80,443 -j DROP

但随着您的需求变得越来越复杂,使用代理会很有帮助。例如,您可以使用 privoxy(和其他)来拦截广告。Squid 添加了过滤和更复杂的规则(acl 或访问控制列表),但对于家庭用户来说可能有点过头了。

然后使用 iptables 使代理透明

# This allows root
sudo iptables -A OUTPUT -m owner --uid-owner root -j ACCEPT

# This allows privoxy, which serves as adblock
sudo iptables -A OUTPUT -p tcp --dport 80 -m owner --uid-owner privoxy -j ACCEPT

# this blocks direct access to ports 80 to all other users
sudo iptables -A OUTPUT -p tcp --dport 80 -j DROP

# This allows squid to access privoxy (I think squid runs as "proxy")
#sudo iptables -A OUTPUT -o lo -p tcp --dport 8118 -m owner --uid-owner proxy -j ACCEPT

# this rule blocks other users from direct access to privoxy
sudo iptables -A OUTPUT -o lo -p tcp --dport 8118 -j DROP

# Redirect all outgoing traffic on port 80 to squid listening on port 3128
sudo iptables -t nat -A OUTPUT -p tcp --dport 80 -m owner ! --uid-owner privoxy -j REDIRECT --to-port 3128

现在安装并配置 privoxy 和 squid

Ubuntu 服务器指南 squid

Ubuntu 维基百科 privoxy

这种方法的问题在于您随后需要安装 squidguard、配置 squid 等,这将是一篇很长的文章,更适合较大的 LAN。

答案2

我为您找到了一个更好的解决方案,moblock,它带有每天更新的黑名单和图形配置工具。

要安装它,请运行

sudo add-apt-repository ppa:jre-phoenix/ppa
sudo apt-get update
sudo apt-get install moblock blockcontrol mobloquer

然后运行 ​​Mobloquer

如需更多信息,请参阅Moblock 主页(sourceforge)

镜头 1

在此处输入图片描述

答案3

你可以使用以下方式阻止 IP 和域名IP表

传出示例:

iptables -A OUTPUT -p tcp -m string --string "xxx.com" --algo kmp -j DROP

然后使用 cron 任务,你可以在特定时间阻止你想要的所有域名,然后解除阻止

答案4

我已经发现引火者相当不错的用于管理 iptables 条目的 GUI 界面。

相关内容