使用 Ubuntu 网关限制某些 LAN 客户端只能访问少数网站

使用 Ubuntu 网关限制某些 LAN 客户端只能访问少数网站

我应该如何限制 LAN 上大多数系统的 Internet 访问权,使其仅能访问少数网站,并阻止所有其他网站?我还想绕过某些系统的这些限制。所有系统都有静态 IP 地址。

我尝试过在独立系统中使用 Dansguardian+squid,但由于用户可以在自己的 Web 浏览器中更改代理,因此无法实施该解决方案。在浏览时,我发现可以通过在路由器和 LAN 之间使用 Ubuntu 网关系统来实现。

为网关系统配备两张网卡:一张用于路由器,另一张用于本地局域网。

我该怎么做?

请提供足够的详细信息。

答案1

最基本的事情就是让 squid 服务器成为默认网关而不是你的互联网路由器

只需为 Ubuntu squid 添加一个额外的网卡,即可将其增加到 2 个网卡:1 个接入 LAN,1 个接入网络路由器。LAN 端现在获取默认网关的 IP 地址(可能是 192.168.1.1),WAN 端从 ISP 获取自动 IP 地址。

这样,您的所有网络流量在发出之前都会经过 squid 服务器,它可以阻止任何内容。只需将其视为带有防火墙的普通 Ubuntu 计算机,我建议不要使用黑名单,而只使用白名单。

唯一的区别是你可能需要为您的网络内部添加一些手动路由,但默认路由为 squid,它会丢弃白名单中没有的所有内容...

就这么简单!

答案2

我已将 Ubuntu 系统配置为 LAN 和 ADSL 路由器之间的网关。两个网卡均eth0通过 IP 地址连接到 ADSL 路由器192.168.0.240

(WAN)接口eth0配置了以下输入:

IP - 192.168.0.239
Gateway - 192.168.0.240
DNS - 192.168.0.225

eth1(LAN) 接口配置有以下输入:

IP - 192.168.0.238
Gateway - 192.168.0.239
DNS - 192.168.0.225 

请注意,的 IP 地址eth0是作为另一个接口的网关给出的eth1。IP192.168.0.225是我们的内部本地 DNS 服务器,配置为缓存 DNS 服务器。

编辑/etc/sysctl.conf文件以取消注释该行net.ipv4.ip_forward=1

下载网页管理工具使用以下命令进行打包:

wget http://prdownloads.sourceforge.net/webadmin/webmin_1.720_all.deb

安装软件包:

dpkg -i webmin_1.720_all.deb

https://server-ip:10000使用您的网络浏览器登录 Webmin 。

在此处输入图片描述

执行 NATeth0并点击Setup firewall

您可以编写一个 shell 脚本来为 LAN 中的系统创建定制的访问。

vim /root/iptables.sh

#!/bin/bash
iptables -F
IP="3 6 7 13 14 17"
for i in `echo $IP`
do
  # FTP server
  iptables -A FORWARD -s 192.168.0.$i -d 85.46.5.230 -j ACCEPT
  # Mail server
  iptables -A FORWARD -s 192.168.0.$i -d 93.34.3.220 -j ACCEPT
  iptables -A FORWARD -s 192.168.0.$i -j DROP
done
exit 0

编辑/etc/rc.local以在启动时运行脚本

 /bin/bash /root/iptables.sh 

或者,您可以通过以下方式复制脚本/etc/init.d/并将其添加到启动脚本中:

sudo update-rc.d keys defaults

iptables -L将列出当前的 iptables 规则。


资料来源:

相关内容